hyp*_*ack 11 linux bash amazon-web-services docker
在macworks 和 on 上运行以下 docker 命令linux,runningubuntu找不到aws cli凭据。它返回以下消息:Unable to locate credentials
Completed 1 part(s) with ... file(s) remaining
该命令运行映像并挂载数据卷,然后从 s3 存储桶复制文件,并在 docker 容器中启动 bash shell。
sudo docker run -it --rm -v ~/.aws:/root/.aws username/docker-image sh -c 'aws s3 cp s3://bucketname/filename.tar.gz /home/emailer && cd /home/emailer && tar zxvf filename.tar.gz && /bin/bash'
我在这里缺少什么?
这是我的Dockerfile:
FROM ubuntu:latest
#install node and npm
RUN apt-get update && \
apt-get -y install curl && \
curl -sL https://deb.nodesource.com/setup | sudo bash - && \
apt-get -y install python build-essential nodejs
#install and set-up aws-cli
RUN sudo apt-get -y install \
git \
nano \
unzip && \
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" && \
unzip awscli-bundle.zip
RUN sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
# Provides cached layer for node_modules
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /home/emailer && cp -a /tmp/node_modules /home/emailer/
Run Code Online (Sandbox Code Playgroud)
Bas*_*hur 23
安装$HOME/.aws/到容器中应该可以。确保将其安装为只读。
还值得一提的是,如果您的配置文件中有多个配置文件~/.aws/config,则还必须提供AWS_PROFILE=somethingsomething环境变量。例如docker run -e AWS_PROFILE=xxx ...,否则您将收到相同的错误消息(无法找到凭据)。
更新:添加了 mount 命令的示例
\ndocker run -v ~/.aws:/root/.aws \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n
您可以使用环境变量,而不是将 ~/.aws/credentials 和配置文件复制到 aws-cli 的容器中
docker run \
-e AWS_ACCESS_KEY_ID=AXXXXXXXXXXXXE \
-e AWS_SECRET_ACCESS_KEY=wXXXXXXXXXXXXY \
-e AWS_DEFAULT_REGION=us-west-2 \
<img>
参考:AWS CLI 文档
在这种情况下对我有用的唯一解决方案是:
volumes:
- ${USERPROFILE}/.aws:/root/.aws:ro
Run Code Online (Sandbox Code Playgroud)
如果你跑,你会看到什么
ls -l ~/.aws/config
Run Code Online (Sandbox Code Playgroud)
在您的 docker 实例中?
| 归档时间: |
|
| 查看次数: |
21736 次 |
| 最近记录: |