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

对接GitHub的AWS CodePipeline源阶段报KMS.SubscriptionRequiredException错误

AWS CodePipeline源阶段KMS.SubscriptionRequiredException报错排查方案

报错详情:
动作执行失败
GitHub上传至S3失败,错误信息如下:The AWS Access Key Id needs a subscription for the service (Service: Amazon S3; Status Code: 400; Error Code: KMS.SubscriptionRequiredException; Request ID: NWPB863XQQJV86T2; S3 Extended Request ID: XC5qnepPTZxI0mzF6K3epFPIXpYn+iJiivZqSRjeZ4hR7yVZRAKJT0laFpGZ4twOZYOrusfaZBc=; Proxy: null)
报错截图:
报错截图

该错误并非S3服务访问权限问题,核心是KMS服务的订阅或权限配置异常。CLI可以正常操作S3,通常是因为CLI上传时默认没有触发KMS加密逻辑,而CodePipeline往目标S3桶写入时默认使用KMS加密,因此触发报错。

排查步骤如下:

  • 核对S3存储桶加密配置
    进入S3控制台查看目标桶的「属性」-「默认加密」配置,确认是否开启了SSE-KMS加密。如果开启,记录使用的是AWS托管KMS密钥还是客户自行管理的CMK密钥。
  • 核对CodePipeline使用的IAM身份与CLI是否一致
    多数场景下CLI使用的是个人IAM用户凭证,而CodePipeline源阶段配置了独立的服务角色,二者权限不同。可执行aws sts get-caller-identity获取CLI当前使用的身份ARN,再进入CodePipeline的动作配置页面对比使用的服务角色ARN,确认二者是否为同一实体。
  • 补全KMS访问权限
    如果目标S3桶开启了SSE-KMS:
    1. 给CodePipeline使用的IAM身份添加包含kms:GenerateDataKey、kms:Decrypt权限的IAM策略
    2. 如果使用的是客户自行管理的CMK密钥,还需要在KMS控制台对应密钥的「密钥策略」中,添加允许CodePipeline的IAM身份执行上述操作的规则,仅配置IAM策略不会生效
  • 检查AWS账号KMS服务订阅状态
    新注册的AWS账号、存在未支付账单的账号可能会被限制KMS服务访问,可进入AWS控制台「账单和成本管理」页面查看是否有未结清账单,也可提交服务工单确认账号是否存在KMS服务访问限制。
  • 手动复现验证
    切换为CodePipeline使用的IAM凭证后,执行带KMS加密参数的S3上传命令验证问题:
    aws s3 cp 本地测试文件路径 s3://目标桶名/测试文件名 --sse aws:kms
    如果执行后同样报错,即可排除CodePipeline本身配置问题,聚焦KMS权限/账号订阅问题排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:04