在EC2实例上运行代码时,用于访问AWS资源的SDK将与169.254.169.254上的本地链接的Web服务器自动对话,并获取与其他AWS服务对话所需的实例AWS凭证(access_key,secret)。
另外还有其他选项,例如在ENV变量中设置凭据或将其作为命令行参数传递...
这里的最佳做法是什么?我真的更喜欢让容器访问169.254.169.254(通过路由请求),甚至更好地运行一个代理容器,该容器模仿真实服务器在169.254.169.254的行为。
那里已经有解决方案了吗?
最佳答案
EC2元数据服务通常可从docker内部使用(除非您使用更自定义的网络设置-有关类似问题,请参见this answer)。
如果您的docker网络设置阻止了它的访问,则可以在ENV
中使用Dockerfile
指令,或者在运行期间直接传递它们,但请记住,IAM角色的凭据会由AWS自动轮换。
关于amazon-web-services - 将AWS凭证(IAM角色凭证)传递给在Docker容器中运行的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25911000/