Temos um modelo AWS CloudFormation para criar algumas instâncias do EC2. Alguns deles, no entanto, exigem um específico PrivateIpAddress
e estou lutando para descobrir como incorporar isso ao modelo.
Por enquanto, tenho um parâmetro de modelo PrivateIP
e a criação de uma Condition RequestedPrivateIP
. Até agora tudo bem. No entanto, não consigo descobrir como incorporá-lo à AWS::EC2::Instance
especificação do recurso. Eu tentei isso:
"PrivateIpAddress": {
"Fn::If": [ "RequestedPrivateIP",
{ "Ref": "PrivateIP" },
"" <-- This doesn't work
]
},
Mas isso falha quando RequestedPrivateIP
é falso com
CREATE_FAILED AWS::EC2::Instance NodeInstance Invalid addresses: []
Alguma ideia de como atribuir opcionalmente um IP privado estático e, se não for especificado, deixar para a AWS definir um IP dinâmico?
eu mudaria a estrutura para:
o AWS::NoValue está lá para dar a você a opção else para sua instrução if. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html
Como parece que a
PrivateIpAddress
propriedade não oferece suporte a uma string vazia como valor, sugiro criar dois recursos separados de seu arquivoAWS::EC2::Instance
. Um deles terá sua condiçãoRequestedPrivateIP
, enquanto o outro deve ter a mesma condição, mas negada, por exemploDidNotRequestPrivateIP
.