1

我試圖自動創建由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 

不幸的是,本場idcreate_distribution(或get_distribution)返回是什麼CloudFront的控制檯顯示爲分佈的ID,而不是什麼Route53的控制檯顯示,當我選擇CloudFront分配作爲別名目標。我實際上找不到在CloudFront控制檯中找到託管區域ID的位置!

回答

2

好的,這很愚蠢 - 如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 
相關問題