从Docker容器访问AWS服务的最佳方法

问题描述

限制:

  • 我不想将aws配置文件包含在Docker容器中
  • 我希望它在产品环境和开发环境中都能工作。

我尝试过的事情:

  • 我曾经使用过IAM角色,但这仅适用于产品而不适用于开发环境。
  • 我使用了aws配置文件,但它可在主机上使用,而不是在Docker容器中。而且我不想将其复制到容器中。

是否有关于最佳做法的建议?

更新: 为了澄清这个问题: 我的问题是找到使用docker在开发环境和生产环境中提供AWS凭证的通用方法。通过“我使用IAM角色,但这仅适用于产品”,我的意思是我在cloudformation任务定义上使用taskRoleArn,但这仅影响产品而不影响开发环境。因此,我需要在开发环境中以另一种方式(例如aws config)设置凭据。

解决方法

与AWS服务进行交互的最佳实践是始终使用IAM角色,尤其是在使用基于生产的环境的情况下。

如果要模拟在本地情况下(例如开发中)的工作方式,请结合使用environment variables和IAM用户凭据。

使用官方的SDK / CLI将查找正式命名的环境变量,因此无需修改您的代码即可在每种环境中以不同的方式工作。

如上所述,我强烈建议在您的生产环境中使用IAM角色。

,

IAM角色是授予容器所需权限的最简单方法。它可以在任何环境下工作。 当然,这是最佳做法。

,

对于有兴趣的人,我可以按照以下有关测试IAM角色的说明来解决我的问题: https://aws.amazon.com/blogs/compute/a-guide-to-locally-testing-containers-with-amazon-ecs-local-endpoints-and-docker-compose/ 请参阅与“ ECS本地容器端点”相关的部分

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...