如何在代码中没有 AWS 凭证的情况下从容器访问我的 S3 存储桶?
我的代码也是自动部署的,所以把它作为一个 Env 变量也不好(部署脚本在存储库中 - 凭据也不应该在那里)。
我试图研究 IAM 角色,但无法理解对我的使用案例有帮助的东西。
如果您直接在 EC2 实例上运行容器(不使用 ECS 服务),则需要创建一个IAM role
并向其附加适当的策略(例如 AmazonS3FullAccess
,如果您需要 S3 的所有权限,如果您只需要读取 S3 的内容,则可以添加AmazonS3ReadOnlyAccess
策略)。创建此角色后,您可以将其附加到运行容器的 EC2 实例。
如果您使用的是 ECS 服务,则可以将此角色附加到定义容器的任务(仍然可以将其附加到底层 EC2 容器实例 - 但仅在 EC2 启动类型而不是 Fargate 的情况下 - 以便容器承担该角色,但最好尽可能精细 - 各个任务具有自己的角色)。
切勿将 AWS 凭证添加到代码中或将其存储在 EC2 实例/容器中,这就是您拥有角色的原因。