Cấu hình CloudFormation Tuyến đường 53 chính xác là gì để đặt bí danh tên miền phụ cho các ELB của Môi trường Đàn hồi?Làm thế nào để bí danh một tên miền cho một môi trường cây đậu đàn hồi bằng cách sử dụng CloudFormation?
Tôi đã copy HostedZoneId
s từ bảng Amazon Route 53 Hosted Zone ID để ánh xạ:
"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" }
}
nguồn lực của tôi có hai cây đậu môi trường:
"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" },
[...]
}
},
Đầu ra:
"StageEndpoint" : {
"Description" : "endpoint of the stage environment",
"Value" : { "Fn::GetAtt" : [ "MyStageBeanstalkEnv", "EndpointURL" ] }
},
"ProdEndpoint" : {
"Description" : "endpoint of the production environment",
"Value" : { "Fn::GetAtt" : [ "MyProdBeanstalkEnv", "EndpointURL" ] }
}
Cả hai giai đoạn và các môi trường beanstalk prod đang hoạt động, tức là chúng trả lời các cuộc gọi đến MyStageBeanstalkEnv.eu-west-1.elasticbeanstalk.com
cũng như các điểm cuối được trả về bởi { "Fn::GetAtt" : [ "MyStageBeanstalkEnv", "EndpointURL" ] }
(trông giống như awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com
). Không có gì đáng ngạc nhiên, chứng chỉ không hợp lệ vì tên miền dự kiến là stage.example.com
hoặc prod.example.com
.
Bây giờ tôi cố gắng để thêm Route 53 cấu hình:
"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"
}]
}
},
Khi tôi cố gắng cập nhật các CloudFormation chồng tôi nhận được lỗi sau trong AWS console:
16:12 : 00 UTC + 0200 CREATE_FAILED AWS :: Route53 :: RecordSetGroup ExampleDomainRecordSetGroup Đã cố gắng tạo một bí danh nhắm vào awseb- [abc-123-xyz] .eu-west-1.elb.amazonaws.com., Gõ A trong vùng Z2NYPWQ7DFZAZH, nhưng tên mục tiêu bí danh không nói dối hin khu vực mục tiêu
Trong ngữ cảnh này, awseb-[abc-123-xyz].eu-west-1.elb.amazonaws.com
là cùng một url được cung cấp bởi cây đậu ELB.
Bình luận:
- tôi đã thành công trong việc thiết lập Route bản ghi tài nguyên 53 bí danh cho cây đậu môi trường tương tự trong AWS console sau mô tả To add an alias resource record set in Amazon Route 53, vì vậy nó là "chỉ là" một câu hỏi về việc chuyển các bước cấu hình này cho mẫu CloudFormation.
- Ngăn xếp được triển khai trong
eu-west-1
. - Thay vì sử dụng tài nguyên
AWS::Route53::RecordSetGroup
Tôi cũng đã cố gắng tạo hai tài nguyên riêng biệtAWS::Route53::RecordSet
, nhưng cập nhật ngăn xếp không thành công với cùng một lỗi.
tôi đã chạy vào cùng một vấn đề. Có vẻ như, từ sự hiểu biết của tôi về câu trả lời của bạn, rằng không có cách nào để ánh xạ ID vùng được lưu trữ cho một môi trường EB chưa tồn tại? tức là tôi sẽ phải tạo một CNAME trỏ tới ELB thay vì (vì đó là đầu ra duy nhất tôi có thể lấy từ bên trong mẫu CFN?) Hoặc có cách nào để có được CononicalHostedZoneNameID để tạo ra một bản ghi Alias và bản đồ nó một cách vĩnh viễn, mỗi khu vực cho, các mẫu của tôi? Tôi hỏi, vì Z3NF1Z3NOM5OY2 mà bạn đã kéo bằng CLI dường như không phải là bất kỳ điểm cuối Route53 chuẩn nào mà tài liệu amazon. – Marty
Có cùng một vấn đề. Không thể tin được rằng bạn không thể lấy CanonicalHostedZoneNameId trong mẫu CFN! Vui lòng cập nhật nếu bạn tìm thấy bất kỳ giải pháp nào khác ngoài mã hóa cứng cho mỗi môi trường. –