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

CloudFormation为KMS密钥添加多个Principal时报ARN无效错误如何解决?

问题原因
  • 核心错误是模板中Fn::Sub和Fn::Join的嵌套逻辑颠倒,导致最终生成的ARN包含重复前缀,格式非法。
  • 你当前的代码会先拼接出类似arn:aws:iam::12345678:user/people/arn:aws:iam::12345678:user/people/user1,user2,user3的字符串,拆分后每个ARN都带有冗余的前缀片段,不符合IAM ARN规范,因此触发密钥策略校验失败。
修复方案

原有参数KmsKeyManager的定义无需修改,Principal部分的代码调整为如下写法即可:

"Principal": {
  "AWS": {
    "Fn::Split": [
      ",",
      {
        "Fn::Sub": [
          "arn:aws:iam::${AccountId}:user/people/${Users}",
          {
            "AccountId": {"Ref": "AWS::AccountId"},
            "Users": {
              "Fn::Join": [
                {
                  "Fn::Sub": ",arn:aws:iam::${AccountId}:user/people/"
                },
                {
                  "Fn::Split": [",", {"Ref": "KmsKeyManager"}]
                }
              ]
            }
          }
        ]
      }
    ]
  }
}

上述代码的实现逻辑为:

  1. 先将输入的逗号分隔用户名字符串拆分为单个用户名的列表
  2. 用完整ARN前缀作为分隔符,重新拼接用户名列表,此时除第一个用户名外,其余用户名前都会自动带上ARN前缀
  3. 在整个拼接结果前补加一次ARN前缀,得到所有完整ARN用逗号拼接的长字符串
  4. 最后按逗号拆分长字符串,即可得到格式合法的ARN列表,可直接赋值给Principal.AWS字段使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:03