我编写了一个CloudFormation模板,可以创建一个Linux Docker主机。
我希望在“Outputs”部分显示该机器的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行中的第一部分是一个逻辑名称(我可以选择?),第二部分是上面链接中显示的实际属性。
那么我的问题是如何在Outputs部分中显示服务器的PublicIP?
ServerPublicIp
应该是您的 EC2 实例资源的名称,就像Server
是您的ServerAddress
输出的名称一样。 - Matt Houser