У меня есть шаблон облачной информации cfndsl и файл yaml с входными значениями. Когда я пытаюсь сгенерировать облачную информацию, неожиданно генерируется только первый элемент значения массива (из хэша).
Что я делаю не так?
Я пытался изменить различные разделы файла yamlи формат кода cfndsl, но все еще получающий только первый блок.
Мой файл Yaml имеет хэш следующим образом
SecurityGroupIngresss:
- FromPort: 11211
IpProtocol: 'tcp'
CidrIp: '10.244.17.0/24'
ToPort: 11211
- FromPort: 11211
IpProtocol: 'tcp'
CidrIp: '10.244.18.0/24'
ToPort: 11211
- FromPort: 11211
IpProtocol: 'tcp'
CidrIp: '10.244.19.0/24'
ToPort: 11211
- FromPort: 11211
IpProtocol: 'tcp'
CidrIp: '10.244.16.0/21'
ToPort: 11211
, а файл cfndsl имеет следующий раздел
securityGroupIngresss.each do |securityGroupIngress|
if !securityGroupIngress.nil?
Resource(:SecurityGroupIngress) do
Type('AWS::EC2::SecurityGroupIngress')
Property('Description', FnJoin(' ', ['Security Ingress for MemCache Stack', Ref('AWS::StackName')]))
securityGroupIngress.each do |key,value|
Property("#{key}", "#{value}")
end
Property('GroupId', Ref('SecurityGroup'))
end
end
end
Толькополучить один блок кода, как показано ниже:
"SecurityGroupIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"Description": {
"Fn::Join": [
" ",
[
"Security Ingress for MemCache Stack",
{
"Ref": "AWS::StackName"
}
]
]
},
"FromPort": "11211",
"IpProtocol": "tcp",
"CidrIp": "10.244.17.0/24",
"ToPort": "11211",
"GroupId": {
"Ref": "SecurityGroup"
}
}
},
Обновление: в CFNDSL я получаю securityGroupIngresss переменную как:
securityGroupIngresss = external_parameters.fetch(:SecurityGroupIngresss)
Ref здесь