AWS CloudFormation: как вывести PublicIP машины?
Я написал шаблон CloudFormation, который создает хост Linux docker.
Я хочу отобразить PublicIP машины в разделе "выходы".
Это соответствующая часть шаблона:
"Outputs" : {
"ServerAddress" : {
"Value" : { "Fn::GetAtt" : [ "Server", "PublicDnsName" ] },
"Description" : "Server Domain Name"
},
"SecurityGroup" : {
"Value" : { "Fn::GetAtt" : [ "ServerSecurityGroup", "GroupId" ] },
"Description" : "Server Security Group Id"
},
"PublicIp" : {
"Value" : { "Fn::GetAtt" : [ "ServerPublicIp", "PublicIp" ]},
"Description" : "Server's PublicIp Address"
},
}
Я прочитал в официальной документации AWS об использовании "Fn:: GetAtt" и попытался реализовать его в своем шаблоне, но при попытке создать стек я получаю следующую ошибку:
Error
Template validation error: Template error: instance of Fn::GetAtt references undefined resource ServerPublicIp
Насколько я понимаю, первая часть в строке GetAtt это логическое имя (которое я могу выбрать?) и второй-это реальный атрибут, как показано на приведенной выше ссылке.
Итак, мой вопрос заключается в том, как отобразить PublicIP сервера в разделе Outputs?
1 ответ:
Предполагая, что у вас есть ресурс экземпляра EC2 в вашем шаблоне с именем
Server
:"Server" : { "Type" : "AWS::EC2::Instance", "Properties" : { } }
Вы выводите публичный IP-адрес, ссылающийся на его имя ресурса:
"Outputs" : { "PublicIp" : { "Value" : { "Fn::GetAtt" : [ "Server", "PublicIp" ]}, "Description" : "Server's PublicIp Address" } }