Amazon-Web-Services

AWS API Gateway 自定義域:您提供的域已與現有 CloudFront 分配相關聯

  • September 12, 2021

我只是嘗試在 API Gateway 中設置自定義域。我有 ACM 證書“*.mysite.com.au”,目前用於通過 CloudFront 在“beta.mysite.com.au”提供靜態 S3 網站。我希望使用此證書為“api.mysite.com.au”創建一個自定義域。

但是,我在 AWS API Gateway 控制台中收到以下錯誤:

您提供的域名已與現有 CloudFront 分配相關聯。從現有 CloudFront 分配中刪除域名或使用其他域名。如果您擁有此域名並且未在現有 CloudFront 分配中使用它,請聯繫支持人員。

我目前沒有在 CloudFront 分配中使用“api.mysite.com.au”。所以我迷路了。有沒有人遇到過這個問題?如果是這樣,我該如何解決它?

提前致謝,

緊張的

有三種,也許是四種可能性:

  • 您實際上已在 CloudFront 中將此域配置為備用域名 - 在此 AWS 賬戶或其他賬戶中,但您忘記了它,或者
  • 其他人意外或故意在 CloudFront 分配上配置了此域,或者
  • 您已經在 API Gateway 中進行了配置,但在不同的 AWS 區域中,或者
  • 這是 API Gateway 和 CloudFront 之間集成的一個錯誤。

要進行故障排除:

轉到 CloudFront 並創建一個新的分配。

嘗試將此主機名設置為備用域名。

如果可行,那麼這似乎是 API Gateway/CloudFront 集成中的一個錯誤。從新分發的備用域名中刪除主機名,等待幾分鐘讓分發恢復Deployed狀態,然後在 API Gateway 中重試。(稍後,刪除分發 - 它不需要)。

但是,我將假設上述方法行不通。您應該從 CloudFront 收到一個錯誤,CNAMEAlreadyExists. (這不是真正的 CNAME,但不幸的是,這就是他們所說的。)

因此,請按照官方流程證明您的域名的所有權和控制權,並將其與新的 CloudFront 分配相關聯。

此過程應從任何 CloudFront 分配聲明的主機名中釋放該主機名。

完成後,從新發行版的備用域名設置中刪除此主機名,保存更改,等待它返回Deployed狀態,然後返回 API 網關並重試。(稍後,刪除未​​使用的發行版。)

這裡的問題是——就像 S3 儲存桶命名空間一樣——CloudFront 前端Host:標頭命名空間是全域的。一個主機名不能與多個 CloudFront 分配相關聯,包括 API Gateway 使用的“隱形”​​分配。該錯誤意味著您嘗試使用的那個,由於某種原因,已經是。

這應該與您可能從 ACM 獲得的萬用字元無關。

引用自:https://serverfault.com/questions/851446