我有一个创建EC2实例并设置一些警报的cloudformation脚本。我想在同一个CloudFormation中为这个实例添加一个Route53记录,但是我在弄清楚在资源记录字段中放置什么内容时遇到问题。是否可以将新创建的EC2实例的IP地址引用到AWS::Route53::RecordSetGroup?的ResourceRecord字段中
我已经尝试过使用"ResourceRecords":"EC2Instance"
,但这导致我“遇到了不支持的属性类型”。除了在创建后手动设置DNS条目之外,我不知道如何完成此操作,但我希望在一个步骤中完成,以便自动完成。
这就是我所拥有的:
"Resources": {
"EC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {"ImageId": {
"Ref": "AMI"
},
"IamInstanceProfile": {
"Ref": "InstanceProfile"
},
"InstanceType": {
"Ref": "InstanceSize"
},
"BlockDeviceMappings": [{
"DeviceName": "/dev/xvda",
"Ebs": {
"Encrypted": true,
"VolumeSize": 100,
"DeleteOnTermination": false
}
}]
}
},
"DNS": {
"Type": "AWS::Route53::RecordSetGroup",
"Properties": {
"HostedZoneName": {"Ref": "HostedZoneName"},
"Comment": "Alias Record",
"ResourceRecords":"EC2Instance",
"Type": "A",
"Name": {"Fn::Join" : ["",[{"Ref": "ComponentDNSName"},{"Ref": "HostedZoneName"}]]}
}
}
},
我希望有某种方法可以找到新创建的EC2实例的IP,但我不确定如何找到。我想我必须使用弹性IP,但我仍然不知道如何引用它。感谢您的帮助或建议。
发布于 2019-05-30 08:16:25
来自AWS::EC2::Instance - AWS CloudFormation
Fn::GetAtt
Fn::GetAtt
内部函数返回此类型的指定属性的值。以下是可用的属性和示例返回值。
PrivateIp
指定实例的内网IP地址。例如: 10.24.34.0。
所以,它应该是这样的:
{ "Fn::GetAtt" : [ "EC2Instance", "PrivateIp" ] }
https://stackoverflow.com/questions/56365898
复制相似问题