如何在没有将AWS凭证放入代码中的情况下从容器访问S3存储桶?我的代码还会自动部署,因此将其作为环境变量也不好(部署脚本在代码库中 - 凭证也不应该在那里)。我尝试研究IAM角色,但无法理解如何使用它来解决我的问题。
如果您直接在EC2实例上运行容器(而不使用ECS服务),则需要创建一个IAM角色并将适当的策略附加到它上面(例如AmazonS3FullAccess,如果您需要对S3拥有所有权利,如果您只需要读取S3的内容,则可以添加AmazonS3ReadOnlyAccess策略)。创建此角色后,您可以将其附加到运行容器的EC2实例上。如果您正在使用ECS服务,则可以将此角色附加到定义容器的任务中(仍然可以将其附加到基础EC2容器实例 - 但仅适用于EC2启动类型,而不是Fargate - 以使容器承担该角色,但最好尽可能细粒度化 - 各个任务具有自己的角色)。您不应将AWS凭据添加到代码中或将其存储在EC2实例/容器中,这就是为什么需要角色。