amazon-cloudformation - 如何将 Fn::FindInMap 中的列表与其他项目结合起来?
问题描述
我有下一个 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
.
推荐阅读
- protocol-buffers - 将 ProtoBuf-net 与 gRPC 一起使用
- apache-spark - spark-submit 失败给出 FileNotFoundException
- javascript - 如何使用 React.js JavaScript 在 JSX 代码中实现数组递增函数
- angular - 提交函数中的角度错误处理只是挂起
- mysql - 基于计算的 MySQL 用户变量在列有结果时保持为 NULL
- r - 解决 Travis 构建时 rgdal 包失败的问题
- java - 如何使用从 CSV 数据集中读取的 Jmeter 转义逗号?
- build - .Net Core 解决方案在本地构建,但在 Azure DevOPS 管道上构建失败
- ios - 如何在导航栏ios上重叠图像
- facebook - AAD B2C Facebook for Developers IP-Whitelist