如何从 docker 容器内的主机工作站获取 aws 凭据

Posted

技术标签:

【中文标题】如何从 docker 容器内的主机工作站获取 aws 凭据【英文标题】:how to get aws credentials from host workstation, inside docker container 【发布时间】:2021-05-24 14:30:34 【问题描述】:

我正在尝试将我的 AWS 凭证放入我的 Docker 容器中,以便在我的本地(用于开发)上使用。我找到了这篇文章 https://cameroneckelberry.co/words/getting-aws-credentials-into-a-docker-container-without-hardcoding-it,但我不知道如何“创建 AWS shell 脚本”或 -profile 是什么。我在我的系统上没有看到。是的,我确实安装了 AWS CLI,并将我的 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 放入我的 .env 文件中。我还按要求将我的凭据放入$home/.aws/credentials,但看不到这对环境变量有何影响。来自文章:

运行$aws help我们看到有一个-profile参数。杠杆作用 这样,我们可以编写一个 shell 脚本来获取我们的凭证到我们的 Docker 容器。

AWS_ACCESS_KEY_ID=$(aws --profile 默认配置获取 aws_access_key_id) AWS_SECRET_ACCESS_KEY=$(aws --profile default 配置获取 aws_secret_access_key)

docker build -t my_app 。搬运工运行 -it --rm \ -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY

如果有人能准确地解释该怎么做,就像在和孩子说话一样,我将不胜感激。

【问题讨论】:

您希望能够在 docker 容器内从主机工作站使用您的 aws 凭据? 是的,这就是目标。 【参考方案1】:

我认为最简单的方法是做 AWS 在展示如何将本地容器与 AWS 服务一起使用时所做的事情,例如 local AWS Glue。即他们使用volume 选项以只读 模式与docker 容器共享~/.aws/

-v ~/.aws:/root/.aws:ro

显然,您必须调整上面的路径以匹配您的本地和 docker 设置。因此,您的 docker 命令可能是:

docker run -it --rm -v ~/.aws:/root/.aws:ro <name-of-image-to-run>

另一种方法是使用您已经在尝试的 docker 环境变量传递 AWS 凭证。

关于--profile。您的~/.aws 可以有多个profiles,例如适用于不同的 AWS 账户。使用 --profile 指定要使用的配置文件。

【讨论】:

谢谢。我没有使用 docker run ,只是我的 docker-compose。 docker run 去哪儿了? @band 你的问题不是说你正在使用 docker-compose 吗?无论如何,您可以查看here 如何在撰写中使用卷。

以上是关于如何从 docker 容器内的主机工作站获取 aws 凭据的主要内容,如果未能解决你的问题,请参考以下文章