zu-min.com

「[InvalidEmailRoleAccessPolicyException] ユーザープールの E メール設定の更新に失敗しました。」が出たけど送信先は制限したままにしたい

awscognito

Cognito の E メールプロバイダーを SES に設定したいのですが、 InvalidEmailRoleAccessPolicyException が出て変更ができません。 この問題をどうにか解決したいです。

alt text SES に変えようとしたり、送信者の名前を変えようとするとエラーで変更できない 1

[InvalidEmailRoleAccessPolicyException] ユーザープールの E メール設定の更新に失敗しました。
 
requestId: cb1bc024-dd70-416d-bec7-251fb4be1e7c
time: Wed Apr 15 2026 12:33:45 GMT+0900 (日本標準時)
code: InvalidEmailRoleAccessPolicyException
message: Cognito is not allowed to use your email identity

心当たりはある

SES の ID (ドメイン) の承認ポリシーでメールの送り先に制限をかけています。 開発用なので送信先が限られているのと、間違ってあらぬところにメールを送ると困ってしまうため、 ここで制限をかけています。

alt text

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": "arn:aws:ses:ap-northeast-1:123456789012:identity/mail.zu-min.com",
      "Condition": {
        "ForAnyValue:StringNotLike": {
          "ses:Recipients": ["*@example.com"]
        }
      }
    }
  ]
}

このポリシーを削除すれば Cognito 設定変更が通るのです。 Cognito のメール関係の設定変える時だけこのポリシーを外せばいいのですが、 少々面倒ですし3か月後には忘れる自信があります。 また、 IaC で git の main ブランチにマージ&プッシュしたら適用するっていう管理方法をしてるので、 ポリシー外した履歴が無駄に残るという問題もあります。 ここはポリシーを維持したまま何とか解決したいです。

テストメールの送信元を調べる

メール送っているっぽいことは上記のポリシーを外せば通るという所から確定しています。

送信先のメールアドレスが分かればいいのですが、 Claude やらチャッピーやらに聞いてもいまいちわかりません。

ヒントを探す

つまるところ、 "ses:Recipients": ["*@example.com"] に何かを追加すればいいわけです。

*@*.com とかから試してみましょう。

alt text 通った

あまりいいことをしている気分ではないですが、いろいろ試してみましょう。 そういえば SES のテストメール送信時にシナリオっていう項目がありましたね。

alt text メールアドレスのようなものが見える

試す

ひとまず success@simulator.amazonses.com への送信を許可してみましょう。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": "arn:aws:ses:ap-northeast-1:123456789012:identity/mail.zu-min.com",
      "Condition": {
        "ForAnyValue:StringNotLike": {
          "ses:Recipients": [
            "*@example.com",
            "success@simulator.amazonses.com"
          ]
        }
      }
    }
  ]
}

alt text

あっさりと答えが見つかりました。

まとめ

success@simulator.amazonses.com への送信を許可すればいいようです。 希望通り送信先制限かけたまま Cognito 設定変更できるようになりました。 ドキュメントには特に記載がないようなので非公式情報ではありますが、 開発用ですし OK ということにします。

Footnotes

  1. requestId は隠す必要があるか分かりませんけど、適当な UUID に置き換えています。 mail.zu-min.com とかは DNS 引けばわかるしそのまま。

関連記事