代码之家  ›  专栏  ›  技术社区  ›  Kirk Broadhurst

aws cli容器的正确用户配置

  •  0
  • Kirk Broadhurst  · 技术社区  · 5 年前

    AWS CLI v2文档提供了以下选项和指南: installing / configuring the cli via docker .指南非常简单易懂,容器可以很好地处理关键项目

    • 安装本地 .aws 目录以向容器提供凭据
    • 安装 $pwd 对于任何需要的I/O工作

    我将其用于s3,并意识到从s3复制到本地驱动器的任何文件都显示为所有者 root .

    >docker run --rm -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
    download: s3://xxx/hello to ./hello
    >ls -l
    total 0
    -rw-r--r-- 1 root root 0 Oct  2 09:43 hello
    

    这是有道理的,因为流程正在以 在容器中,但并不理想。容器中没有任何其他用户,所以我不能只运行“as” kirk .

    >docker run --rm -u kirk -v "$HOME/.aws:/root/.aws:rw" -v "$PWD:/aws:rw" amazon/aws-cli s3 cp s3://xxx/hello .
    docker: Error response from daemon: unable to find user kirk: no matching entries in passwd file.
    

    有没有一种方法可以“作为”用户或通过授权用户访问容器来装载卷?我不在乎(不确定我能否控制)容器中的用户,但我希望该进程在主机系统上的用户上下文中运行。正确的方法是什么?

    0 回复  |  直到 5 年前
        1
  •  0
  •   masseyb    5 年前

    您可以以用户的身份运行一个容器,该容器不存在于图像中,请使用 -u ${UID}:${GID} .例如:

    docker run --rm \
        -u 1000:1000 \
        -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
        -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
        -v ${PWD}:/aws:rw \
        amazon/aws-cli s3 cp s3://devops-example/lolz.gif .
    

    ... 将文件复制为 UID 1000 GID 1000

    笔记 :使用 AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY 用于传递凭据而不是装载凭据文件的环境变量。环境变量的完整列表可用 here .

    AWS CLI copy as UID:GID 1000