Cognito の E メールプロバイダーを SES に設定したいのですが、 InvalidEmailRoleAccessPolicyException が出て変更ができません。 この問題をどうにか解決したいです。
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 (ドメイン) の承認ポリシーでメールの送り先に制限をかけています。 開発用なので送信先が限られているのと、間違ってあらぬところにメールを送ると困ってしまうため、 ここで制限をかけています。
{
"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 とかから試してみましょう。
あまりいいことをしている気分ではないですが、いろいろ試してみましょう。 そういえば SES のテストメール送信時にシナリオっていう項目がありましたね。
試す
ひとまず 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"
]
}
}
}
]
}あっさりと答えが見つかりました。
まとめ
success@simulator.amazonses.com への送信を許可すればいいようです。
希望通り送信先制限かけたまま Cognito 設定変更できるようになりました。
ドキュメントには特に記載がないようなので非公式情報ではありますが、
開発用ですし OK ということにします。
Footnotes
-
requestId は隠す必要があるか分かりませんけど、適当な UUID に置き換えています。
mail.zu-min.comとかは DNS 引けばわかるしそのまま。 ↩


