首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当从AWS管道中的Dockerfile运行AWS时,如何指定AWS凭据?

当从AWS管道中的Dockerfile运行AWS时,如何指定AWS凭据?
EN

Stack Overflow用户
提问于 2021-12-10 21:29:03
回答 2查看 1.7K关注 0票数 2

我有一个应用程序使用:

基于码头

  • SAM
  • AWS S3
  • AWS Lambda的
  • AWS SAM pipeline
  • Github function

在Dockerfile中我有:

代码语言:javascript
复制
RUN aws s3 cp s3://mylambda/distilBERT distilBERT.tar.gz

导致错误消息:

代码语言:javascript
复制
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的秘密什么的吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-12-10 21:36:51

默认情况下,Docker无法访问主机上运行的.aws文件夹。您可以将AWS凭据作为环境变量传递给Docker映像:

代码语言:javascript
复制
ENV AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
ENV AWS_SECRET_ACCESS_KEY=...

请记住,在Dockerfile中硬编码AWS凭据是一种糟糕的做法。为了避免这种情况,可以使用docker run -e MYVAR1docker run --env MYVAR2=foo参数在运行时传递环境变量。其他解决方案是为环境变量使用一个.env文件。

更复杂的解决方案是从Docker映像中的主机映射~/.aws文件夹的卷。

票数 2
EN

Stack Overflow用户

发布于 2021-12-10 21:59:35

我的解决方案可能要长一点,但我觉得它解决了你的问题,而且

  1. 它不公开任何秘密
  2. 它不需要任何手工操作
  3. 以后如果需要的话很容易更改AWS键。

步骤:

  1. 您可以将环境变量作为机密添加到Github操作中(因为您已经提到了Github操作)。

  1. /CD流中,当您构建Dockerfile时,可以创建一个aws凭据文件.

代码语言:javascript
复制
      - 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 }}

  1. 在您的Dockerfile中,可以添加指令来复制此凭据文件并将其存储为

代码语言:javascript
复制
COPY credentials credentials
RUN mkdir ~/.aws
RUN mv credentials ~/.aws/credentials

更改凭据只需要更改github操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70310563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档