从服务器上的容器访问AWS S3存储桶

7
如何在没有将AWS凭证放入代码中的情况下从容器访问S3存储桶?
我的代码还会自动部署,因此将其作为环境变量也不好(部署脚本在代码库中 - 凭证也不应该在那里)。
我尝试研究IAM角色,但无法理解如何使用它来解决我的问题。

有什么原因导致了这些踩票吗? - Richard Kiefer
@RichardKiefer我也在寻找原因。但似乎人们只是盲目跟风给其他被踩的回答投下负评,而没有仔细看或者解释他们为何这样做。 - NotSoShabby
1个回答

6
如果您直接在EC2实例上运行容器(而不使用ECS服务),则需要创建一个IAM角色并将适当的策略附加到它上面(例如AmazonS3FullAccess,如果您需要对S3拥有所有权利,如果您只需要读取S3的内容,则可以添加AmazonS3ReadOnlyAccess策略)。创建此角色后,您可以将其附加到运行容器的EC2实例上。
如果您正在使用ECS服务,则可以将此角色附加到定义容器的任务中(仍然可以将其附加到基础EC2容器实例 - 但仅适用于EC2启动类型,而不是Fargate - 以使容器承担该角色,但最好尽可能细粒度化 - 各个任务具有自己的角色)。
您不应将AWS凭据添加到代码中或将其存储在EC2实例/容器中,这就是为什么需要角色。

2
当我尝试从AWS实例内部的Docker访问我的S3存储桶时,我会收到botocore.exceptions.NoCredentialsError:无法找到凭据的错误提示。 - NotSoShabby
7
如何对容器进行与 S3 的身份验证?在裸机 EC2 实例的情况下,您是否通过环境变量将 aws 凭据传递到容器中?ECS 服务是否会自己将这些凭据注入容器中? - Richard Kiefer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接