如何在没有代码中包含AWS凭证的情况下从容器访问S3存储桶?
我的代码也会自动部署,因此将其作为Env变量也是不好的(部署脚本位于存储库中-凭据也不应位于其中)。
我试图研究IAM的角色,但无法将注意力放在有助于我的用例的事情上。
答案 0 :(得分:2)
如果直接在EC2实例上运行容器(不使用ECS服务),则需要创建IAM role
并为其附加适当的策略(例如AmazonS3FullAccess
)(如果需要所有权限)对于S3,如果只需要阅读S3的内容,则可以添加AmazonS3ReadOnlyAccess
策略)。创建此角色后,可以将其附加到运行容器的EC2实例上。
如果您正在使用ECS服务,则可以将此角色附加到定义容器的任务中(仍然可以将其附加到基础EC2容器实例上-但仅在EC2启动类型的情况下,而不是Fargate-让容器担当那个角色,但最好是尽可能地细化-具有自己角色的单个任务。
您绝不应将AWS凭证添加到代码中或将其存储在EC2实例/容器中,这就是您拥有角色的原因。