我的cloudformation模板中有一个VPC设置的映射,如果我喜欢的话,可以正常工作
texts_ = [[text_list[i-1] for i in l] for l in index_list]
我可以使用[['this', 'is', 'my', 'text', 'and'], ['it', 'should', 'be'], ['awesome', '.']]
来获取值。
但是,我想根据 PROD 或 NON-PROD 环境使用不同的CIDR范围。在这种情况下,我的映射将是:
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'
当然,cloudformation不允许这种映射。有没有一种方法可以定义此映射?我已经提到了这个post,但没有帮助
答案 0 :(得分:1)
一种选择可能是将映射平坦化一个级别,例如
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'
答案 1 :(得分:0)
一种方法是您可以创建2个JSON格式的属性文件,其中1个具有PROD范围,其他具有NON PROD范围。然后,可能可以让您的代码根据要部署的环境读取属性文件,选择合适的文件,读取值,然后在部署时将其传递给CF模板。因此,与其对模板中的IP范围进行硬编码,还可以对其进行参数化,然后从代码传递给模板的输入参数中读取它们。