2017-02-23 37 views
0

我创建通过CloudFormation服务的整个堆栈。 ELB已创建,后来是ELB DNSName的DNS记录集。记录集取决于ELB。Cloudformation:无法创建ELB和DNSRECORD一起

"dns": { 
    "Type": "AWS::Route53::RecordSetGroup", 
    "Properties": { 
    "HostedZoneName": "*******.com.", 
    "RecordSets": [ 
     { 
     "Name": { 
      "Fn::Join": [ 
      "", 
      [ 
       "\\052.", 
       { 
       "Ref": "EnvUrl" 
       }, 
       ".******.com" 
      ] 
      ] 
     }, 
     "Type": "A", 
     "AliasTarget": { 
      "HostedZoneId": "Z3******O77V", 
      "DNSName": {"Fn::GetAtt": [ "elb", "DNSName" ]} 
     } 
     } 
    ] 
    }, 
    "Metadata": { 
    "AWS::CloudFormation::Designer": { 
     "id": "c1513eaa-fdaa-4fef-b50c-bdd178dd0446" 
    } 
    }, 
    "DependsOn": [ 
    "elb" 
    ] 
} 



"elb": { 
     "Type": "AWS::ElasticLoadBalancing::LoadBalancer", 
     "Properties": { 
     "Policies": [ 
      { 
      "PolicyName": "AWSConsole-SSLNegotiationPolicy", 
      "PolicyType": "SSLNegotiationPolicyType", 
      "Attributes": [ 
       { 
       "Name": "Reference-Security-Policy", 
       ....... 

问题是CloudFormation无法创建记录集。错误:

Tried to create an alias that targets ctf21-elb-1huy2****pkn-727***38.eu-central-1.elb.amazonaws.com, 
type A in zone Z3******O77V, but the alias target name does not lie within the target zone 

我相信,这可能是由于它被创建后立即负载平衡器的可用性。就像您手动创建它一样,它不会立即显示在Route53的别名选择字段中,但需要几分钟时间。

我也尝试过使用Fn::Join,相同的输出增加dualstack.-dnsname-

有什么我做错了吗?有什么比我能解决这个问题更好的吗?

回答

1

你ELB区可能是错误的。

在AliasTarget试试这个。

"AliasTarget": { 
      "DNSName": { "Fn::GetAtt": [ "elb", "DNSName" ]}, 
      "HostedZoneId": { "Fn::GetAtt": [ "elb", "CanonicalHostedZoneNameID"]} 
} 
+0

Aaaaah我想我不得不把我的Route53托管区域ID在这里,我没有意识到ELB有另一个托管区域ID本身。我现在会测试。 – zed

+0

太棒了,让我知道它什么时候工作 – Gigapalmer

+0

工作很好。谢谢。 – zed

相关问题