Gitlab Runner 无法运行 AWS 命令

9
我正在尝试使用GitLab的共享Runner来运行作业, 我已经在项目的根目录下创建了.gitlab-ci.yml文件, 将AWS凭证配置为环境变量 -
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

在“设置 -> CI / CD -> 变量”下方 enter image description here 我已经双重检查了我尝试构建的分支是“受保护”的。
以下是我的 .gitlab-ci.yml 文件-
stages:
    - build

build:
    image: python:latest
    stage: build
    script:
            - apt-get update
            - apt-get install -y zip unzip
            - pip install awscli
            - mkdir ~/.aws/
            - touch ~/.aws/credentials
            - pip install awscli
            - printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\nregion = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$AWS_DEFAULT_REGION" >> ~/.aws/credentials
            - bash cicdScript.sh

CICD脚本具有aws命令 -

$(aws s3 ls)

但我仍然收到以下错误 -
Unable to locate credentials. You can configure credentials by running "aws configure".

参考资料 -
https://medium.com/faun/continuous-static-upload-to-aws-s3-using-gitlab-runners-17f0260a5af2


正如错误所述,它找不到 aws 命令。你使用的是哪个 image?你能发布你的 .gitlab-ci.yml 吗? - Rekovni
似乎你的GitLab主机上没有安装AWS命令行工具。 - Oleksandr Borysov
@Rekovni 已添加了 .gitlab-ci.yml 文件和环境变量设置。 - Ani
不确定为什么在credentials文件中使用[eb-cli],也许尝试使用[default]?虽然不安全,但在printf之后尝试cat ~/.aws/credentials会发生什么?(如果确实有效,请撤销您的密钥...) - Rekovni
2个回答

19

您可以使用

- pip install awscli
- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
- aws configure set region $AWS_DEFAULT_REGION

代替

- mkdir ~/.aws/
- touch ~/.aws/credentials
- pip install awscli
- printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\nregion = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$AWS_DEFAULT_REGION" >> ~/.aws/credentials

0
在你的代码中,配置文件设置为“eb-cli”以获取你的凭据。
printf "[eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\nregion = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$AWS_DEFAULT_REGION" >> ~/.aws/credentials

您应该使用的命令是:
aws s3 ls --profile eb-cli

如果您未通过配置文件,将会选择 [default]。由于默认值未进行配置,因此出现了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接