我正在我的cloudformation中创建一些DNS条目。有一个参数被传递到cfn脚本中,这将导致创建一个Route53条目,如hostname-test.example.com:
"Host" : {
"Type" : "AWS::Route53::RecordSetGroup",
"Properties" : {
"HostedZoneName" : "example.com.",
"RecordSets" : [
{
"Name" : {
"Fn::Join" : [ "-", [
{"Ref" : "Hostname" },
"test.example.com"
]]
},
"Type" : "A",
"AliasTarget" : {
"DNSName" : { "Fn::GetAtt" : [ "PublicWebLoadBalancer", "CanonicalHostedZoneName" ] },
"HostedZoneId" : { "Fn::GetAtt" : [ "PublicWebLoadBalancer", "CanonicalHostedZoneNameID" ] }
}
}
]
}
}
在我的输出中,我想从RecordSet获取Name属性,但我不知道如何引用它。根据Fn::GetAtt documentation,不支持Route53对象。
这个是可能的吗?
发布于 2017-07-29 01:46:46
这个问题有点老了,但我刚刚遇到了同样的问题。您需要输出整个RecordSet,即:
"Outputs" : {
"MyDNSRecord" : {
"Description": "The DNS Record of ...",
"Value" : { "Ref": "MyRecordSet" }
}
}
它(不直观地)输出您正在查找的记录集名称的值。
发布于 2018-07-31 06:15:49
我也有同样的问题,并在yaml中寻找一个明确的答案。
给定以下AWS::Route53::RecordSet
rPublicReverseProxyNLBDnsRecord:
Type: AWS::Route53::RecordSet
Properties:
HostedZoneName: !Ref pPublicHostedZoneName
Comment: !Sub 'DNS record for the ${AWS::StackName} ELB front door.'
Name: !Sub '${pDeploymentType}.${pPublicHostedZoneName}'
Type: CNAME
TTL: '30'
ResourceRecords:
- !GetAtt rPublicReverseProxyNLB.DNSName
我能够使用以下输出部分代码输出我想要的应用程序URL:
Outputs:
ApplicationURL:
Description: 'The public URL for the application'
Value: !Sub 'https://${rPublicReverseProxyNLBDnsRecord}/'
发布于 2015-02-04 06:02:49
不要将RecordSet嵌入到RecordSetGroup中,而是将其定义为一个单独的属性,并使用与您的RecordSetGroup相同的HostedZoneName。
然后可以使用"Ref“来获取Name属性的值。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html
https://stackoverflow.com/questions/28280388
复制相似问题