使用Ruby AWS SDK为Cloudfront分配创建Route53别名
问题描述:
我试图自动创建由Route53管理的DNS服务的S3支持的CloudFront缓存网站。使用Ruby AWS SDK为Cloudfront分配创建Route53别名
我可以使用静态网站托管创建S3存储桶,并且我知道如何创建CloudFront分配和Route53记录,但创建作为CloudFront分配的别名的Route53记录时,需要提供“托管区域ID“ - Route53接口没有发现问题,但我无法弄清楚如何使用AWS SDK来获取这些信息。
这是我有:
def create_cf(domain)
AWS::CloudFront.new.client.create_distribution distribution_config: createOptions(domain)
end
def create_r53(cfdistro, domain)
target = {
hosted_zone_id: cfdistro.id,
dns_name: cfdistro.domain_name,
evaluate_target_health: false
}
AWS::Route53.new.hosted_zones[myzone].rrsets.create "#{domain}.", 'A',
alias_target: target
end
不幸的是,本场id
从create_distribution
(或get_distribution
)返回是什么CloudFront的控制台显示为分布的ID,而不是什么Route53的控制台显示,当我选择CloudFront分配作为别名目标。我实际上找不到在CloudFront控制台中找到托管区域ID的位置!
答
好的,这很愚蠢 - 如AWS Route53 documentation中所记录,所有CloudFront分布托管在ID为Z2FDTNDATAQYW2
的区域中。
“托管区域ID”(我在进一步阅读后发现)是Route53区域的加密标识符。亚马逊公司在其文档中发布了公有AWS域(例如cloudfront.net)的Route53区域ID,完全是为了这个目的。
做我上面的代码应该是:
def create_r53(cfdistro, domain)
target = {
hosted_zone_id: 'Z2FDTNDATAQYW2',
dns_name: cfdistro.domain_name,
evaluate_target_health: false
}
AWS::Route53.new.hosted_zones[myzone].rrsets.create "#{domain}.", 'A',
alias_target: target
end