如何針對在 Amazon Cognito 中建立自訂網域時出現的錯誤進行疑難排解?

2 分的閱讀內容
0

我需要進一步了解如何解決在 Amazon Cognito 中設定自訂網域時的常見錯誤。

簡短描述

在 Amazon Cognito 中設定自訂網域名稱時,通常會發生下列錯誤:

  • "Custom domain is not a valid subdomain: Was not able to resolve the root domain, please ensure an A record exists for the root domain. (自訂網域不是有效的子網域:無法解析根網域,請確定根網域存在 A 記錄。)"
  • "Domain already associated with another user pool. (網域已與其他使用者集區相關聯。)"
  • "One or more of the CNAMEs you provided are already associated with a different resource. (您提供的一或多個 CNAME 已經與不同的資源相關聯。)"
  • "The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain. (指定的 SSL 憑證不存在,不在 us-east-1 區域中、無效或不包含有效的憑證鏈。)"
  • "The domain name contains an invalid character. Domain names can only contain lower-case letters, numbers, and hyphens. Please enter a different name that follows this format: ^a-z0-9?$ (網域名稱包含無效字元。網域名稱只能包含小寫字母、數字和連字號。請輸入遵循以下格式的其他名稱: ^a-z0-9?$)"

解決方案

自訂網域不是有效的子網域錯誤

為了防止意外變更基礎架構,Amazon Cognito 不支援自訂網域的最上層網域 (TLD)。若要建立 Amazon Cognito 自訂網域,父網域必須具有網域名稱系統 (DNS) A 記錄

父項可以是網域的根項目,也可以是網域階層中上一層的子網域。例如,如果您的自訂網域是 auth.xyz.yourdomain.com,則 Amazon Cognito 必須將 **xyz.**yourdomain.com 解析為 IP 地址。同樣地,如果要將 xyz.yourdomain.com 設定為自訂網域,則必須為 yourdomain.com 設定 A 記錄。

您必須在 DNS 組態中為父網域建立 A 記錄。當父網域解析為有效的 A 記錄時,Amazon Cognito 不會執行其他驗證。如果父網域未指向真實 IP 地址,則請考慮在 DNS 組態中放置虛擬 IP 地址,例如 "8.8.8.8"。

您的 DNS 供應商可能需要一些時間來傳播您對 DNS 組態所做的變更。若要確保您的 DNS 供應商傳播變更,請執行下列其中一個命令。

使用 auth.xyz.yourdomain.com 作為自訂網域:

$ dig A xyz.yourdomain.com +short

-或-

使用 xyz.yourdomain.com 作為自訂網域:

$ dig A yourdomain.com +short

**注意:**上述範例命令適用於 Linux 環境。

如果 DNS 組態變更已傳播,則上一個命令會傳回您設定的 IP 地址。如果 DNS 查詢未傳回設定的 IP 地址,則請等到變更傳播為止。否則,您會繼續收到 "custom domain is not a valid subdomain (自訂網域不是有效的子網域)" 錯誤。

在 Amazon Cognito 中建立自訂網域之後,您可以移除先前設定的父網域 A 記錄映射。

網域已與其他使用者集區相關聯錯誤

自訂網域名稱在所有 AWS 區域中的所有 AWS 帳戶中必須是唯一的。當您為使用者集區使用自訂網域名稱時,其他任何使用者集區都無法使用相同的網域名稱。如果您想要將網域名稱用於其他使用者集區,則必須刪除與第一個使用者集區相關聯的自訂網域。

刪除自訂網域之後,需要一些時間才能完全解除自訂網域與使用者集區的關聯。如果您嘗試在刪除後立即對其他使用者集區設定網域名稱,則可能會遇到網域關聯錯誤。如果您收到網域關聯錯誤,請先等候 15-20 分鐘,再對新的使用者集區設定網域名稱。

您提供的一或多個 CNAME 已經與不同的資源相關聯錯誤

建立自訂網域之後,Amazon Cognito 會使用相同的自訂網域名稱建立 AWS 受管 Amazon CloudFront 分發。您只能將網域名稱用於一個 CloudFront 分發。如果您在 CloudFront 中使用網域名稱作為替代網域,則無法使用現有網域名稱建立自訂網域。如果您嘗試建立已與 CloudFront 分發相關聯的自訂網域,就會出現 CNAME 關聯錯誤。

您可以使用下列兩種方式之一來解決此錯誤:

  • 為 Amazon Cognito 自訂網域使用不同的網域名稱。
  • 在使用網域作為 Amazon Cognito 自訂網域時,請停止將該網域名稱用於另一個 CloudFront 分發。

指定的 SSL 憑證不存在錯誤

  1. 若要建立 Amazon Cognito 自訂網域,您必須在 us-east-1 AWS 區域中擁有 AWS Certificate Manager (ACM) 憑證。當您建立自訂網域時,Amazon Cognito 會在內部建立 CloudFront 分發。CloudFront 僅在 us-east-1 區域中支援 ACM 憑證。
  2. 設定自訂網域時,請確定您選取的憑證未過期。
  3. 如果您將憑證匯入 ACM,請確定憑證是由公有憑證授權單位 (CA) 所發行。憑證也必須具有正確的憑證鏈。如需詳細資訊,請參閱將憑證匯入 AWS Certificate Manager
  4. 您的憑證大小必須為 2048 位元或更小。憑證無法受密碼保護。
  5. 當 AWS Key Management Service (KMS) 政策評估產生明確的拒絕陳述式時,您可能會收到 SSL 憑證錯誤。當針對建立 Amazon Cognito 自訂網域的 IAM 使用者或角色明確拒絕特定 AWS KMS 動作時,就會發生此錯誤。此錯誤通常會發生在下列明確遭拒的 AWS KMS 動作:kms:DescribeKeykms:CreateGrantkms:*

網域名稱包含無效字元錯誤

如果網域名稱包含小寫字母、數字和連字號以外的任何內容,則系統不會接受該網域名稱。第一個或最後一個字元不能使用連字號。整個網域名稱 (包括點) 的最大長度為 63 個字元。


相關資訊

針對託管 UI 使用您自己的網域

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