docker - 虽然存在,却无法在容器中找到aws凭据

时间:2015-06-26 13:01:07

标签: linux bash amazon-web-services docker

mac上运行以下docker命令,在linux上运行ubuntu无法找到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/

5 个答案:

答案 0 :(得分:3)

如果你跑

,你会怎么看?
ls -l ~/.aws/config
你的docker实例中有

吗?

答案 1 :(得分:1)

$HOME/.aws/装入容器应该可以。确保将其安装为只读。

值得一提的是,如果您的~/.aws/config中有几个配置文件,则还必须提供AWS_PROFILE=somethingsomething环境变量。例如。通过docker run -e AWS_PROFILE=xxx ...,否则您将收到相同的错误消息(无法找到凭据)。

答案 2 :(得分:0)

有些事情可能是错误的。一,如前所述,您应该检查〜/ .aws / config文件是否已相应设置。如果没有,您可以按照this link进行设置。完成后,您可以使用~/.aws上的-v标志映射docker run文件夹。

如果您的~/.aws文件夹映射正确,请确保检查〜/ .aws下文件的权限,以便无论尝试访问它们的进程都可以安全地访问它们。如果您以用户进程的身份运行,只需运行chmod 444 ~/.aws/*就可以解决问题。这将赋予该文件完全读取权限。当然,如果需要写权限,则可以添加所需的其他任何修饰符。只需确保已为相应的用户和/或组翻转已读取的八进制数即可。

答案 3 :(得分:0)

我遇到的问题是我以root用户身份运行Docker。以root身份运行时,即使它们有效,也无法在~/.aws/credentials处找到我的凭据。

在Ubuntu上不带root的情况下运行Docker的方向如下:https://askubuntu.com/a/477554/85384

答案 4 :(得分:-1)

您可以使用环境变量,而不是将〜/ .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 Doc