在EC2实例上运行代码时,用于访问AWS资源的SDK会自动与169.254.169.254上的本地链接的Web服务器进行通信,并获取与其他人交谈所需的AWS凭据(access_key,secret) AWS服务。
还有其他选项,例如在ENV变量中设置凭据或将它们作为命令行参数传递...
这里的最佳做法是什么?我真的更喜欢让容器访问169.254.169.254(通过路由请求),或者甚至更好地运行模拟真实服务器行为的代理容器169.254.169.254。
那里已经有解决方案吗?
答案 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