Elastic Beanstalk Environment ELBにサブドメイン名をエイリアスする正しいRoute 53 CloudFormation設定は何ですか?CloudFormationを使用してElastic Beanstalk環境にドメイン名をエイリアスする方法は?
私はマッピングにAmazon Route 53 Hosted Zone IDテーブルからHostedZoneId
Sをコピーした:
"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" }
}
私のリソースは2つのBeanstalkの環境を持っていますprod Beanstalk環境が動作しています。つまり、 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
のいずれかであることが予想されるため、証明書は無効です。私はCloudFormationスタックを更新しようとすると
"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"
}]
}
},
私はAWSコンソールで次のエラーを取得する:
16時12
今、私はルート53の構成を追加しよう:00 UTC + 0200 CREATE_FAILED AWS :: Route53 :: RecordSetGroup ExampleDomainRecordSetGroup awseb- [abc-123-xyz] .eu-west-1.elb.amazonaws.com。をターゲットとするエイリアスを作成しようとしましたが、ゾーンZ2NYPWQ7DFZAZHにAと入力し、エイリアスのターゲット名は気が付いていません目標ゾーン内にある
ここで、awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com
は、Beanstalk ELBが提供するのと同じURLです。
コメント:
- 私が正常に説明To add an alias resource record set in Amazon Route 53以下AWSコンソールで同じ豆の木環境にセットアップルート53のエイリアスリソースレコードを管理しているので、それは転送について「単なる」質問ですこれらの設定手順はCloudFormationテンプレートに適用されます。
- スタックは
eu-west-1
に配置されています。 AWS::Route53::RecordSetGroup
リソースを使用する代わりに、2つの別々のAWS::Route53::RecordSet
リソースを作成しようとしましたが、同じエラーでスタックの更新に失敗しました。
私は同じ問題に遭遇しました。あなたの答えを理解してから、すでに存在していないEB環境用のホストゾーンIDをマップする方法はないようですね。つまり、代わりにELBを指すCNAMEを作成する必要があります(これはCFNテンプレートから取得できる唯一の出力です) または、CononicalHostedZoneNameIDを取得してエイリアスレコードとマップを作成する方法はありますか恒久的な方法で、私のテンプレートのための領域ごとに? あなたがCLIで引っ張ったZ3NF1Z3NOM5OY2は、amazonドキュメントの標準Route53エンドポイントではないようです。 – Marty
同じ問題があります。 CanonicalHostedZoneNameIdをCFNテンプレートで取得できないと信じられないほどです!環境ごとにハードコーディングを除いて他の解決策が見つかった場合は、更新してください。 –