[英]How do you specify AWS credentials when running AWS CLI from a Dockerfile in an AWS SAM pipeline?
我有一个应用程序使用:
在 Dockerfile 我有:
RUN aws s3 cp s3://mylambda/distilBERT distilBERT.tar.gz
导致错误消息:
Step 6/8 : RUN aws s3 cp s3://mylambda/distilBERT distilBERT.tar.gz
---> Running in 786873b916db
fatal error: Unable to locate credentials
Error: InferenceFunction failed to build: The command '/bin/sh -c aws s3 cp s3://mylambda/distilBERT distilBERT.tar.gz' returned a non-zero code: 1
我需要找到一种方法以安全的方式存储凭证。 是否有可能使用 GitHub 秘密或其他什么?
谢谢
Docker 默认无权访问主机上运行的.aws
文件夹。 您可以将 AWS 凭证作为环境变量传递给 Docker 映像:
ENV AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
ENV AWS_SECRET_ACCESS_KEY=...
请记住,在 Dockerfile 中硬编码 AWS 凭证是一种不好的做法。 为了避免这种情况,您可以在运行时使用docker run -e MYVAR1
或docker run --env MYVAR2=foo
arguments 传递环境变量。 其他解决方案是使用.env
文件作为环境变量。
一个更复杂的解决方案是 map 从 Docker 映像中的主机的~/.aws
文件夹的卷。
我的解决方案可能会更长一些,但我觉得它可以解决您的问题,并且
脚步:
您可以在 Github 操作(因为您已经提到 Github 操作)中添加环境变量作为机密。
在您的 Github CI/CD 流程中,当您构建 Dockerfile 时,您可以创建一个 aws 凭证文件。
- name: Configure AWS credentials
echo "
[default]
aws_access_key_id = $ACCESS_KEY
aws_secret_access_key = $SECRET_ACCESS_KEY
" > credentials
with:
ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}
SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
COPY credentials credentials
RUN mkdir ~/.aws
RUN mv credentials ~/.aws/credentials
更改您的凭据只需要更改您的 github 操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.