将AWS凭据(IAM角色凭证)传递给在docker容器中运行的代码

时间:2014-09-18 11:06:12

标签: amazon-web-services docker amazon-iam

在EC2实例上运行代码时,用于访问AWS资源的SDK会自动与169.254.169.254上的本地链接的Web服务器进行通信,并获取与其他人交谈所需的AWS凭据(access_key,secret) AWS服务。

还有其他选项,例如在ENV变量中设置凭据或将它们作为命令行参数传递...

这里的最佳做法是什么?我真的更喜欢让容器访问169.254.169.254(通过路由请求),或者甚至更好地运行模拟真实服务器行为的代理容器169.254.169.254。

那里已经有解决方案吗?

2 个答案:

答案 0 :(得分:8)

EC2元数据服务通常可以在docker中使用(除非您使用更自定义的网络设置 - 请参阅类似问题的this answer)。

如果您的docker网络设置阻止访问它,您可以在ENV中使用Dockerfile指令或在运行期间直接传递它们,但请记住,IAM角色的凭据会自动轮换通过AWS。

答案 1 :(得分:0)

Amazon确实有一些机制允许容器通过SDK访问IAM角色,并允许通过ECS代理容器或主机路由/转发请求。复制和粘贴的方式太多了,但是建议使用\tiny \Tiny \small \normalsize \large \Large \LARGE \huge \Huge 是最不推荐的选择,因为如果没有其他过滤器,则您的容器可以完全访问其主机有权进行的任何操作。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html