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

AWS CloudFormation中!Sub与!Join函数联合使用触发模板错误的解决求助

解决CloudFormation中!Sub与!Join联合使用的ValidationError问题

我来帮你搞定这个模板错误!你遇到的问题根源是错误地混用了!Sub和!Join的语法结构,让我们一步步拆解解决:

错误原因分析

你当前的写法把!Sub的参数写成了数组,但!Sub的数组格式要求第一个元素必须是字符串模板,而你放了!Join函数,这完全不符合Fn::Sub的语法规则,所以CloudFormation抛出了ValidationError。

其实你根本不需要同时用!Sub和!Join——!Sub本身就支持直接在字符串里嵌入变量完成拼接,完全能满足你的需求。

正确写法

直接使用!Sub处理ARN拼接即可,代码如下:

ManagedPolicyArns:
  - !Ref kinesiss3logpolicy
PermissionsBoundary: !Sub 'arn:aws:iam::${AWS::AccountId}:policy/${AdminPolicy}'

补充说明

  • ${AWS::AccountId}是CloudFormation的伪参数,会自动替换为当前部署模板的AWS账号ID
  • ${AdminPolicy}会直接引用你模板中定义的同名参数,无需额外的!Ref(!Sub会自动识别参数和伪参数)

如果你一定要用!Join来实现(虽然没必要),可以去掉!Sub,写成这样:

PermissionsBoundary: !Join 
  - ''
  - - 'arn:aws:iam::'
    - !Ref AWS::AccountId
    - ':policy/'
    - !Ref AdminPolicy

但显然第一种用!Sub的写法更简洁易读,推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:17:38