Amazon Cognito がアプリのユーザーに MFA のテキストメッセージを配信しません。これを解決するにはどうすれば良いですか?

最終更新日: 2020 年 4 月 22 日

Amazon Cognito のユーザープールのユーザーがアプリにサインインした場合に、ワンタイムパスワードと共に送信されるはずの Multi-Factor Authentication (MFA) のテキストメッセージが送信されません。これらのメッセージ配信失敗のトラブルシューティング方法を教えてください。

簡単な説明

Amazon Cognito の MFA SMS (テキスト) メッセージは、Amazon Simple Notification Service (Amazon SNS) で送信されます。Amazon SNS からの SMS メッセージが意図したとおりに配信されない場合、Amazon CloudWatch Logs を使用して配信失敗の原因に対処することができます。

配信の失敗は、通常、AWS アカウントが SMS 使用量の月間サービスクォータに達したときに発生します。アカウントがそのサービスクォータに達した場合は、サービスクォータの引き上げをリクエストする方法を参照し、アカウントの SMS 使用量のモニタリングを開始してください。

解決方法

まだ実施していない場合は、SMS メッセージの CloudWatch Logs を有効にします。その後、以下の指示に従います。

CloudWatch を使用して配信ログを確認する

CloudWatch コンソールで、SMS 配信のプロバイダーレスポンスログを確認します。各配信ステータスログproviderResponse 属性には、配信の成功または失敗の原因が含まれています。

注意: SMS メッセージの CloudWatch Logs を有効にしたばかりの場合は、ロギングを有効にする前のアカウントの SMS 使用状況ログは表示されません。

テストとして、Amazon SNS を使用して、自分の携帯電話に SMS メッセージを送信できます。テストメッセージが届かない場合は、プロバイダーレスポンスのログを確認します。

直近 1 か月間の SMS の使用量を表示する

アカウントの Amazon SNS メトリクスを調べて、直近 1 か月間の SMS の使用量 (SMSMonthToDateSpentUSD) を確認します。

  1. CloudWatch コンソールを開きます。
  2. 左ナビゲーションペインで、[Metrics] をクリックします。
  3. [All metrics] で [SNS] を選択し、次に [Metrics with no dimensions] を選択します。
  4. [Metric Name] で [SMSMonthToDateSpentUSD] を展開し、[Graph this metric only] を選択します。
    注意: [グラフ化されたメトリクス] タブで、[統計] が [最大] に設定されていることを確認します。
  5. グラフでは、メトリクスの値に注意します。

詳細については、メトリクスのグラフ化を参照してください。

SMS 使用量の月次サービスクォータを確認する

SMS 使用量について、アカウントの Amazon SNS の月次サービスクォータを確認します。アカウントの直近 1 か月間の SMS 使用量と比較して、月間クォータに達したかどうかを判断します。

  1. Amazon SNS コンソールを開きます。
  2. 左ナビゲーションペインで、[Text messaging (SMS)] をクリックします。
  3. [テキストメッセージ設定] で [アカウント使用制限] の値を確認します。

詳細については、SMS メッセージの設定および Amazon Simple Notification Service エンドポイントとクォータを参照してください。

(オプション) SMS の使用量に対するサービスクォータの引き上げをリクエストする

SMS 使用量について、アカウントが Amazon SNS の月間サービスクォータに達したが、さらに SMS メッセージを送信することを希望する場合は、サービスクォータの引き上げをリクエストしてください。毎月の SMS の使用量が変わらない (または増加する) と予想される場合は、サービスクォータの引き上げにより、問題が再度発生するのを防ぐこともできます。

アラームを設定し、SMS の使用状況をモニタリングする

サービスクォータの引き上げに加えて、アカウントの SMS アクティビティを常に把握しておくことで、月間サービスクォータに達するのを回避できます。以下のいずれかを実行します。