GitLab CI Pipeline调用AWS服务失败,报HTTP客户端异常
解决GitLab CI执行AWS操作时的Invalid header value错误
这个错误的核心原因是AWS请求头里的凭证格式异常,大概率是凭证传递出错或者配置问题,按以下步骤排查:
检查GitLab CI变量的正确性
去项目的Settings > CI/CD > Variables里,确认AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY这两个变量:- 值里不能有多余的空格、换行符,复制粘贴时别带了末尾的空白字符
- 如果你的流水线跑在非受保护分支/标签,要取消变量的Protected选项,不然变量会被屏蔽
简化CI配置,用环境变量传递参数
没必要手动执行aws configure set region,AWS CLI会自动读取环境变量,修改后的配置更可靠:upload to s3: image: name: banst/awscli entrypoint: [""] variables: AWS_DEFAULT_REGION: us-east-1 script: - aws s3 ls验证凭证本身的有效性
在本地终端用同样的凭证执行aws s3 ls --region us-east-1,确认能正常列出存储桶:- 如果本地也报错,说明凭证过期或者没有S3访问权限,去AWS控制台重新生成密钥并赋予对应权限
- 如果本地正常,那问题就出在GitLab变量传递或者镜像上
尝试更换官方AWS CLI镜像
第三方镜像可能有兼容性问题,换成官方镜像试试:upload to s3: image: amazon/aws-cli:latest variables: AWS_DEFAULT_REGION: us-east-1 script: - aws s3 ls
内容的提问来源于stack exchange,提问作者MMS
相关产品推荐
相关产品推荐

