在我嘗試為 API Gateway API 建立邊緣最佳化的自訂網域名稱時,該如何解決 "CNAMEAlreadyExists" 錯誤?

2 分的閱讀內容
0

在我嘗試為 Amazon API Gateway API 建立邊緣最佳化的自訂網域名稱時,出現 "CNAMEAlreadyExists" 錯誤。我該如何解決此問題?

簡短描述

如果出現以下情況,即會發生 "CNAMEAlreadyExists" 錯誤:

  • 您自訂網域名稱的 CNAME 記錄類型已存在,並指向 Amazon CloudFront 分佈。
  • 有一個 CloudFront 分佈設定的備用網域名稱或 CNAME 與您的自訂網域名稱相符。

**注意:**當您在短時間範圍內進行多次自訂網域名稱更新時,收到「請求過多」錯誤的情況並不少見。發生這些錯誤的原因是 CreateDomainName API 的配額較低 (每個帳戶每 30 秒一個請求)。如需詳細資訊,請參閱適用於建立、部署和管理 API 的 API Gateway 配額

**重要:**您不能將同一個 CNAME 記錄用於一個以上 CloudFront 分佈。使用同一個 CNAME 記錄會傳回以下錯誤:

One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl*

若要解決這些錯誤並建立邊緣最佳化的自訂網域名稱,您必須先刪除指向 CloudFront 分佈的現有 CNAME 記錄。

解決方案

確認自訂網域名稱之前是否存在

1.FSP 若要確認自訂網域名稱之前是否存在,請對該網域名稱執行 DNS 查詢命令。

在 Linux、Unix 或 macOS 系統上:

dig abc.example.com +all

在 Windows 上:

nslookup abc.example.com

**注意:**請以您的網域名稱來取代 abc.example.com

2.FSP 如果自訂網域名稱之前已存在並且其 DNS 記錄仍然存在,請使用 dig 來取得輸出中的 CNAME 記錄:

abc.example.comcom. 0        IN    CNAME    d27am47dhauq2.cloudfront.net.

重要:

您必須先刪除此記錄,才能建立自訂網域名稱。

  • 最佳實務是先在開發或測試環境中修改 DNS 設定。手動修改生產 DNS 設定可能會造成停機。
  • 如果輸出顯示 A 記錄 (IPv4 地址) 而不是 CNAME 記錄,則您必須更新該記錄。更新的記錄必須將自訂網域名稱 (A 別名) 指向 CloudFront 分佈。

如果對網域名稱進行了 dig 或 nslookup 並且記錄是 A 別名,請檢查 CloudFront 分佈。請確保 CloudFront 分佈未設定備用網域名稱。如需詳細資訊,請參閱別名與 CNAME 記錄的比較

刪除 CNAME 記錄或更新 CloudFront 分佈

根據您的組態,執行以下一項或兩項作業:

  • 移除指向 CloudFront 分佈的 CNAME 記錄。
  • 更新 CloudFront 分佈並移除備用網域名稱或 CNAME 記錄。

如果您有第三方 DNS 服務供應商,請按照供應商的程序刪除指向 CloudFront 分佈的 CNAME 記錄。

如果您使用 Amazon Route 53,請刪除 Route 53 中指向 CloudFront 的記錄

進行組態變更後,請等待幾分鐘,以讓 DNS 變更生效。然後,重試建立自訂網域名稱。

**注意:**如果您收到 "CNAMEAlreadyExists" 錯誤,請參閱在為 Amazon CloudFront 分佈設定 CNAME 別名時,該如何解決 CNAMEAlreadyExists 錯誤?


相關資訊

如何為 API Gateway API 設定自訂網域名稱?

使用 Amazon API Gateway 和 AWS Lambda 建置多區域無伺服器應用程式

AWS 官方
AWS 官方已更新 2 年前