gpt4 book ai didi

amazon-web-services - 如何在 EC2 上的 docker 内使用 AWS 凭证运行命令?

转载 作者:行者123 更新时间:2023-12-02 19:57:40 26 4
gpt4 key购买 nike

我有 EC2 可以通过配置文件定期访问 S3:

aws s3 ls --profile myprofile s3://

在同一个 EC2 上,我创建了 docker 容器并安装了 aws cli 工具。
创建相同 ~./aws/config文件内容与主机 ec2 上的内容相同,但来自 docker 容器的此命令现在给出错误:
aws s3 ls --profile myprofile s3://
Error when retrieving credentials from Ec2InstanceMetadata: No credentials found in credential_source referenced in profile myprofile

如何启用对容器内 S3 的访问?

最佳答案

有几个选项可以做到这一点,并且根据您对可能的安全风险的风险偏好将有助于确定要走的路。

您可以走创建 credentials 的路线使用静态凭据在外部归档并将其复制到 ~/.aws/在构建期间。您甚至可以在文件中使用变量并通过 ENV 传递它们或 ARG .

如果您使用 docker-compose然后 .env文件开始发挥作用,与上面的想法几乎相同。

您可以调用 EC2 的元数据服务来检索临时凭证,我没有太多 cURL 的经验,但这里有一些信息:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-retrieval

你也可以cat > ~/.aws输出文件,虽然那会很痛苦,并在 CLI 级别或使用 .env、ENV 或 ARG 做一些 ENV 变量的变体

如果您使用 ECS 在 EC2 之上运行容器,那么您可以将变量作为 valueFrom 传递在任务定义/容器定义中从 Systems Manager Parameter Store(明文)中获取它们,或者您可以使用 KMS key 加密您的参数或使用 Secrets Manager 中的明文 secret 并将它们注入(inject)您的变量。

有了以上,你可以COPY变量化 credentials文件,并传递 ENV变量为 $(keys)在您的 Dockerfile 中,然后从 Secrets Manager 或 Parameter Store 中注入(inject)它们以提供一些额外的安全性。

关于amazon-web-services - 如何在 EC2 上的 docker 内使用 AWS 凭证运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com