Gitlab 运行程序无法运行 aws 命令

问题描述 投票:0回答:3

我正在尝试使用他们共享的 Runner 来运行 GitLab 的作业,
我创建了一个

.gitlab-ci.yml
并将其保存在我的项目的根目录下,
将 AWS 凭证配置为环境变量 -

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

Settings -> CI / CD -> Variables

仔细检查我试图构建的分支是

protected

以下是我的.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

amazon-web-services gitlab gitlab-ci gitlab-ci-runner
3个回答
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

如果您没有通过配置文件,将选择[默认]。由于未配置默认值,因此导致了问题。


0
投票

如果您想在管道中运行 aws cli 命令,文档中描述了最简单的方法:

步骤:

  1. 登录您的 AWS 账户。
  2. 创建 IAM 用户。
  3. 选择您的用户以访问其详细信息。转到安全凭证 > 创建新的访问密钥。
  4. 记下访问密钥 ID 和秘密访问密钥。
  5. 在您的 GitLab 项目中,转到“设置”>“CI/CD”。设置以下 CI/CD 变量:
Environment variable name   Value

- AWS_ACCESS_KEY_ID Your Access key ID.
- AWS_SECRET_ACCESS_KEY Your secret access key.
- AWS_DEFAULT_REGION    Your region code. You might want to confirm that the AWS service you intend to use is available in the chosen region.
  1. 变量默认受到保护。要将 GitLab CI/CD 与不受保护的分支或标签一起使用,请清除保护变量复选框。

最后在

.gitlab-ci.yml
中添加以下内容:

deploy:
  stage: deploy
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  script:
    - aws s3 ...
    - aws create-deployment ...
  environment: production
© www.soinside.com 2019 - 2024. All rights reserved.