我有下一个 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
.