造成该错误的原因是SecurityGroups
and Subnets
导致格式错误。
提取subnets
and securitygroups
the FindInMap
使用了函数。这个结果必须是一个列表。这可以通过使用来实现Split
功能。
不幸的是,错误的格式会导致完全误导性的错误消息。
像这样声明映射:
Mappings
Env2SecurityGroups:
'111111111111':
securitygroup: 'sg-1111111111111111'
'222222222222':
securitygroup: 'sg-2222222222222222'
'333333333333':
securitygroup: 'sg-3333333333333333'
Env2PublicSubnets:
'111111111111':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
'222222222222':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
'333333333333':
subnets: subnet-1111111111111111,subnet-22222222222222222,subnet-33333333333333333
Use !Split
结合!FindInMap
获取列表:
SecurityGroups: !Split [",", !FindInMap [ Env2SecurityGroups, !Ref AWS::AccountId, securitygroup] ]
Subnets: !Split [",", !FindInMap [ Env2PublicSubnets, !Ref AWS::AccountId, subnets] ]