amazon-web-services - Cloudformation 模板中的嵌套映射
问题描述
我在我的 cloudformation 模板中有一个 VPC 设置的映射,如果我喜欢它就可以正常工作
SubnetConfig:
VPC:
CIDR: '10.1.0.0/16'
PublicOne:
CIDR: '10.1.0.0/22'
PublicTwo:
CIDR: '10.1.4.0/22'
PrivateOne:
CIDR: '10.1.8.0/22'
PrivateTwo:
CIDR: '10.1.12.0/22'
我可以使用!FindInMap ['SubnetConfig', 'VPC', 'CIDR'] OR !FindInMap ['SubnetConfig', 'PublicOne', 'CIDR']
.
但是,我希望根据PROD或NON-PROD环境有不同的 CIDR 范围。在这种情况下,我的映射将是:
SubnetConfig:
PROD:
VPC:
CIDR: '10.1.0.0/16'
PublicOne:
CIDR: '10.1.0.0/24'
PublicTwo:
CIDR: '10.1.1.0/24'
PrivateOne:
CIDR: '10.1.2.0/24'
PrivateTwo:
CIDR: '10.1.3.0/24'
NON-PROD:
VPC:
CIDR: '10.2.0.0/16'
PublicOne:
CIDR: '10.2.0.0/22'
PublicTwo:
CIDR: '10.2.4.0/22'
PrivateOne:
CIDR: '10.2.8.0/22'
PrivateTwo:
CIDR: '10.2.12.0/22'
当然,cloudformation 不允许这种映射。有没有办法定义这个映射?我已经提到了这篇文章,但它没有帮助
解决方案
一种替代方法可能是将映射展平一层,例如
Mappings:
SubnetConfig:
PROD:
VPCCIDR: '10.1.0.0/16'
PublicOneCIDR: '10.1.0.0/24'
PublicTwoCIDR: '10.1.1.0/24'
PrivateOneCIDR: '10.1.2.0/24'
PrivateTwoCIDR: '10.1.3.0/24'
NON-PROD:
VPCCIDR: '10.2.0.0/16'
PublicOneCIDR: '10.2.0.0/22'
PublicTwoCIDR: '10.2.4.0/22'
PrivateOneCIDR: '10.2.8.0/22'
PrivateTwoCIDR: '10.2.12.0/22'
推荐阅读
- swift - 如何对 RxSwift 链接进行单元测试
- c++ - 如何在 C++98 中遍历枚举的所有元素
- swift - 在swift中使用字典替换字符串的子字符串
- arduino - VEML6075 UVA 和 UVB 测量范围
- prometheus - prometheus 是否对除法运算符的值进行四舍五入?
- laravel - Laravel - 此路由不支持 GET 方法。支持的方法:POST
- javascript - 如何使用 jQuery Datepicker 动态应用 setDate 和(minDate 和 maxDate)日期范围?
- debugging - 如何在 Google Application Script 中调试 Web 开发?
- python - Python PUT 调用失败,而 curl 调用没有
- php - 在每次迭代 laravel Livewire 上显示文本