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

AWS CloudFormation组合使用Join与Sub生成账户ARN列表报错如何解决

问题排查

错误原因

  • 核心问题不符合CloudFormation的函数嵌套语法规则,触发参数校验报错,具体问题有两个:
    1. 使用带自定义变量映射的!Sub(列表形式的!Sub)时,模板字符串中用到的所有变量都需要在映射中显式声明,包括AWS::Partition这类伪参数。你当前外层!Sub的模板里使用了${AWS::Partition},但变量映射中仅定义了acc_id,没有对该伪参数做显式声明,导致解析异常。
    2. 短格式函数的缩进不规范,CloudFormation解析时误判!Join的参数数量不匹配,触发了你看到的参数错误提示。

修复方案

以下是修正后可正常运行的代码,可实现「传入账号ID列表生成对应ARN列表」的需求:

Principal:
  Service: lambda.amazonaws.com
  AWS:
    !Split
      - ','
      - !Sub
          - 'arn:${Partition}:iam::${acc_id_joined}:root'
          - Partition: !Ref AWS::Partition
            acc_id_joined: !Join
                - !Sub ':root,arn:${AWS::Partition}:iam::'
                - !Ref AccountIds

逻辑说明

  • 首先用!Join把账号ID列表用分隔符:root,arn:${AWS::Partition}:iam::拼接为长字符串,例如账号ID列表为["111111111111", "222222222222"],拼接结果为111111111111:root,arn:aws:iam::222222222222
  • 再通过!Sub把拼接好的账号串替换到ARN模板中,得到完整的ARN拼接字符串:arn:aws:iam::111111111111:root,arn:aws:iam::222222222222:root
  • 最后用!Split按逗号分割,即可得到符合要求的ARN列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:36:00