我正在尝试实现一个使用 Gitlab CI 将 Python 代码打包并复制到 S3 的管道。这是导致问题的工作:
package:
stage: package
image: python:3.8
script:
- apt-get update && apt-get install -y zip unzip jq
- pip3 install awscli
- aws s3 ls
- ./cicd/scripts/copy_zip_to_s3.sh
only:
refs:
- developer
Run Code Online (Sandbox Code Playgroud)
我想提一下,在.gitlab-ci.yml 的before_script部分中,我已经从 Gitlab 环境变量中导出了 AWS 凭证(AWS SECRET ACCESS KEY、AWS_ACCESS_KEY_ID 等)。我已经检查了数千次我的凭据,它们完全正确。我还想提一下,相同的脚本对于 Gitlab 中同一组下的另一个项目非常有效。这是错误:
$ aws s3 ls
An HTTP Client raised an unhandled exception: Invalid header value b'AWS4-HMAC-SHA256 Credential=AKIAZXXXXXXXXXX\n/2020XX2/us-east-1/sts/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=ab53XX6eb72XXXXXX2152e4XXXX93b104XXXXXXX363b1da6f9XXXXX'
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)
./cicd/scripts/copy_zip_to_s3.sh 执行包和复制,执行它时会发生同样的错误,这就是为什么我添加了一个简单的 aws 命令 …