Isso é o que funciona para mim:
Defina um IP privado como o endereço IP principal no recurso "AWS :: EC2 :: Instance":
"NetworkInterfaces" : [
{
"DeleteOnTermination" : true,
"Description" : "Main interface",
"DeviceIndex" : "0",
"PrivateIpAddresses" : [
{
"PrivateIpAddress" : {
"Ref" : "InternalIPAddress"
},
"Primary" : true
}
],
"GroupSet" : [
{
"Ref" : "SecurityGroupId"
}
],
"SubnetId" : {
"Ref" : "VPCSubnet"
}
}
],
Observe que a referência a "InternalIPAddress" acima é um parâmetro para passar o IP interno que a máquina deve ter. Eu não acho que seja necessário, pois sem isso, a instância irá pegar um IP através do dhcp.
Em seguida, no modelo, adicione um recurso do tipo "AWS :: EC2 :: EIP":
"EIPExternalIP" : {
"Type" : "AWS::EC2::EIP",
"Properties" : {
"InstanceId" : {
"Ref" : "Instance"
},
"Domain" : "vpc"
}
},
Você pode obter o IP externo com {"Ref": "EIPExternalIP"}