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

CloudFormation使用!Join指定IAM多资源ARN的YAML语法问题求助

问题原因

你误用了!Join函数:!Join的作用是将多个元素拼接为单个字符串,你当前的写法把两个角色ARN拼成了一个带逗号的长字符串,CloudFormation会把这个字符串作为Resource数组的唯一元素,因此生成的IAM策略不符合预期。

解决方案

不需要使用!Join,直接在!If分支返回对应数组即可,修改后的Resource字段代码如下:

Resource: !If 
  - AdminRoleHasRLP
  # 条件成立时返回两个独立ARN组成的数组
  - - !Sub 'arn:aws:iam::*:role/${TestServiceRole1}'
    - !Sub 'arn:aws:iam::*:role/${TestServiceRole2}'
  # 条件不成立时返回通配符ARN,外层加短横线保证返回值始终为数组类型
  - - 'arn:aws:iam::*:role/*'

这里用!Sub替换手动字符串拼接,语法更简洁,也能避免拼接错误。

验证效果

修改后当AdminRoleHaveRLP=Yes时,生成的IAM策略的Resource字段会是两个独立的ARN元素,和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

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