5

लोचदार बीनस्टॉक पर्यावरण ईएलबी के लिए उप-डोमेन नामों के उपनाम के लिए सही रूट 53 क्लाउडफॉर्मेशन कॉन्फ़िगरेशन क्या है?क्लाउडफॉर्मेशन का उपयोग कर एक लोचदार बीनस्टॉक पर्यावरण के लिए डोमेन नाम को उपनाम कैसे करें?

मैं मैपिंग के Amazon Route 53 Hosted Zone ID मेज से HostedZoneId रों की नकल की है:

"MyBeanstalkConfig": { 
    "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate", 
    "Properties": { 
    "OptionSettings": { 
     { "Namespace": "aws:elb:listener:80", "OptionName": "ListenerEnabled", "Value" : "false" }, 
     { "Namespace": "aws:elb:listener:443", "OptionName": "ListenerEnabled", "Value" : "true" }, 
     { "Namespace": "aws:elb:listener:443", "OptionName": "InstancePort", "Value" : "8081" }, 
     { "Namespace": "aws:elb:listener:443", "OptionName": "ListenerProtocol", "Value" : "HTTPS" }, 
     { "Namespace": "aws:elb:listener:443", "OptionName": "SSLCertificateId", "Value" : "arn:aws:iam::[accountNbr]:server-certificate/example-cert-name" }, 
     [...] 
    } 
    } 
}, 

"MyStageBeanstalkEnv": { 
    "Type": "AWS::ElasticBeanstalk::Environment", 
    "Properties": { 
    "Description": "Stage Environment", 
    "TemplateName": { "Ref": "MyBeanstalkConfig" }, 
    [...] 
    } 
}, 

"MyProdBeanstalkEnv": { 
    "Type": "AWS::ElasticBeanstalk::Environment", 
    "Properties": { 
    "Description": "Production Environment", 
    "TemplateName": { "Ref": "MyBeanstalkConfig" }, 
    [...] 
    } 
}, 

आउटपुट:

"StageEndpoint" : { 
    "Description" : "endpoint of the stage environment", 
    "Value" : { "Fn::GetAtt" : [ "MyStageBeanstalkEnv", "EndpointURL" ] } 
}, 
"ProdEndpoint" : { 
    "Description" : "endpoint of the production environment", 
    "Value" : { "Fn::GetAtt" : [ "MyProdBeanstalkEnv", "EndpointURL" ] } 
} 

दोनों चरण

"Beanstalk2Route53HostedZoneId" : { 
    "us-east-1"  : { "HostedZoneId": "Z117KPS5GTRQ2G" }, 
    "us-west-1"  : { "HostedZoneId": "Z1LQECGX5PH1X" }, 
    "us-west-2"  : { "HostedZoneId": "Z38NKT9BP95V3O" }, 
    "eu-west-1"  : { "HostedZoneId": "Z2NYPWQ7DFZAZH" }, 
    "eu-central-1" : { "HostedZoneId": "Z1FRNW7UH4DEZJ" }, 
    "ap-northeast-1" : { "HostedZoneId": "Z1R25G3KIG2GBW" }, 
    "ap-northeast-2" : { "HostedZoneId": "Z3JE5OI70TWKCP" }, 
    "ap-southeast-1" : { "HostedZoneId": "Z16FZ9L249IFLT" }, 
    "ap-southeast-2" : { "HostedZoneId": "Z2PCDNR3VC2G1N" }, 
    "sa-east-1"  : { "HostedZoneId": "Z10X7K2B4QSOFV" } 
} 

मेरे संसाधनों दो बीनस्टॉक वातावरण है और प्रोड बीनस्टॉक वातावरण काम कर रहे हैं, यानी वे MyStageBeanstalkEnv.eu-west-1.elasticbeanstalk.com पर कॉल के जवाब के साथ-साथ { "Fn::GetAtt" : [ "MyStageBeanstalkEnv", "EndpointURL" ] } (जो awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com जैसा दिखता है) द्वारा दिए गए अंतराल का जवाब दें। अनजाने में, प्रमाण मान्य नहीं है क्योंकि यह डोमेन नाम या तो stage.example.com या prod.example.com होने की अपेक्षा करता है।


अब मैं रूट 53 विन्यास जोड़ने का प्रयास:

"ExampleDomainHostedZone": { 
    "Type" : "AWS::Route53::HostedZone", 
    "Properties" : { 
    "Name" : "example.com" 
    } 
}, 

"ExampleDomainRecordSetGroup" : { 
    "Type" : "AWS::Route53::RecordSetGroup", 
    "Properties" : { 
    "HostedZoneId" : { "Ref": "ExampleDomainHostedZone" }, 
    "RecordSets" : [{ 
     "AliasTarget" : { 
     "DNSName" : { "Fn::GetAtt" : ["MyStageBeanstalkEnv", "EndpointURL"] }, 
     "EvaluateTargetHealth" : false, 
     "HostedZoneId" : { "Fn::FindInMap" : [ "Beanstalk2Route53HostedZoneId", {"Ref" : "AWS::Region"}, "HostedZoneId" ]} 
     }, 
     "Name" : "stage.example.com", 
     "Type": "A" 
    }, 
    { 
     "AliasTarget" : { 
     "DNSName" : { "Fn::GetAtt" : ["MyProdBeanstalkEnv", "EndpointURL"] }, 
     "EvaluateTargetHealth" : false, 
     "HostedZoneId" : { "Fn::FindInMap" : [ "Beanstalk2Route53HostedZoneId", {"Ref" : "AWS::Region"}, "HostedZoneId" ]} 
     }, 
     "Name" : "prod.example.com", 
     "Type": "A" 
    }] 
    } 
}, 

जब मैं CloudFormation ढेर मैं एडब्ल्यूएस कंसोल में निम्न त्रुटि प्राप्त अद्यतन करने का प्रयास:

16:12 : 00 यूटीसी + 0200 CREATE_FAILED AWS :: रूट 53 :: रिकॉर्डसेट समूह उदाहरणडोमेन रिकॉर्डरसेट समूह ने उपनाम को लक्षित करने का प्रयास किया- [abc-123-xyz] .eu-west-1.elb.amazonaws.com।, ज़ोन Z2NYPWQ7DFZAZH में ए टाइप करें, लेकिन उपनाम लक्ष्य नाम बुद्धि नहीं झूठ बोलता है हिन लक्ष्य क्षेत्र

इस संदर्भ में, awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com बीनस्टॉक ईएलबी द्वारा प्रदान किया गया वही यूआरएल है।


टिप्पणियाँ:

  • मैं सफलतापूर्वक वर्णन To add an alias resource record set in Amazon Route 53 निम्नलिखित सेटअप रूट 53 उर्फ ​​संसाधन एडब्ल्यूएस कंसोल में एक ही बीनस्टॉक वातावरण को रिकॉर्ड में कामयाब रहे, तो यह "बस" हस्तांतरण के बारे में एक सवाल है क्लाउडफॉर्मेशन टेम्पलेट में ये कॉन्फ़िगरेशन चरण।
  • ढेर eu-west-1 में तैनात किया गया है।
  • AWS::Route53::RecordSetGroup संसाधन का उपयोग करने के बजाय मैंने दो अलग AWS::Route53::RecordSet संसाधन बनाने की भी कोशिश की है, लेकिन स्टैक अपडेट एक ही त्रुटि के साथ विफल रहा है।

उत्तर

5

कुछ Googling संकेत दिया है कि (1, 2) Amazon Route 53 Hosted Zone ID जब उर्फ ​​को विन्यस्त नहीं किया जा सकता। यह कहा गया है कि eu-west-1 में elasticbeanstalk.eu-west-1.amazonaws.com एंडपॉइंट के लिए होस्टेड जोन आईडी Z2NYPWQ7DFZAZH है। हालांकि, जब दोबारा जांच क्या बीनस्टॉक वास्तव में एडब्ल्यूएस CLI का उपयोग करके जनरेट की ईएलबी विन्यास मैंने पाया कि:

$ aws elb describe-load-balancers --region eu-west-1 
{ 
    "LoadBalancerDescriptions": [ 
     { 
      [...] 
      "CanonicalHostedZoneNameID": "Z3NF1Z3NOM5OY2", 
      "CanonicalHostedZoneName": "awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com", 
     } 
    ] 
} 

दूसरे शब्दों में, की मेजबानी क्षेत्र नाम आईडी अलग है।इसके अलावा, CanonicalHostedZoneName में DNSName के बराबर है, यानी awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com, जो में elasticbeanstalk.eu-west-1.amazonaws.com के समान अंतराल नहीं है। नतीजतन, मैं CanonicalHostedZoneNameID CLI उत्पादन से प्रदान की जाती शामिल करने के लिए मैपिंग बदल दिया है:

"Beanstalk2Route53HostedZoneId" : { 
    "eu-west-1" : { "HostedZoneId": "Z3NF1Z3NOM5OY2" } 
} 

अब ढेर सफलतापूर्वक अपडेट कर दिया जा सकता है। अफसोस की बात केवल eu-west-1 के लिए, लेकिन अगर मैं अन्य क्षेत्रों में ढेर तैनात करता हूं तो प्रक्रिया को अपडेट किया जा सकता है।

स्टैक अद्यतन होने के बाद, अभी भी DNS नामों (stable.example.com और unstable.example.com) से कोई प्रतिक्रिया नहीं मिली थी। Updating Your Registrar's Name Servers उस समस्या को हल किया।

+0

मैं एक ही समस्या में पड़ गए हैं। ऐसा लगता है कि, आपके उत्तर की मेरी समझ से, कि एक ईबी पर्यावरण के लिए होस्टेड जोन आईडी को मैप करने का कोई तरीका नहीं है जो पहले से मौजूद नहीं है? यानी मुझे केवल एक सीएनएन बनाना होगा जो इसके बजाय ईएलबी को इंगित करता है (क्योंकि यह केवल एकमात्र आउटपुट है जिसे मैं सीएफएन टेम्पलेट के भीतर से प्राप्त कर सकता हूं?) या कोई उपनाम रिकॉर्ड और मानचित्र बनाने के लिए CononicalHostedZoneNameID प्राप्त करने का कोई तरीका है यह एक स्थायी तरीके से, मेरे क्षेत्र के लिए प्रति क्षेत्र? मैं पूछता हूं, क्योंकि सीएलआई के साथ खींचा गया Z3NF1Z3NOM5OY2 ऐसा कोई मानक रूट 53 एंडपॉइंट नहीं है जो अमेज़ॅन दस्तावेज़ है। – Marty

+0

एक ही समस्या होने के बाद। अविश्वसनीय है कि आप CFN टेम्पलेट में CanonicalHostedZoneNameId नहीं प्राप्त कर सकते हैं! अगर आपको प्रति माह हार्ड-कोडिंग से अलग कोई अन्य समाधान मिल जाए तो कृपया अपडेट करें। –

1

मुझे क्लाउडफ्रंट के लिए रूट 53 एलियास के साथ एक ही समस्या थी। मैं HostedZOneId मानचित्रण का निर्माण, लेकिन यह खोज एडब्ल्यूएस प्रलेखन द्वारा मेरे लिए काम नहीं किया, मैं इस लगता है:

की मेजबानी क्षेत्र आईडी।

लोड बैलेंसर्स के लिए लोड लोडर के कैननिकल होस्टेड जोन आईडी का उपयोग करें।

अमेज़ॅन एस 3 के लिए, अपनी बाल्टी की वेबसाइट एंडपॉइंट के लिए होस्टेड जोन आईडी का उपयोग करें।

क्लाउडफ्रंट के लिए, Z2FDTNDATAQYW2 का उपयोग करें।

अन्य सेवाओं की होस्टेड जोन आईडी की सूची के लिए, एडब्ल्यूएस क्षेत्र और एंडपॉइंट्स में प्रासंगिक सेवा देखें।

तो मैं सिर्फ यह हार्ड-कोडेड:

"AliasTarget": { 
    "HostedZoneId": "Z2FDTNDATAQYW2", 
    "DNSName": { 
     "Fn::GetAtt": ["MyCloudFrontDistribution", "DomainName"] 
    } 
} 

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html

संबंधित मुद्दे