Amazon Cognito ユーザープール用の SMS メッセージ設定 - Amazon Cognito

Amazon Cognito ユーザープール用の SMS メッセージ設定

ユーザープールの Amazon Cognito イベントには、Amazon Cognito がユーザーに SMS テキストメッセージを送信する結果となるものがあります。例えば、電話番号の検証を必須とするようにユーザープールを設定している場合、ユーザーがアプリケーションの新しいアカウントにサインアップする、またはパスワードをリセットする場合に Amazon Cognito が SMS テキストメッセージを送信します。SMS テキストメッセージを開始するアクションに応じて、メッセージには検証コード、一時的なパスワード、またはウェルカムメッセージが含まれます。

Amazon Cognito は、SMS テキストメッセージの配信に Amazon Simple Notification Service (Amazon SNS) を使用します。Amazon Cognito または Amazon SNS 経由でのテキストメッセージの送信を初めて行う場合は、Amazon SNS によってサンドボックス環境に置かれます。サンドボックス環境では、SMS テキストメッセージのアプリケーションをテストできます。サンドボックスでは、検証済みの電話番号にしかメッセージを送信できません。

Amazon Cognito ユーザープールでの SMS メッセージングの初回セットアップ

Amazon Cognito は、ユーザーへの SMS メッセージの送信に Amazon SNS を使用します。カスタム SMS 送信者の Lambda トリガー を使用して、独自のリソースを使用し、SMS メッセージを送信することもできます。特定の AWS リージョン で SMS テキストメッセージを送信するように Amazon SNS を初めて設定すると、Amazon SNS は AWS アカウント をそのリージョンの SMS サンドボックスに配置します。Amazon SNS はサンドボックスを使用して、不正使用と悪用を防止し、コンプライアンス要件を満たします。AWS アカウント がサンドボックス内にある場合、Amazon SNS はいくつかの制限を課します。例えば、テキストメッセージを送信できるのは Amazon SNS で検証した電話番号 10 個までです。AWS アカウント がサンドボックスに置かれている間は、本番環境のアプリケーションに Amazon SNS の設定を使用しないでください。サンドボックスに置かれている間、Amazon Cognito はユーザーの電話番号にメッセージを送信できません。

SMS テキストメッセージをユーザープールユーザーに送信するには
  1. Amazon Cognito が Amazon SNS で SMS メッセージを送信するために使用できる IAM ロールを準備します。

  2. Amazon SNS SMS メッセージの場合は、AWS リージョン を選択します。

  3. 米国の電話番号に SMS テキストメッセージを送信する場合は、発信元 ID を取得してください。

  4. SMS サンドボックスに置かれていることを確認する。

  5. Amazon SNS サンドボックスからアカウントを移動させる。

  6. Amazon SNS で Amazon Cognito の電話番号を検証する。

  7. Amazon Cognito でユーザープールのセットアップを完了する。

ステップ 1: Amazon Cognito が Amazon SNS で SMS メッセージを送信するために使用できる IAM ロールを準備する

ユーザープールから SMS メッセージを送信すると、Amazon Cognito はアカウントの IAM ロールを引き受けます。Amazon Cognito は、そのロールに割り当てられた sns:Publish アクセス許可を使用して、ユーザーに SMS メッセージを送信します。Amazon Cognito コンソールでは、[SMS] のユーザープールの [Messaging] (メッセージング) タブから [IAM role selection] (IAM ロールの選択) を設定するか、ユーザープール作成ウィザードでこの選択を行うことができます。

次の IAM ロール信頼ポリシーの例では、Amazon Cognito ユーザープールに、ロールを引き受ける制限付きの機能を付与しています。Amazon Cognito は、条件 aws:SourceArn のユーザープールと条件 aws:SourceAccount の AWS アカウント の代わりに行う場合にのみ、そのロールを引き受けることができます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } }] }

条件 aws:SourceArn の値には、正確なユーザープール ARN またはワイルドカード ARN を指定できます。AWS Management Console または DescribeUserPool API リクエストを使用して、ユーザープールの ARN を検索します。

IAM ロールおよび信頼ポリシーの詳細については、「AWS Identity and Access Management ユーザーガイド」の「ロールに関する用語と概念」を参照してください。

ステップ 2: Amazon SNS SMS メッセージの場合は、AWS リージョン を選択する

一部の AWS リージョン では、Amazon Cognito SMS メッセージに使用する Amazon SNS リソースを含むリージョンを選択できます。Amazon Cognito が利用可能な AWS リージョン では、(アジアパシフィック (ソウル) を除く) では、Amazon SNS リソースを、ユーザープールを作成した AWS リージョン で使用できます。リージョンを選択したときに SMS メッセージングを高速かつ信頼性の高いものにするには、ユーザープールと同じリージョンの Amazon SNS リソースを使用します。

注記

AWS Management Console では、新しい Amazon Cognito コンソールエクスペリエンスに切り替えた後でのみ、SMS リソースのリージョンを変更できます。

新規ユーザープールウィザードのメッセージ配信の設定ステップで、SMS リソースのリージョンを選択します。既存のユーザープールの [Messaging] (メッセージング)タブの [SMS][Edit] (編集) を選択することもできます。

開始時は、一部の AWS リージョン では、Amazon Cognito が代替リージョンにある Amazon SNS リソースを使用して SMS メッセージを送信していました。希望するリージョンを設定するには、ユーザープールの SmsConfigurationType オブジェクトの SnsRegion パラメータを使用します。次の表から Amazon Cognito リージョン に Amazon Cognito ユーザープールリソースをプログラムによって作成し、SnsRegion パラメータを提供しない場合、ユーザープールはレガシー Amazon SNS 代替リージョンで Amazon SNS リソースを使用して SMS メッセージを送信します。

アジアパシフィック (ソウル) AWS リージョン の Amazon Cognito ユーザープールは、アジアパシフィック (東京) リージョンの Amazon SNS 設定を使用する必要があります。

Amazon SNS は、すべての新しいアカウントに対して 1 か月あたり 1.00 USD で使用クォータを設定します。AmazonCognito で使用する AWS リージョン での支出制限を引き上げた可能性があります。Amazon SNS SMS メッセージの AWS リージョン を変更する前に、AWS サポートセンターでクォータ増加ケースを開いて、新しいリージョンでの制限を引き上げてください。詳細については、Amazon Simple Notification Service 開発者ガイド の「Amazon SNS の毎月の SMS 使用クォータの引き上げをリクエストする」を参照してください。

以下の表にある、任意の Amazon Cognito リージョンに対して、対応する Amazon SNS リージョン の Amazon SNS リソースで SMS メッセージを送信することができます。

Amazon Cognito リージョン Amazon SNS リージョン
米国東部 (オハイオ) 米国東部 (オハイオ)、米国東部 (バージニア北部)
アジアパシフィック (ムンバイ) アジアパシフィック (ムンバイ)、アジアパシフィック (シンガポール)
カナダ (中部) カナダ (中部)、米国東部 (バージニア北部)
欧州 (フランクフルト) 欧州 (フランクフルト)、欧州 (アイルランド)
欧州 (ロンドン) 欧州 (ロンドン)、欧州 (アイルランド)
アジアパシフィック (ソウル) アジアパシフィック (東京)
米国東部 (バージニア北部) 米国東部 (バージニア北部)
米国西部(北カリフォルニア) 米国西部 (北カリフォルニア)
米国西部 (オレゴン) 米国西部 (オレゴン)
アジアパシフィック (シンガポール) アジアパシフィック (シンガポール)
アジアパシフィック (シドニー) アジアパシフィック (シドニー)
アジアパシフィック (東京) アジアパシフィック (東京)
欧州 (アイルランド) 欧州 (アイルランド)
欧州 (パリ) 欧州 (パリ)
ヨーロッパ (ストックホルム) ヨーロッパ (ストックホルム)
中東 (バーレーン) 中東 (バーレーン)
南米 (サンパウロ) 南米 (サンパウロ)

ステップ 3: 米国の電話番号に SMS メッセージを送信するための発信元 ID を取得する

米国の電話番号に SMS テキストメッセージを送信する場合は、SMS サンドボックステスト環境または本番環境を構築するかどうかにかかわらず、発信元 ID を取得する必要があります。

米国の通信事業者は 2021 年 6 月 1 日付けで、米国の電話番号へのメッセージの送信に発信元 ID を義務付けました。発信元 ID をまだ取得していない場合は、取得する必要があります。発信元 ID を取得する方法については、Amazon Pinpoint ユーザーガイドの「番号のリクエスト」を参照してください。

以下の AWS リージョン で業務を行っている場合は、AWS Support チケットを開始して発信元 ID を取得する必要があります。この手順については、Amazon Simple Notification Service デベロッパーガイドの「SMS メッセージングのサポートをリクエストする」を参照してください。

  • 米国東部 (オハイオ)

  • ヨーロッパ (ストックホルム)

  • 中東 (バーレーン)

  • 欧州 (パリ)

  • 南米 (サンパウロ)

  • 米国西部 (北カリフォルニア)

同じ AWS リージョン に複数の発信元 ID がある場合、Amazon SNS は、ショートコード、10DLC、通話料無料番号の優先順位で発信元 ID タイプを選択します。この優先順位を変更することはできません。詳細については、「Amazon SNSのよくある質問」を参照してください。

ステップ 4: SMS サンドボックスに置かれていることを確認する

次の手順を使用して SMS サンドボックスに移動していることを確認します。Amazon Cognito の本番稼働用ユーザープールがある各 AWS リージョン で繰り返します。

Original console
SMS サンドボックスに置かれていることを確認する
  1. Amazon Cognito コンソール (https://console.aws.amazon.com/cognito) を開きます。プロンプトが表示されたら、AWS 認証情報に入力します。

  2. ユーザープールを作成、または既存のユーザープールを編集します。

  3. アカウントが SMS サンドボックスに置かれている場合は、Amazon Cognito に以下のメッセージが表示されます。

    You are currently in a Sandbox environment in Amazon SNS.

    このメッセージが表示されない場合は、アカウント内での SMS メッセージのセットアップが既に実行されています。「ステップ 7: Amazon Cognito のユーザープールのセットアップを完了する」へ進んでください。

  4. Amazon SNS コンソールを新しいタブで開くためのメッセージで、Amazon SNS リンクを選択します。

  5. サンドボックス環境に置かれていることを確認します。コンソールメッセージには、以下のようにサンドボックスのステータスと AWS リージョン が示されます。

    This account is in the SMS sandbox in US East (N. Virginia).

New console
SMS サンドボックスに置かれていることを確認する
  1. Amazon Cognito コンソールに移動します。プロンプトが表示されたら、AWS 認証情報を入力します。

  2. [User Pools] (ユーザープール) を選択します。

  3. リストから存在するユーザープールを 1 つ選択します。

  4. [Messaging] (メッセージング) タブを選択します。

  5. [SMS configuration] (SMS 設定) セクションで、[Move to Amazon SNS production environment] (Amazon SNS 本番環境に移行する) を展開します。アカウントが SMS サンドボックスに置かれている場合は、以下のメッセージが表示されます。

    You are currently in the SMS Sandbox and cannot send SMS messages to unverified numbers.

    このメッセージが表示されない場合は、アカウント内での SMS メッセージのセットアップが既に実行されています。「ステップ 7: Amazon Cognito のユーザープールのセットアップを完了する」へ進んでください。

  6. メッセージの Amazon SNS リンクを選択します。これにより、新しいタブで Amazon SNS コンソールが開きます。

  7. サンドボックス環境に置かれていることを確認します。コンソールメッセージには、以下のようにサンドボックスのステータスと AWS リージョン が示されます。

    This account is in the SMS sandbox in US East (N. Virginia).

ステップ 5: Amazon SNS サンドボックスからアカウントを移動させる

アプリをテストしていて、管理者が確認できる電話番号にのみ SMS メッセージを送信する必要がない場合は、このステップをスキップしてステップ 5 に進んでください。

本番稼働でアプリを使用するには、アカウントを SMS サンドボックスから本番環境に移動します。Amazon Cognito で使用する Amazon SNS リソースを含む AWS リージョン に発信元 ID を設定した後、AWS アカウント が SMS サンドボックスに残っている間は、米国の電話番号を検証することができます。Amazon SNS 環境が本番環境にある場合、ユーザーに SMS メッセージを送信するために Amazon SNS でユーザーの電話番号を確認する必要はありません。

詳細については、Amazon Simple Notification Service デベロッパーガイドの「SNS サンドボックス外への移動」を参照してください。

ステップ 6: Amazon SNS の Amazon Cognito の電話番号を検証する

SMS サンドボックスからアカウントを移動した場合は、このステップをスキップしてステップ 6 に進みます。

SMS サンドボックスでは、Amazon SNS で検証した任意の電話番号にメッセージを送信できます。

電話番号を確認するには、次の手順を実行します。

  1. Amazon SNS コンソールのテキストメッセージング (SMS) セクションに、サンドボックスの送信先電話番号を追加します。

  2. 指定した電話番号にコードが入った SMS メッセージを受信します。

  3. Amazon SNS コンソールに SMS メッセージに記載されている確認コードを入力します。

詳しい手順については、Amazon Simple Notification Service デベロッパーガイドの「SMS サンドボックスでの電話番号の追加と確認」を参照してください。

注記

Amazon SNS では、SMS サンドボックスで確認できる送信先の電話番号の数が制限されます。Amazon Simple Notification Service デベロッパーガイドの「SMS サンドボックス」を参照してください。

ステップ 7: Amazon Cognito のユーザープールのセットアップを完了する

ユーザープールを作成または編集していたブラウザタブに戻ります。手順を完了します。