如何从 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 凭据的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 docker 容器写入 AWS 上的主机实例

如何从 Windows 主机连接到 wsl2 内的 docker 容器内的应用程序?

如何从 docker 容器中获取 docker 主机的 IP 地址

如何从 Docker 容器中获取主机的 udev 事件?

如何从主机获取 Docker 容器的 IP 地址

如何将安装在主机服务器上的 phpmyadmin 连接到正在运行的 docker 容器内的 maria db? [关闭]