スキップしてコンテンツを表示

Amazon SES を Amazon Cognito ユーザープールと統合する方法を教えてください。

所要時間3分
0

Amazon Simple Email Service (Amazon SES) を Amazon Simple Email Service (Amazon SES) ユーザープールと統合したいと考えています。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

前提条件:

Amazon Cognito と Amazon SES では、クロスアカウント統合はサポートされていません。あるアカウントで設定した Amazon Cognito ユーザープールを別のアカウントに属する Amazon SES メールアドレスと統合することはできません。

Amazon SES サンドボックスの制限事項を確認する

詐欺や悪用を防ぐために、すべての新しい Amazon SES アカウントは、Amazon SES サンドボックスに配置されます。Amazon SES サンドボックスの使用時には、制限事項を確認してください。

Amazon SES サンドボックスからアカウントを移動する

Amazon SES サンドボックスからアカウントを削除済みでない場合は、次の手順を実行します。

  1. Amazon SES メール設定で AWS リージョンのマッピングテーブルを確認します。
    マッピングテーブルには、Amazon SES ID を Amazon Cognito ユーザープールと統合できるリージョンが表示されます。Amazon SES アカウントをサンドボックスから移行する前に、使用するリージョンには互換性があることを確認してください。
  2. Amazon SES アカウントの本番環境へのアクセスをリクエストします。AWS サポートチームは、お客様のリクエストに対して 24 時間以内に初期回答を行います。
    本番環境へのアクセスリクエストの承認後は、任意の受信者に電子メールメッセージを送信できます。

注: Amazon Cognito を同じリージョンの Amazon SES と統合するには、新しい Amazon Cognito コンソールエクスペリエンスに切り替える必要があります。

Amazon SES ドメインの ID を検証する

Amazon SES の 1 つ以上のドメイン識別子を検証します。検証前にドメイン ID を作成する必要がある場合は、「ドメイン ID の作成」を参照してください。

Amazon SES メールの ID を検証する

Amazon SES の 1 つ以上のメールアドレスを検証します。検証前にメールアドレス ID を作成する必要がある場合は、「メールアドレス ID の作成」を参照してください。

ユーザープールを検証済み ID と統合する

Amazon SES ドメイン ID が検証済みである場合は、次のステップを実行します。

  1. Amazon Cognito コンソールにサインインし、[ユーザープール] を選択します。
  2. ユーザープールを選択します。
  3. [認証方法] メニューで [メール設定] を選択します。次に、[編集] を選択します。
  4. [送信者のメールアドレス] で Amazon SES の検証済みドメイン ID を選択します (例: example.com)。
  5. [送信者の名前] にメールアドレスを入力します (例: admin@example.com)。

ドメイン ID には、カスタムメールアドレスを追加できます。UpdateUserPool API は、Amazon SES ID を使用して Amazon Cognito ユーザープールを構成します。

update-user-pool コマンドの例:

$ aws cognito-idp update-user-pool --user-pool-id example_pool_id --email-configuration SourceArn=arn:aws:ses:example_region:example_account_number:identity/example_domain,EmailSendingAccount=DEVELOPER,From=user@example.com --region example_region

重要: UpdateUserPool API は、ユーザープールの既存の構成をリセットします。まず、DescribeUserPool API を呼び出してから、既存のすべてのユーザープールパラメータを UpdateUserPool API に送信します。

update-user-pool コマンドの説明を次に示します。

  • example_pool_id は、Amazon Cognito ユーザープールの ID に対応します (例: ap-southeast-1_xxxxxxxx)。
  • arn:aws:ses:example_region:example_account_number:identity/example_domainは、Amazon SES ドメイン ID の Amazon リソースネーム (ARN) です。
  • user@example.com は、実際のメール ID と置き換える必要があります。
  • example_region は、Amazon Cognito ユーザープールが配置されたリージョンを示します (例: ap-southeast-1)。

Amazon SES メール ID が検証済みである場合は、次の手順を実行します。

  1. Amazon Cognito コンソールにサインインし、[ユーザープール] を選択します。
  2. ユーザープールを選択します。
  3. [認証方法] メニューで [メール設定] を選択します。次に、[編集] を選択します。
  4. [送信者のメールアドレス] で Amazon SES メールのドメイン ID を選択します (例: admin@example.com)。

エラーのトラブルシューティング

メールアドレス未検証に関するエラーの解決

次のエラーが発生する場合があります: "Email address is not verified. The following identities failed the check in region AP-SOUTHEAST-1: user@example.com."

このエラーは、Amazon SES サンドボックスのアカウントから未検証メールアドレスへのメール送信を試みたことを示します。

このエラーを解決するには、Amazon SES アカウントをサンドボックスから移行するか、Amazon SES でその受信者のメールアドレスを検証します。

メールメッセージが見つからない場合

ユーザーが Amazon Cognito ユーザープールのメールを受信できていない場合は、次の手順を実行します。

  1. メールメッセージの送信には、Amazon Cognito のデフォルトメール設定または Amazon SES のメール設定を使用していることを確認します。

  2. AWS マネジメントコンソールで更新を確認するか、DescribeUserPool API を実行します。
    describe-user-pool コマンドの例:

    aws cognito-idp describe-user-pool --user-pool-id example_pool_id --region example_region --query 'UserPool.EmailConfiguration'

    次のいずれかの出力が表示される場合があります。

    {  "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com",
      "EmailSendingAccount": "DEVELOPER",
      "From": "admin@example.com"
    }

    または、

    {  "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com",
      "EmailSendingAccount": "COGNITO_DEFAULT"
    }

    EmailSendingAccountDEVELOPER の場合は、ユーザープールは Amazon SES を使用しています。Amazon SES アカウントがサンドボックスに置かれていないかを確認します。サンドボックスに置かれている場合は、サンドボックスから移行してから、未検証 ID にメールを送信します。サンドボックスから移行済みの場合は、Amazon SES のログでメール配信の問題が発生していないかを確認します。
    EmailSendingAccountCOGNITO_DEFAULT の場合は、ユーザープールは Amazon Cognito デフォルトのメール機能を使用しています。この機能では、ユーザープールごとに送信するメール数にクォータが適用されます。

日ごとのメール数クォータに関するエラーの解決

次のエラーが発生する場合があります: "Exceeded daily email limit for the operation or account. Number of allowed operation has exceeded. If a higher limit is required, please configure your user pool to use your own Amazon SES configuration for sending email messages."

このエラーは、Amazon Cognito のデフォルトメール設定におけるクォータを超過したことを示します。

解決するには、ユーザープールで設定を行い、メールの送信にはユーザー独自の Amazon SES 設定を使用します。この方法では、Amazon SES の送信数クォータを増やすことができます。

関連情報

ForgotPassword API を使用しても、Amazon Cognito から確認コードのメールまたは SMS テキストメッセージが送信されなかった理由を知りたいです

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ