AWS User Notifications の検証メールのリンクは適切な権限でログインしていないとアクティブにできない

2024.01.28

こんにちは、AWS事業本部の平木です!

皆さんは AWS User Notifications を使って手軽に通知実装していますか?

AWS User Notifications を使用することで簡単に AWS の様々なイベント通知を作成・管理できます。
配信先チャネルにEメールを指定できますが、Amazon SNS とは異なり上手くアクティベーションできないことがありました。

アクティベートのリンクを押したところ、
下記のように「検証リンクの有効期限が切れています」と表示されました。

作成直後にも関わらずなぜかこのような表示となってしまったので検証しブログにしてみました。

いきなり結論

検証を通すには、AWSコンソールにログインした上で、
適切な権限である notifications-contacts:ActivateEmailContact が付与されている必要があるため
権限を確認しましょう。

背景

管理者権限を持っている環境でイベント通知を作成するため、AWS User Notifications で配信チャネルを作成しました。

配信チャネルを作成すると、エンドポイントに指定したメールアドレス宛に下記のようなメールが届きます。

「Verify email」を押下すると問題なければ下記のような画面が出てきます。

しかし冒頭でも載せたように「検証リンクの有効期限が切れています」といった画面が表示され困りました。

結果

検証リンク関連で不具合が発生しているかと思い何度も再送信してみましたが結果は変わらず、
検証リンクが通る環境と通らない環境の差分を確認したところ、AWSコンソールへログインしている権限が管理者権限とReadOnly権限と異なり、ReadOnly権限では検証が通りませんでした。

ここで権限がないことが分かったので公式ドキュメントを見ていたところ、下記ページを見つけました。

Actions, resources, and condition keys for AWS User Notifications Contacts - Service Authorization Reference

このページを見て ActivateEmailContact という API があることが分かり、下記のような形で権限を追加しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "notifications-contacts:ActivateEmailContact",
            "Resource": "*"
        }
    ]
}

すると無事検証が通りました。

おわりに

今回は、AWS User Notifications の検証メールをアクティブにできない事象に対処しました。

Amazon SNSでは検証用のリンクを押すだけで検証が通りますが、ちょっと勝手が異なるようですね。

この記事がどなたかの役に立つと嬉しいです。