You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK搭配GitLab CI执行cdk deploy无法读取AWS凭证报IncompleteSignature错误

报错原因

你遇到的凭证报错本质是AWS签名不完整导致的接口调用失败:从错误日志可以看到STS请求的Authorization头中Credential字段为空,说明CDK读取到的AWS访问密钥ID是空值,无法生成合法的AWS请求签名,被AWS接口返回400错误后,CDK判定没有有效可用的凭证,最终抛出对应报错。

未发现的配置错误

  • GitLab CI变量未正确注入:你在GitLab UI配置的AK/SK变量没有生效,大概率是以下配置问题:
    • 变量名拼写错误,存在多余空格、大小写不匹配(必须严格为AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
    • 变量勾选了「受保护变量」选项,而你部署用的dev分支不在项目的受保护分支列表内,GitLab不会为非受保护分支注入受保护变量
    • 你使用的GitLab 13.6.3版本存在已知问题:若变量值包含特殊字符且勾选了「掩码变量」,会导致变量无法正常注入到Job运行环境
  • 缺失AWS区域配置:你仅配置了AK/SK,没有配置AWS区域,CDK默认fallback到us-east-1,和你app.py中硬编码的区域不匹配时也会触发凭证校验异常。

修复方案

  1. 先验证变量是否正常注入:在CI脚本的aws configure list之前新增一行echo $AWS_ACCESS_KEY_ID | head -c 10,如果输出为空,直接去GitLab项目的「设置→CI/CD→变量」页面调整配置:
    • 核对变量名和变量值完全正确,无多余前后空格
    • 要么取消「受保护变量」勾选,要么将dev分支加入项目受保护分支列表
    • 先取消「掩码变量」勾选测试,确认变量可以正常注入后再按需开启
  2. 补全区域配置:在配置AK/SK的命令后新增aws configure set region <你的实际AWS区域>,或者直接在CI Job中声明环境变量AWS_DEFAULT_REGION为你实际使用的区域
  3. 可选优化:CDK优先读取环境变量中的AWS凭证,优先级高于~/.aws/credentials文件,你可以直接删除脚本中创建~/.aws目录、手动写凭证文件的相关命令,只要变量正确注入即可正常运行。

内容的提问来源于stack exchange,提问作者Brad Beggs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:36:03