amazon-web-services – Dockerfile中的AWS凭据

我要求在容器构建期间从AWS S3下载文件,但是我没有成功地将AWS证书提供给构建过程,而实际上并没有在Dockerfile中对它们进行硬编码.我收到错误:

docker fatal error: Unable to locate credentials

尽管以前执行过:

aws configure

而且,我无法为此目的使用–build-arg.

我的问题:是否可以在构建时使用这些凭据而无需在Dockerfile中对其进行硬编码,如果是这样的话?

感谢您的关注.

最佳答案 使用–build-arg标志是正确的方法,但是你必须使用ARG指令,而不是ENV指令在Dockerfile中指定它们.

以下是我使用AWS凭据的Dockerfile示例.它将aws凭据作为构建参数,包括AWS_REGION构建参数的默认参数.然后它执行基本的aws操作,在这种情况下登录到ecr.

FROM <base-image>:latest # an image I have that has `aws` installed

ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ARG AWS_REGION=us-west-2

RUN aws ecr get-login --no-include-email | bash

CMD ["npm", "start"]

然后使用以下命令构建映像:

docker build -t testing --build-arg AWS_ACCESS_KEY_ID=<Your ID Here> \
    --build-arg AWS_SECRET_ACCESS_KEY=<Your Key Here> .

希望这可以帮助.

点赞