

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立 Amazon Route 53 和 Route 53 VPC Resolver 資源 AWS CloudFormation
<a name="creating-resources-with-cloudformation"></a>

Amazon Route 53 和 Route 53 VPC Resolver 已與 整合 AWS CloudFormation，此服務可協助您模型化和設定 AWS 資源，以減少建立和管理資源和基礎設施的時間。您可以建立範本來描述您想要的所有 AWS 資源，並為您 CloudFormation 佈建和設定這些資源。

使用 時 CloudFormation，您可以重複使用範本來一致且重複地設定 Route 53 和 VPC Resolver 資源。描述您的資源一次，然後在多個 AWS 帳戶 和 區域中逐一佈建相同的資源。

## Route 53、VPC Resolver 和 CloudFormation 範本
<a name="working-with-templates"></a>

若要佈建和設定 Route 53、VPC Resolver 和相關服務的資源，您必須了解 [CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。範本是以 JSON 或 YAML 格式化的文本檔案。這些範本說明您要在 CloudFormation 堆疊中佈建的資源。如果您不熟悉 JSON 或 YAML，您可以使用 CloudFormation 設計工具來協助您開始使用 CloudFormation 範本。如需詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[什麼是 CloudFormation 設計工具？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer.html)。

Route 53 支援在 中建立下列資源類型 CloudFormation：
+ `AWS::Route53::DNSSEC`
+ `AWS::Route53::HealthCheck`
+ `AWS::Route53::HostedZone`
+ `AWS::Route53::KeySigningKey`
+ `AWS::Route53::RecordSet`
+ `AWS::Route53::RecordSetGroup`

 如需更多詳細資訊 (包括 Route 53 資源的 JSON 和 YAML 範本範例)，請參閱 *AWS CloudFormation 使用者指南*中的 [Amazon Route 53 資源類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53.html)。

VPC Resolver 支援在 中建立下列資源類型 CloudFormation：
+ `AWS::Route53Resolver::FirewallDomainList`
+ `AWS::Route53Resolver::FirewallDomainList`
+ `AWS::Route53Resolver::FirewallRuleGroupAssociation`
+ `AWS::Route53Resolver::ResolverDNSSECConfig`
+ `AWS::Route53Resolver::ResolverEndpoint`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfig`
+ `AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation`
+ `AWS::Route53Resolver::ResolverRule`
+ `AWS::Route53Resolver::ResolverRuleAssociation`

 如需詳細資訊，包括 VPC Resolver 資源的 JSON 和 YAML 範本範例，請參閱*AWS CloudFormation 《 使用者指南*》中的 [Route 53 VPC Resolver 資源類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53Resolver.html)。

## Route 53 和 的最佳實務 CloudFormation
<a name="cloudformation-route53-best-practices"></a>

使用 CloudFormation 管理 Route 53 資源時，請遵循這些最佳實務，以避免常見問題並確保可靠的部署。

### 了解最終一致性
<a name="cloudformation-route53-eventual-consistency"></a>

Route 53 使用最終一致模型進行 DNS 變更。這可能會影響 CloudFormation 操作，尤其是在復原和快速連續變更期間。

**重要**  
當 CloudFormation 嘗試轉返 DNS 記錄變更時，轉返可能會因為 Route 53 最終一致性模型而失敗。如果 CloudFormation 嘗試重新建立最近刪除但由於最終一致性而仍然存在的記錄，您可能會遇到讓 DNS 處於中斷狀態的`InvalidChangeBatch`錯誤。

若要將與最終一致性相關的問題降至最低：
+ **仔細規劃變更** - 避免對相同的 DNS 記錄進行快速的連續變更
+ **先在非生產環境中測試** - 一律先測試開發環境中的 DNS 變更，再套用到生產環境
+ **監控部署** - 在 DNS 相關部署期間密切監控 CloudFormation 堆疊事件。如需監控指引，請參閱 [監控 Amazon Route 53](monitoring-overview.md)。
+ **準備好轉返程序** - 在自動轉返失敗時準備手動復原程序

### DNS 記錄排序和邏輯 IDs
<a name="cloudformation-route53-record-ordering"></a>

在 中建立多個 DNS 記錄時 CloudFormation，請注意記錄排序和邏輯 ID 指派。

**警告**  
如果您在 CloudFormation 範本的陣列或清單中定義 DNS 記錄，在清單中間插入新記錄可能會導致 CloudFormation 將邏輯 IDs 重新指派給現有記錄。這會觸發記錄可能導致服務中斷和轉返失敗的替換。

DNS 記錄管理的最佳實務：
+ **使用明確邏輯 IDs** - 一律將明確、有意義的邏輯 IDs 指派給 DNS 記錄，而不是依賴陣列索引。如需邏輯 IDs CloudFormation 的詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的[資源區段結構](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html) 
+ **附加新記錄** - 將新 DNS 記錄新增至現有清單時，請將它們附加到結尾，而不是插入中間
+ **群組相關記錄** - 考慮使用 `AWS::Route53::RecordSetGroup` 一起管理相關記錄。如需詳細資訊，請參閱*AWS CloudFormation 《 使用者指南*》中的 [AWS::Route53::RecordSetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html)。
+ **檢閱變更集** - 一律在部署之前檢閱 CloudFormation 變更集，以識別非預期的記錄替換。如需詳細資訊，請參閱*《AWS CloudFormation 使用者指南》*中的[使用變更集更新堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets.html)。

### 處理轉返失敗
<a name="cloudformation-route53-rollback-failures"></a>

如果 CloudFormation 轉返因 DNS 相關問題而失敗，您可能需要執行手動復原。

**從失敗的 DNS 復原執行手動復原**

1. 透過檢閱 CloudFormation 堆疊事件和 Route 53 託管區域記錄來識別失敗的 DNS 記錄

1. 透過 Route 53 主控台或 API 手動建立或更新缺少的 DNS 記錄。如需建立記錄的資訊，請參閱 [處理記錄](rrsets-working-with.md)。

1. DNS 還原後，請更新您的 CloudFormation 範本以符合目前狀態

1. 部署修正後的範本，以 CloudFormation 恢復與實際資源的同步

若要防止轉返失敗：
+ 避免在高流量期間進行可能觸發 DNS 記錄取代的變更
+ 實作運作狀態檢查和監控，以快速偵測 DNS 問題。如需運作狀態檢查的資訊，請參閱 [建立和更新運作狀態檢查](health-checks-creating.md)。
+ 考慮使用藍綠部署策略進行關鍵 DNS 變更。如需部署最佳實務的詳細資訊，請參閱 [Amazon Route 53 的最佳實務](best-practices.md)。
+ 記錄手動 DNS 復原的緊急程序

## 進一步了解 CloudFormation
<a name="learn-more-cloudformation"></a>

若要進一步了解 CloudFormation，請參閱下列資源：
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [AWS CloudFormation 使用者指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [CloudFormation API 參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/Welcome.html)
+ [AWS CloudFormation 命令列界面使用者指南](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html)