我有下一个CloudFormation文件:
Mappings:
MyMap:
us-east-1:
Roles:
- "roleA"
- "roleB"
...
Resources:
MyPolicy:
Type: "AWS::IAM::Policy"
PolicyDocument:
Statement:
- Effect: "Allow"
Action:
- "sts:AssumeRole"
Resource:
Fn::FindInMap: ["MyMap", !Ref AWS::Region, "Roles"]
[一切正常,但是现在我需要为所有区域添加一个额外的角色,但是仅向Resource:
部分添加其他角色是行不通的,因为它会因模板语法错误而失败。
是否有一种方法可以合并FindInMap
和其他项目的结果列表?类似于:
Resource:
Fn::FindInMap: ["MyMap", !Ref AWS::Region, "Roles"]
- "roleC"
是的,您可以,但是不会很漂亮:
Resource:
Fn::Split:
- ','
- Fn::Join:
- ','
- - !Join [',', !FindInMap ["MyMap", !Ref "AWS::Region", "Roles"]]
- 'roleC'
[基本上,首先将MyMap
列表加入字符串,然后将roleC
添加到字符串,然后将其拆分为List of Strings
。