如何为我的 beantalk 环境创建 Route53 DNS 记录?

How do I creating a Route53 DNS record for my beanstalk environment?

我想创建一个内部众所周知的 dns 名称,它指向我的(内部 ELBScheme)弹性 beanstalk 环境的 ELB,该环境托管内部 REST API。

我尝试添加如下所示的 .ebextensions 条目:

"eb-env-dns-name" : {
  "Type" : "AWS::Route53::RecordSetGroup",
  "Properties" : {
    "HostedZoneName" : "mydomain.com.",
    "Comment" : "alias targeted to elastic beanstalk LoadBalancer.",
    "RecordSets" : [
      {
        "Name" : "eb-env.mydomain.com.",
        "Type" : "A",
        "AliasTarget" : {
            "HostedZoneId" : "ABC123XYZ",
            "DNSName" : { "Fn::GetAtt" : ["AWSEBLoadBalancer","DNSName"] }
        }
      }
    ]
  }
}

我的想法是,我可以通过对域 "eb-env.mydomain.com" 进行 REST 调用来访问我的内部应用程序。

它没有失败,但也没有用:我在 Route53 上的托管区域中没有显示任何内容。

我找不到关于这些东西的有用文档 - 谁能给我举个例子,说明我如何使用 .ebextensions 机制来做到这一点?还是我应该单独编写 DNS 名称脚本?

在别名目标部分,您可以尝试使用 Canonical Hosted Zone ID。您是否已经在 ebextension 中拥有以下内容,或者我遗漏了什么。

"HostedZoneId" : { "Fn::GetAtt" : ["AWSEBLoadBalancer","CanonicalHostedZoneNameID"] }

文档:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html

意识到我将以错误的方式将特定于环境的资源放入 ebextensions(加上问题中的代码片段的其他一些错误意味着它永远无法工作)。

这就是我最终得到的适用于我的用例的东西。这样我就可以根据环境名称(不同的、可读的和明显命名的 url,用于集成、uat 和生产环境)为每个环境获得一个唯一的 URL。

Resources: {
  "dnsResourceNname" : {
    "Type" : "AWS::Route53::RecordSet",
    "Properties" : {
      "HostedZoneName" : "mydomain.com.",
      "Comment" : "DNS name for envornment ELB.",
      "Name" : {
        "Fn::Join" : [ "", [
          { "Ref" : "AWSEBEnvironmentName" },
          ".mydomain.com."
        ] ]
      },
      "Type" : "CNAME",
      "TTL" : "900",
      "ResourceRecords" : [ { "Fn::GetAtt" : ["AWSEBLoadBalancer","DNSName"] } ]
    }
  }

}