我想创建一个内部众所周知的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名称?
答案 0 :(得分:1)
在别名目标部分,您可以尝试使用Canonical Hosted Zone ID。你是否已经在ebextension中拥有以下内容,或者我错过了什么。
"HostedZoneId" : { "Fn::GetAtt" : ["AWSEBLoadBalancer","CanonicalHostedZoneNameID"] }
答案 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"] } ]
}
}
}