Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
ForgotPassword API を使用しても、Amazon Cognito から確認コードのメールまたは SMS テキストメッセージが送信されなかった原因を教えてください。
ForgotPassword API を呼び出したものの、Amazon Cognito から確認コードのメールまたはショートメッセージサービス (SMS) テキストでメッセージが送信されなかった原因を把握したいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
スパムやジャンクフォルダを確認する
確認メールがユーザーのスパムフォルダや迷惑メールフォルダに届いていないことを確認します。
ユーザーがユーザープールに存在することを確認する
ユーザーが Amazon Cognito ユーザープールに存在することを確認します。Amazon Cognito コンソールを使用してユーザープール内のユーザーを検索する方法については、「ユーザーアカウントの管理と検索」を参照してください。AdminGetUser API コールでも検索が可能です。
ユーザーステータスを確認する
ユーザーのステータスが FORCE_CHANGE_PASSWORD ではないことを確認します。
管理者が作成したユーザーが、指定されたパスワードでサインインするまでは、ユーザーステータスはデフォルトの FORCE_CHANGE_PASSWORD に留まります。
ユーザーステータスが FORCE_CHANGE_PASSWORD の場合、ユーザーは ForgotPassword API を呼び出せず、確認コードを受信できません。代わりに、Amazon Cognito はユーザーにパスワードを変更するよう求めます。
ユーザーの AWS アカウントを復元する
ユーザー名と電話番号が確認されていない状態で ForgotPassword API を呼び出すと、次のいずれかのエラーが発生します。
- AWS CLI:
"An error occurred (InvalidParameterException) when calling the ForgotPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number" - Amazon Cognito コンソール:
"Could not reset password for the account, please contact support or try again."
ユーザーアカウントを復旧するには、そのユーザーアカウントの設定を検証する必要があります。復旧メッセージの配信方法がメールまたは電話番号、メールのみ、電話番号のみ、使用可能な場合は電話番号、または「なし」のいずれに該当するかを確認します。
次の手順を実行します。
- Amazon Cognito コンソールを開きます。
- ユーザープールを選択します。
- [認証] で [サインイン] を選択します。
- [ユーザーアカウントの復旧] セクションで [復旧メッセージの配信方法] のオプションを確認します。
- その配信方法がユーザーの検証済み属性であることを確認します。
ユーザーステータスが CONFIRMED である場合も、そのユーザーはパスワード復旧用のメールまたは電話番号を所持していない場合があります。確認チェックボックスを選択してアカウントを作成する際、管理者が作成したユーザーアカウントの電子メールと電話番号を確認する必要があります。
この問題を解決するには、次のいずれかの方法でメールと電話番号の verified ステータスを true に設定します。
ユーザー属性を更新する
管理者ユーザーの場合は、次の AdminUpdateUserAttributes API コールを実行します。
aws cognito-idp admin-update-user-attributes --user-attributes Name=example-verification-method,Value=true --user-pool-id example-userpoolID --username example-user-name
注: ユーザーの復旧メッセージ配信方法に応じて example-verification-method を email_verified または phone_number_verified に置き換えてください。example-userpoolID をユーザープール ID に、example-user-name を ForgotPassword API コールの実行を希望するユーザーに置き換えてください。
ユーザーの場合は、ログイン後、次の UpdateUserAttributes API コールを実行します。
aws cognito-idp update-user-attributes --user-attributes Name=example-verification-method,Value=true --access-token example-access-token
注: ユーザーの復旧メッセージ配信方法に応じて example-verification-method を email_verified または phone_number_verified に置き換えてください。example-access-token をアクセストークンの値に置き換えてください。
サインアップ前の Lambda トリガー
サインアップ前 Lambda トリガーを使用し、ユーザーのメールアドレスと電話番号属性を verifed に設定します。
SignUp
ユーザーの場合は、次の手順を実行します。
- 次の SignUP API コールを実行します。
注: example-client-ID をサインアップを行うアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。aws cognito-idp sign-up --client-id example-client-ID --username example-user-name - 上記コマンドの出力から、Session 値を書き留めておきます。
- 次の ConfirmSignUp API コールを実行します。
注: example-client-ID をサインアップを行うアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。example-confirmation-code をステップ 2 で書き留めた Session 値に置き換えてください。aws cognito-idp confirm-sign-up --client-id example-client-ID --username example-user-name --confirmation-code example-confirmation-code
管理者の場合は、次の AdminConfirmSignUp API コールを実行します。
aws cognito-idp admin-confirm-sign-up --client-id example-client-ID --username example-user-name
注: example-client-ID をアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。
SMS メッセージに対するアカウントの支出制限を確認する
Amazon Cognito は、Amazon Simple Notification Service (Amazon SNS) を使用して SMS テキストメッセージを配信します。設定したアカウント支出クォータがアカウントの支出制限を超える場合、Amazon SNS は SMS メッセージを発行しません。
アカウントの支出クォータを確認または変更する方法については、「AWS マネジメントコンソールを使用して SMS メッセージのプリファレンスを設定する」を参照してください。
Amazon SES のクォータを確認する
Amazon Cognito は、Amazon Simple Email Service (Amazon SES) を使用してメールを配信します。デフォルトでは、Cognito ではユーザープールに許可される 1 日あたりのメール数は制限されています。詳細については、「リソース数とサイズのクォータ」を参照してください。
Amazon SES のメール設定を使用するようにユーザープールを設定すると、メール配信率を向上できます。手順については、「Amazon Cognito ユーザープール用のメール設定」を参照してください。
AdminSetUserPassword API コールを使用してユーザーパスワードをリセットする
管理者が AdminSetUserPassword API コールを使用すると、Amazon Cognito ユーザープール内のユーザーのパスワードを一時的または永続的に設定できます。一時パスワードを使用するユーザーは、有効期限が切れる前にサインインして一時パスワードを変更する必要があります。ユーザーが一時パスワードをリセットするか、永続的パスワードを使用している場合は、ステータスは CONFIRMED に変わります。
関連情報
- 言語
- 日本語
