Amazon Cognitoユーザープールの名前の変更失敗:SES設定が原因のエラー解決法

Amazon Cognitoユーザープールの名前の変更失敗:SES設定が原因のエラー解決法

errorMessage:Cognito is not allowed to use your email identity
2025.10.01

困っていること

Amazon Cognitoユーザープールのプール名を変更しようとコンソールで操作したところ、「ユーザープール名の更新に失敗しました。」というエラーが表示され、変更できない状況です。

cm-hirai-screenshot 2025-09-03 10.15.08
Cognitoコンソールでプール名変更時に表示されるエラー画面

CloudTrailログを確認すると、以下のエラーが記録されていました。

			
			{
    "eventName": "UpdateUserPool",
    "errorCode": "InvalidEmailRoleAccessPolicyException",
    "errorMessage": "Cognito is not allowed to use your email identity",
    "requestParameters": {
        "userPoolId": "ap-northeast-1_pVWBQfMzJ",
        "emailConfiguration": {
            "sourceArn": "arn:aws:ses:ap-northeast-1:アカウントID:identity/example.com",
            "emailSendingAccount": "DEVELOPER",
            "from": "test <example@example.com>"
        },
        "poolName": "email-only"
    }
}

		

名前を変更するだけなのに、なぜAmazon SES(Simple Email Service)に関連するエラーメッセージが表示されるのでしょうか。

原因

SESの送信承認ポリシーの設定不備が原因です。

Cognitoコンソールでプール名を変更する際、UpdateUserPool APIが呼び出されていました。

このとき、名前変更だけでなく既存のメール設定(SES)についても権限チェックが行われ、SESの送信承認ポリシーの不備によりエラーが発生していました。

設定状況の確認

まず、Cognitoのメール設定を確認すると、送信元メールアドレスがexample@example.comと設定されていました。

cm-hirai-screenshot 2025-09-03 10.22.11
Cognitoユーザープールのメール設定画面

次に、SESの送信承認ポリシーを確認します。

cm-hirai-screenshot 2025-09-03 10.18.50
SESアイデンティティの送信承認ポリシー設定画面

以下のポリシーが設定されていました。

			
			{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::アカウントID:root"
      },
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": "arn:aws:ses:ap-northeast-1:アカウントID:identity/example.com",
      "Condition": {
        "StringNotLike": {
          "ses:FromAddress": "*@m.example.com"
        }
      }
    }
  ]
}

		

このポリシーは、example.comドメインでのメール送信時に、Fromアドレスを*@m.example.comの形式のみに制限する設定です。m.example.com以外のFromアドレス(example@example.comなど)での送信は拒否されます。

問題の詳細

今回のケースでは、以下の設定の不整合が問題となっていました。

  1. Cognitoの送信者設定: example@example.com
  2. SESの送信承認ポリシーの制限: *@m.example.com パターンのみ許可
  3. ポリシー評価の原則: Deny(拒否)がAllow(許可)より優先される

つまり、example@example.com*@m.example.com パターンにマッチせず、SESの送信承認ポリシーによって拒否されていました。

設定の経緯

おそらく以下のような順序で設定が行われ、不整合が生じたと考えられます。

  1. 最初にCognitoでメール設定: example@example.com で構築
  2. 後からSESの送信承認ポリシーを追加: セキュリティ強化のため *@m.example.com 制限を設定
  3. 設定の整合性チェック不足: 既存のCognito設定との整合性を確認せず

解決方法

この問題を解決するには、以下の2つの方法があります。

方法1: SESの送信承認ポリシーを修正(推奨)

SESの送信承認ポリシーを更新して、example@example.com も許可するように修正します。

			
			{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::アカウントID:root"
      },
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": "arn:aws:ses:ap-northeast-1:アカウントID:identity/example.com",
      "Condition": {
        "StringNotLike": {
          "ses:FromAddress": [
            "*@m.example.com",
            "example@example.com"
          ]
        }
      }
    }
  ]
}

		

Amazon SESの送信承認ポリシーの詳細については、以下の記事を参考にしてください。

https://dev.classmethod.jp/articles/amazon-ses-send-auth-policy/

https://docs.aws.amazon.com/ja_jp/ses/latest/dg/sending-authorization-policy-examples.html

方法2: Cognitoの送信元メールアドレスを変更

Cognitoの設定で送信元メールアドレスをtest <example@m.example.com>に変更し、SESの送信承認ポリシーの制限パターンに合わせます。

修正結果

修正後、再度Cognitoコンソールでプール名の変更を実行すると、正常に完了しました。

cm-hirai-screenshot 2025-09-03 10.27.17
プール名変更成功後の画面

最後に

今回のトラブルは、CognitoとSESの設定間の不整合が原因でした。

同様のエラーが発生した場合は、CloudTrailログや関連するAWSサービスの設定をご確認ください。

この記事をシェアする

FacebookHatena blogX

関連記事

Amazon Cognitoユーザープールの名前の変更失敗:SES設定が原因のエラー解決法 | DevelopersIO