Docker构建过程中的AWS凭据

Ric*_*wis 8 docker aws-cli dockerfile

作为构建我的docker容器的过程的一部分,我需要从s3存储桶中提取一些文件,但是我现在仍然保持这种情况,fatal error: Unable to locate credentials因为我现在将凭据设置为ENVvars(虽然想知道更好的方法来执行此操作)

因此,在构建容器时,我会运行

docker build -t my-container --build-arg AWS_DEFAULT_REGION="region" --build-arg AWS_ACCESS_KEY="key" --build-arg AWS_SECRET_ACCESS_KEY="key" . --squash
Run Code Online (Sandbox Code Playgroud)

在我的Dockerfile中我有

ARG AWS_DEFAULT_REGION
ENV AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION

ARG AWS_ACCESS_KEY
ENV AWS_ACCESS_KEY=$AWS_ACCESS_KEY

ARG AWS_SECRET_ACCESS_KEY
ENV AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY

RUN /bin/bash -l -c "aws s3 cp s3://path/to/folder/ /my/folder --recursive"
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么解决这个问题(我知道有一个选项可以添加配置文件,但这似乎是一个不必要的额外步骤,因为我应该能够从ENV读取).

Fré*_*nri 6

环境变量的名称是 AWS_ACCESS_KEY_ID vsAWS_ACCESS_KEY

您可以查看亚马逊文档的完整列表

AWS CLI支持以下变量

AWS_ACCESS_KEY_ID – AWS访问密钥。

AWS_SECRET_ACCESS_KEY– AWS密钥。访问和密钥变量将覆盖存储在凭证和配置文件中的凭证。

AWS_SESSION_TOKEN–会话令牌。仅当您使用临时安全凭证时,才需要会话令牌。

AWS_DEFAULT_REGION– AWS区域。如果设置了此变量,它将覆盖使用中配置文件的默认区域。

AWS_DEFAULT_PROFILE–要使用的CLI配置文件的名称。这可以是存储在凭证或配置文件中的配置文件的名称,也可以是默认使用默认配置文件的配置文件的名称。

AWS_CONFIG_FILE – CLI配置文件的路径。