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.」(指定された 1 つ以上の 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?$」)
解決方法
「Custom domain is not a valid subdomain」(カスタムドメインが有効なサブドメインではありません) というエラー
インフラストラクチャが誤って変更されないように、Amazon Cognito は、カスタムドメインのトップレベルドメイン (TLD) をサポートしていません。Amazon Cognito カスタムドメインを作成するには、親ドメインにドメインネームシステム (DNS) A レコードが必要です。
親ドメインは、ドメインのルートでも、ドメイン階層の 1 つ上の子ドメインでもかまいません。例えば、カスタムドメインが auth.xyz.yourdomain.com である場合、Amazon Cognito は **xyz.**yourdomain.com を IP アドレスに解決する必要があります。同様に、xyz.yourdomain.com をカスタムドメインとして設定するには、yourdomain.com のために A レコードを設定します。
DNS 設定で親ドメインの A レコードを作成する必要があります。親ドメインが有効な A レコードに解決されても、Amazon Cognito は追加の検証を実行しません。親ドメインが実際の IP アドレスをポイントしていない場合は、DNS 設定で「8.8.8.8」などのダミー IP アドレスを配置することを検討してください。
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 レコードマッピングを削除できます。
「Domain already associated with another user pool」(ドメインは既に別のユーザープールに関連付けられています) というエラー
カスタムドメイン名は、すべての AWS リージョンのすべての AWS アカウントで一意である必要があります。ユーザープールにカスタムドメイン名を使用する場合、同じドメイン名を他のユーザープールに使用することはできません。最初のユーザープールに関連付けられたカスタムドメインは、別のユーザープールにそのドメイン名を使用する場合、削除される必要があります。
カスタムドメインを削除した後、ユーザープールからカスタムドメインの関連付けを完全に解除するには時間がかかります。削除後すぐに別のユーザープールでドメイン名を設定しようとすると、ドメイン関連付けエラーが発生することがあります。ドメイン関連付けエラーが発生した場合は、15~20 分待ってから新しいユーザープールでドメイン名を設定します。
「One or more of the CNAMEs you provided are already associated with a different resource」(指定された 1 つ以上の CNAME が、既に別のリソースに関連付けられています) というエラー
カスタムドメインを作成すると、Amazon Cognito は、同じカスタムドメイン名を使用して AWS マネージド Amazon CloudFront ディストリビューションを作成します。1 つの CloudFront ディストリビューションでのみ、ドメイン名を使用できます。既存のドメイン名を CloudFront で代替ドメインとして使用している場合、その既存のドメイン名を使用してカスタムドメインを作成することはできません。CloudFront ディストリビューションに既に関連付けられているカスタムドメインを作成しようとすると、CNAME 関連付けエラーが表示されます。
このエラーは、次の 2 つの方法のいずれかで解決できます。
- Amazon Cognito カスタムドメインに別のドメイン名を使用します。
- そのドメインを Amazon Cognito カスタムドメインとして使用している場合は、別の CloudFront ディストリビューションでそのドメイン名を使用するのをやめます。
「The specified SSL certificate doesn't exist error」(指定された SSL 証明書は存在しません) というエラー
- Amazon Cognito カスタムドメインを作成するには、us-east-1 AWS リージョンで AWS Certificate Manager (ACM) 証明書が必要です。カスタムドメインを作成すると、Amazon Cognito は、内部的に CloudFront ディストリビューションを作成します。CloudFront は、us-east-1 リージョンでのみ、ACM 証明書をサポートします。
- カスタムドメインを設定する際には、選択した証明書の有効期限が切れていないことを確認してください。
- 証明書を ACM にインポートした場合は、証明書が公的認証機関 (CA) によって発行されていることを確認してください。また、証明書には正しい証明書チェーンが必要です。詳細については、「AWS Certificate Manager への証明書のインポート」を参照してください。
- 証明書のサイズは 2,048 ビット以下である必要があります。証明書をパスワードで保護することはできません。
- AWS Key Management Service (AWS KMS) のポリシー評価の結果が明示的な拒否ステートメントであった場合、SSL 証明書エラーを受け取ることがあります。Amazon Cognito カスタムドメインを作成する IAM ユーザーまたは IAM ロールについて特定の AWS KMS アクションが明示的に拒否された場合に、このエラーが発生します。このエラーは、次の AWS KMS アクションが明示的に拒否された場合に最もよく発生します: kms:DescribeKey、kms:CreateGrant、または kms:*。
「The domain name contains an invalid character」(ドメイン名に無効な文字が含まれています) というエラー
ドメイン名が小文字、数字、ハイフン以外を含む場合、そのドメイン名は承認されません。先頭または末尾にハイフンを使用することはできません。ドメイン名全体で最大 63 文字です (ドットを含みます)。
関連情報
ホストされた UI への独自のドメインの使用