【问题标题】:Access AWS S3 bucket from a container on a server从服务器上的容器访问 AWS S3 存储桶
【发布时间】:2023-04-06 12:30:01
【问题描述】:

如何在代码中没有我的 AWS 凭证的情况下从容器访问我的 S3 存储桶?

我的代码也自动部署,因此将其作为环境变量也不好(部署脚本在存储库中 - 凭据也应该在那里)。

我试图研究 IAM 角色,但无法解决对我的用例有帮助的东西。

【问题讨论】:

  • 否决票的任何原因?
  • @RichardKiefer 我也在寻找原因。但似乎人们只是对被否决的内容投了反对票,而没有仔细观察或费心解释他们的反对意见

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


【解决方案1】:

如果您直接在 EC2 实例上运行容器(不使用 ECS 服务),那么您需要创建一个 IAM role 并为其附加适当的策略(例如 AmazonS3FullAccess,如果您需要 S3 的所有权限,如果你只需要阅读S3的内容,然后你可以添加AmazonS3ReadOnlyAccess策略)。创建此角色后,您可以将其附加到运行容器的 EC2 实例。

如果您使用 ECS 服务,那么您可以将此角色附加到您定义容器的任务(仍然可以将其附加到底层 EC2 容器实例 - 但仅适用于 EC2 启动类型,不能Fargate - 让容器承担该角色,但最好尽可能细化 - 各个任务有自己的角色)。

您不应该将 AWS 凭证添加到您的代码中或将它们存储在 EC2 实例/容器中,这就是您拥有角色的原因。

【讨论】:

  • 我收到 botocore.exceptions.NoCredentialsError: Unable to locate credentials,当尝试从 aws 实例中的 docker 访问我的 s3 存储桶时
  • 但是如何向 S3 验证容器?如果是裸 EC2 实例,您是否通过环境变量将 aws 凭证传递到容器中? ECS 服务是否会自行将这些凭据注入到容器中?
猜你喜欢
  • 2017-09-13
  • 2016-03-07
  • 2019-09-21
  • 1970-01-01
  • 2020-12-16
  • 2020-06-15
  • 2019-10-23
  • 2016-11-16
  • 1970-01-01
相关资源
最近更新 更多