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

时间:2015-04-24 02:57:41

标签: elastic-beanstalk

我想创建一个内部众所周知的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"] }
        }
      }
    ]
  }
}

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

它没有失败,但也没有工作:在Route53的托管区域没有出现任何内容。

我无法找到有关此内容的有用文档 - 有人能指出我如何使用.ebextensions机制执行此操作的示例吗?或者我应该只是单独编写DNS名称?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

意识到我错误的方式是将特定于环境的资源放入ebextensions中(加上问题中的片段其他一些错误意味着它永远不会起作用)。

这就是我最终得到的用于我的用例的内容。这样我就可以根据环境名称(集成,uat和生产环境的不同,可读和明确命名的URL)获得每个环境的唯一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"] } ]
    }
  }

}