如何从 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_ID
和 AWS_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 凭据的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Windows 主机连接到 wsl2 内的 docker 容器内的应用程序?
如何从 docker 容器中获取 docker 主机的 IP 地址
如何将安装在主机服务器上的 phpmyadmin 连接到正在运行的 docker 容器内的 maria db? [关闭]