AWS CloudFormation模板将IP地址添加到Route 53记录,而不是URL

时间:2016-07-18 10:23:20

标签: amazon-web-services amazon-cloudformation amazon-route53 amazon-elastic-beanstalk

我正在使用Amazon Web Services CloudFormation解决方案来创建数据库(RDS),一些服务器(ElasticBeanstalk),并添加一些DNS条目(Route 53)。

我用于此的模板运行正常,除了DNS(CNAME)记录外,所有服务都是根据需要创建的。

要获取要添加的CNAME记录的值,我正在使用Fn::GetAtt,并抓取ElasticBeanstalk对象的EndpointURLAmazon docs表明这个骗局 -

  

此环境的LoadBalancer的URL。

     

示例:awseb-myst-myen-132MQC4KRLAMD-1371280482.us-east-1.elb.amazonaws.com

然而,问题在于它取而代之的是获取IP地址。因此,CNAME失败了。

之前有没有人遇到过这个问题,如果是的话,有什么工作?

以下是我的模板的相关摘录 -

"RecordSetObject": {
  "Type": "AWS::Route53::RecordSet",
  "Properties": {
    "HostedZoneId": "Q1W2E3R4T5Y6U7",
    "Name": {
      "Fn::Join": [
        "",
        [
          { "Ref": "EnvironmentName" },
          "-",
          { "Ref": "ApplicationName" },
          ".",
          "super.secret.url",
          "."
        ]
      ]
    },
    "ResourceRecords": [
      {
        "Fn::GetAtt": [
          "EBObjectName",
          "EndpointURL"
        ]
      }
    ],
    "Type": "CNAME",
    "TTL": "300"
  }
}

1 个答案:

答案 0 :(得分:0)

据我所知,这只发生在Beanstalk环境类型为' single instance'时,即CloudFormation模板中存在以下内容时:

var socket = io.connect();

socket.on('mySocket', function (data) {
    console.log(data);
});

AWS docs州:

  

在单实例环境中,elasticbeanstalk.com子域解析为附加到运行应用程序的实例的弹性IP地址。

似乎很奇怪router.post('/updatePage', function (req, res, next){ //send to the view res.io.emit("mySocket", { device: device }); }); 并不会返回elasticbeanstalk.com子域,这可能是CloudFormation问题。