从 docker 容器访问 AWS 服务的最佳方式
Best way to access AWS Services from docker container
限制:
- 我不想在 docker 容器中包含我的 aws 配置文件
- 我希望它在生产环境和开发环境中都能工作。
我尝试过的事情:
- 我使用了 IAM 角色,但这只适用于产品而不适用于开发环境。
- 我使用了 aws 配置文件,但它适用于不在 docker 容器中的主机。而且我不想将它复制到容器中。
关于如何做到这一点的最佳做法有什么建议吗?
更新:
澄清问题:
我的问题是找到一种通用方法来使用 docker 在开发环境和生产环境中提供 aws 凭证。 “我使用了 IAM 角色,但这只适用于产品”我的意思是我在 cloudformation 任务定义上使用了 taskRoleArn,但这只会影响产品而不影响开发环境。所以我需要在开发环境中以另一种方式(如 aws config)设置凭据。
与 AWS 服务交互的最佳实践是尽可能使用 IAM 角色,尤其是在使用基于生产的环境时。
如果您想模拟它在 on-premise 情况下(例如在开发中)的工作方式,您可以结合使用 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 本地容器端点”相关的部分
限制:
- 我不想在 docker 容器中包含我的 aws 配置文件
- 我希望它在生产环境和开发环境中都能工作。
我尝试过的事情:
- 我使用了 IAM 角色,但这只适用于产品而不适用于开发环境。
- 我使用了 aws 配置文件,但它适用于不在 docker 容器中的主机。而且我不想将它复制到容器中。
关于如何做到这一点的最佳做法有什么建议吗?
更新: 澄清问题: 我的问题是找到一种通用方法来使用 docker 在开发环境和生产环境中提供 aws 凭证。 “我使用了 IAM 角色,但这只适用于产品”我的意思是我在 cloudformation 任务定义上使用了 taskRoleArn,但这只会影响产品而不影响开发环境。所以我需要在开发环境中以另一种方式(如 aws config)设置凭据。
与 AWS 服务交互的最佳实践是尽可能使用 IAM 角色,尤其是在使用基于生产的环境时。
如果您想模拟它在 on-premise 情况下(例如在开发中)的工作方式,您可以结合使用 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 本地容器端点”相关的部分