Amazon Cognito ユーザープールの E メール設定
ユーザープールのクライアントアプリでの特定のイベントにより、Amazon Cognito がユーザーに E メールを送信する場合があります。例えば、E メールの検証を必須とするようにユーザープールを設定している場合、ユーザーがアプリの新しいアカウントにサインアップする、またはパスワードをリセットする場合に Amazon Cognito が E メールを送信します。E メールを開始するアクションに応じて、検証コードまたは仮パスワードが含まれます。
E メール配信を処理するには、次のいずれかのオプションを使用できます。
-
Amazon Cognito サービスに組み込まれているデフォルトの E メール機能。
これらの設定は元に戻すことができます。ユーザープールを更新して切り替えることができます。
デフォルトの E メール機能
Amazon Cognito は、デフォルトの E メール機能を使用して E メール配信を処理できます。デフォルトのオプションを使用すると、Amazon Cognito は、ユーザープールに毎日送信するメールの数を制限します。サービスの制限に関する詳細については、「Amazon Cognito のクォータ」を参照してください。一般的な実稼働環境では、デフォルトの E メール制限は必要な配信ボリュームを下回っています。大規模なデリバリーボリュームを有効にするには、Amazon SES E メール設定を使用する必要があります。
デフォルトの機能を使用する場合は、AWS によって管理される Amazon SES リソースを使用して E メールメッセージを送信します。Amazon SES は、ハードバウンスを返す E メールアドレスをアカウントレベルのサプレッションリストまたはグローバルサプレッションリストに追加します。配信不能な E メールアドレスが後で配信可能になった場合、ユーザープールがデフォルト機能を使用するように設定されている間は、サプレッションリストからの削除を制御できません。E メールアドレスは、AWS-管理されたサプレッションリストに無期限に残る可能性があります。配信不能な E メールアドレスを管理するには、次のセクションで説明するように、アカウントレベルのサプレッションリストで Amazon SES E メール設定を使用します。
デフォルトの E メール設定を使用すると、オプションでは、次のいずれかの E メールアドレスを FROM アドレスとして使用できます。
-
デフォルトの E メールアドレス (no-reply@verificationemail.com)。
-
カスタム E メールアドレス。独自の E メールアドレスを使用する前に、それを Amazon SES で検証し、このアドレスを使用するための許可を Amazon Cognito に付与する必要があります。
Amazon SES の E メール設定
アプリケーションは、デフォルトのオプションで利用できるよりも大きいボリュームを必要とする可能性があります。可能なデリバリーボリュームを増やすには、Amazon SES リソースとユーザープールを使用してユーザーに E メールを送信します。独自の Amazon SES 設定で E メールメッセージを送信するときに、E メール送信アクティビティをモニタリングすることもできます。
Amazon SES の設定を使用する前に、1 つ、または複数の E メールアドレスまたはドメインを Amazon SES で検証する必要があります。検証済み E メールアドレスまたは検証済みドメインのアドレスを、ユーザープールに割り当てる FROM E メールアドレスとして使用します。Amazon Cognito が E メールをユーザーに送信するときは、Amazon SES を呼び出し、その E メールアドレスを使用するようになります。
Amazon SES の設定を使用する場合は、次の条件が適用されます。
-
ユーザープールの E メール配信制限が、AWS アカウント の Amazon SES 検証済み E メールアドレスに適用される制限と同じになります。
-
Amazon SES のアカウントレベルのサプレッションリストで、グローバルサプレッションリストを上書きして、配信不能な E メールアドレスへのメッセージを管理することができます。アカウントレベルのサプレッションリストを使用すると、E メールメッセージのバウンスが送信者としてのアカウントの評価に影響します。詳細については、Amazon Simple Email Service デベロッパーガイドの「Amazon SES アカウントレベルのサプレッションリストの使用」を参照してください。
Amazon SES の E メール設定リージョン
Amazon Cognito の E メールメッセージに使用する Amazon SES リソースを含む AWS リージョン を選択する際、ユーザープールを作成したリージョンと同じものを選択できます。一部のリージョンで Amazon Cognito ユーザープールを使用すると、代替リージョンである、米国東部 (バージニア北部)、米国西部 (オレゴン)、またはヨーロッパ (アイルランド) の Amazon SES リソースを使用することもできます。
E メールオペレーションを高速かつ信頼性の高いものにするには、ユーザープールを作成した AWS リージョン でAmazon SES の設定を使用します。Amazon Cognito でのクロスリージョンの Amazon SES の設定に対応することで、サービス開始時に Amazon Cognito の要件に準拠して作成したユーザープールリソースを継続的に利用することができます。その期間中に作成したユーザープールリソースは、限られた AWS リージョン でしか Amazon SES リソースを使用できませんでした。
AWS Management Consoleでは、新しい Amazon Cognito コンソールエクスペリエンスに切り替えた後で、同じリージョンで Amazon SES リソースのみを使用できます。
AWS Command Line Interface、API、または AWS CloudFormation で Amazon Cognito ユーザープールリソースを作成すると、ユーザープールは、EmailConfigurationTypeオブジェクトの SourceArn
Cパラメータがユーザープールに指定する Amazon SES ID で E メールメッセージを送信します。Amazon SES ID は、サポートされている AWS リージョン を占有する必要があります。EmailSendingAccount
が COGNITO_DEFAULT
で SourceArn
パラメータを指定しない場合、Amazon Cognito はユーザープールを作成したリージョン内のリソースを使用して no-reply@verificationemail.com
からE メールメッセージを送信します。
次の表に、Amazon SES ID を Amazon Cognito で使用できる AWS リージョン を示します。
Amazon Cognito user pools AWS リージョン | Amazon Simple Email Service 対応 AWS リージョン |
---|---|
米国東部 (バージニア北部) |
米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
米国東部 (オハイオ) |
米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
米国西部 (北カリフォルニア) |
米国西部 (北カリフォルニア) |
米国西部 (オレゴン) |
米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
カナダ (中部) |
カナダ (中部)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
アジアパシフィック (東京) |
アジアパシフィック (東京)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
アジアパシフィック (ソウル) |
アジアパシフィック (ソウル)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
アジアパシフィック (ムンバイ) |
アジアパシフィック (ムンバイ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
アジアパシフィック (シンガポール) |
アジアパシフィック (シンガポール)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
アジアパシフィック (シドニー) |
アジアパシフィック (シドニー)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
欧州 (アイルランド) |
米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
欧州 (ロンドン) |
欧州 (ロンドン)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
欧州 (パリ) |
欧州 (パリ) |
欧州 (フランクフルト) |
欧州 (フランクフルト)、米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) |
ヨーロッパ (ストックホルム) |
ヨーロッパ (ストックホルム) |
中東 (バーレーン) |
中東 (バーレーン) |
南米 (サンパウロ) |
南米 (サンパウロ) |
ユーザープールの E メールの設定
ユーザープールの E メール設定を指定するには、以下のステップを完了します。使用する設定に応じて、Amazon SES、AWS Identity and Access Management (IAM)、および Amazon Cognito での IAM アクセス許可が必要になる場合があります。
これらのステップで作成したリソースを AWS アカウント 間で共有することはできません。例えば、あるアカウントのユーザープールを設定してから、別のアカウントの Amazon SES E メールアドレスで使用することはできません。複数のアカウントで Amazon Cognito を使用する場合は、それぞれのアカウントでこれらのステップを繰り返すようにしてください。
ステップ 1: Amazon SES での E メールアドレスを検証する
次のいずれかを行う場合は、ユーザープールを設定する前に、Amazon SES で 1 つ、または複数の E メールアドレスを検証する必要があります。
-
FROM アドレスとして独自の E メールアドレスを使用する
-
Amazon SES の設定を使用して E メール配信を処理する
E メールアドレスを検証することにより、そのアドレスを所有していることを確認する (不正使用の防止に役立ちます)
Amazon SES での E メールアドレスの検証については、Amazon Simple Email Service デベロッパーガイドの「E メールアドレスの検証」を参照してください。Amazon SES でのドメインの検証の詳細については、「ドメインの検証」を参照してください。
ステップ 2: Amazon SES サンドボックスからアカウントを移動する
デフォルトの Amazon Cognito E メール機能を使用している場合は、このステップを省略します。
AWS リージョン で Amazon SES を初めて使用するときは、AWS アカウント はそのリージョンのAmazon SES サンドボックスに置かれます。Amazon SES は、サンドボックスを使用して不正使用や悪用を防ぎます。Amazon SES 設定を使用して E メール配信を処理している場合は、Amazon Cognito がユーザーに E メールを送信する前に、サンドボックスから AWS アカウント を移動させる必要があります。
サンドボックスでは、Amazon SES が、送信できる E メールの数と、それらの送信先に制限を課します。E メールは、Amazon SES で検証したアドレスとドメインのみに送信できます。または、Amazon SES メールボックスシミュレーターのアドレスにも E メールを送信できます。AWS アカウント がサンドボックスに置かれている間は、本番環境のアプリケーションに Amazon SES の設定を使用しないでください。この状況では、Amazon Cognito がユーザーの E メールアドレスにメッセージを送信することができません。
サンドボックスから AWS アカウント を削除するには、Amazon Simple Email Service デベロッパーガイドの「Amazon SES サンドボックス外への移動」を参照してください。
ステップ 3: Amazon Cognito に E メール許可を付与する
Amazon Cognito がユーザーに E メールを送信する前に、特定の許可を Amazon Cognito に付与する必要がある場合があります。付与するアクセス許可、およびそれらを付与するために使用するプロセスは、デフォルトの E メール機能と Amazon SES の設定のどちらを使用しているかに応じて異なります。
デフォルトの Amazon Cognito E メール機能を使用している場合は、このステップを省略します。
Amazon Cognito のデフォルトの E メール機能を使用するようにユーザープールを設定する場合は、Amazon Cognito がユーザーに E メールを送信する FROM アドレスとして、次のアドレスのいずれかを使用できます。
-
デフォルトのアドレス
-
Amazon SES のカスタムアドレス (検証済み E メールアドレス、または検証済みドメインの E メールアドレスである必要がある)
カスタムアドレスを使用している場合、Amazon Cognito には、そのアドレスからユーザーに E メールを送信するための追加のアクセス許可が必要です。これらの許可は、Amazon SES でアドレスまたはドメインにアタッチされる「送信承認ポリシー」によって付与されます。Amazon Cognito コンソールを使用してユーザープールにカスタムアドレスを追加する場合、ポリシーは Amazon SES 検証済み E メールアドレスに自動的にアタッチされます。ただし、ユーザープールをコンソール外で設定する場合は (AWS CLI または Amazon Cognito API を使用するなど)、Amazon SES console
FROM アドレスは、AWS CLI または Amazon Cognito API を使用して検証済みドメインでのみ設定できます。
送信承認ポリシーは、Amazon Cognito を使用して Amazon SES を呼び出すアカウントリソースに基づいてアクセスを許可、または拒否します。リソースベースのポリシーに関する詳細については、 IAM ユーザーガイドを参照してください。リソースベースのポリシーの例についても、Amazon SES デベロッパーガイドで確認いただけます。
例 送信承認ポリシー
次の送信承認ポリシーの例では、Amazon SES 検証済み ID を使用するための限定された権限が Amazon Cognito に付与されています。Amazon Cognito は、条件 aws:SourceArn
のユーザープールと条件 aws:SourceAccount
のアカウントの両方に代わって送信する場合にのみ、E メールメッセージを送信できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "stmnt1234567891234", "Effect": "Allow", "Principal": { "Service": [ "email.cognito-idp.amazonaws.com" ] }, "Action": [ "SES:SendEmail", "SES:SendRawEmail" ], "Resource": "
<your SES identity ARN>
", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>
" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>
" } } } ] }
この例では、「Sid」値はステートメントを一意に識別する任意の文字列です。
ポリシー構文の詳細については、「Amazon Simple Email Service デベロッパーガイド」の「Amazon SES 送信承認ポリシー」を参照してください。
その他の例については、「Amazon Simple Email Service デベロッパーガイド」の「Amazon SES 送信承認ポリシーの例」を参照してください。
Amazon SES の設定を使用するようにユーザープールを設定する場合、Amazon Cognito には、ユーザーに E メールを送信するときに代理で Amazon SES を呼び出すための追加の許可が必要です。この承認は、IAM サービスで付与されます。
このオプションでユーザープールを設定すると、Amazon Cognito が AWS アカウント にサービスリンクロール (IAM ロールの一種) を作成します。このロールには、Amazon Cognito が Amazon SES にアクセスし、お客様のアドレスを使用して E メールを送信できるようにする許可が含まれています。
Amazon Cognito がこのロールを作成する前に、ユーザープールのセットアップに使用する IAM 許可に iam:CreateServiceLinkedRole
アクションを含める必要があります。IAM での許可の更新に関する詳細については、IAM ユーザーガイドの「IAM ユーザーの許可の変更」を参照してください。
Amazon Cognito が作成するサービスリンクロールの詳細については、「Amazon Cognito のサービスリンクロールの使用」を参照してください。
ステップ 4: ユーザープールを設定する
以下のいずれかを使用してユーザープールを設定する場合は、次のステップを完了します。
-
E メール送信者として表示されるカスタムの FROM アドレス
-
ユーザーが FROM アドレスに送信するメッセージを受信するカスタムの REPLY-TO アドレス
-
Amazon SES の設定
デフォルトの Amazon Cognito E メール機能とアドレスを使用する場合は、この手順を省略します。
関連トピック