【问题标题】:Use Route53 template in cloudformation with Cloudfront通过 Cloudfront 在 cloudformation 中使用 Route53 模板
【发布时间】:2020-10-27 23:51:23
【问题描述】:
"DNS": {
           "Type": "AWS::Route53::RecordSet",
           "Properties": {
             "HostedZoneId" : "Z058101PST6709",
             "RecordSets" : [{
                    "Name" : {
                        "Ref": "AlternateDomainNames"
                    },
                    "Type" : "CNAME",
                    "TTL" : "900",
                    "ResourceRecords" : {
                        "Ref": "myDistribution"
                    },
                    "Weight" : "140"
                }]
           }
        }

您好团队,我将使用 cloudfront 创建一个 route53 记录,请找到 cloud-formation 代码,我在创建堆栈时遇到错误。基本上我想通过使用云端域名创建一个 CNAME 记录。请帮帮我。

【问题讨论】:

  • 你遇到了什么错误?

标签: json linux amazon-web-services amazon-cloudformation devops


【解决方案1】:

您可以使用以下模板

"DNS": {
    "Type": "AWS::Route53::RecordSet",
    "Properties": {
        "HostedZoneId": "Z058101PST6709",
        "Name": {
            "Ref": "AlternateDomainNames"
        },
        "ResourceRecords": [{ "Fn::GetAtt": ["myDistribution", "DomainName"] }],
        "TTL": "900",
        "Type": "CNAME"
    }
}

我应该提出,当您使用 Route 53 时,您应该利用 Alias records 而不是 CNAME 记录来进行 CloudFront 分配。

这可以通过以下方式完成。

{
    "Type": "AWS::Route53::RecordSetGroup",
    "Properties": {
        "HostedZoneId": "Z058101PST6709",
        "RecordSets": [{
            "Name": {
                "Ref": "AlternateDomainNames"
            },
            "Type": "A",
            "AliasTarget": {
                "HostedZoneId": "Z2FDTNDATAQYW2",
                "DNSName": { "Fn::GetAtt": ["myDistribution", "DomainName"] }
            }
        }]
    }
}

【讨论】:

  • 感谢您的回复 Chris,但我想这不会创建记录,因为我的域是 abc.test.codavel.com,我已经创建了一个名为 test.codavel.com 的托管区域在 Route53。所以现在我需要创建一个 CNAME 而不是 A 记录。如果我错了,请纠正我?
  • 使用您的模板出现此错误 [试图创建一个以 e3o310paksk5wq. 为目标的别名,在 Z2FDTNDATAQYW2 区域中键入 A,但别名目标名称不在目标区域内]
  • myDistribution 应该是 CloudFront 域名@shubhamkamboj :)。这个托管区域绝对是云端:docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… :)。而使用别名的 A 记录实际上表现出与 CNAME 类似的行为,不同之处在于它使用 IP 地址而不是 AWS 资源主机名更新记录。您也可以将它用于子域,实际上它是首选方式
  • "Resources": { "myDistribution": { "Type": "AWS::CloudFront::Distribution", "Properties": { .......... 这是我的云端模板,这就是我使用这个(myDistribution)的原因。所以想检查一下我应该使用这个 myDistribution 还是有什么替代方法?
  • 你想像这样使用Fn::GetAtt{ "Fn::GetAtt": ["myDistribution", "DomainName"] }
猜你喜欢
  • 2020-12-02
  • 1970-01-01
  • 2016-04-12
  • 2017-05-12
  • 2019-05-03
  • 2018-11-27
  • 2017-08-08
  • 2017-06-26
  • 2018-03-17
相关资源
最近更新 更多