EventBridge から KMS 暗号化されている SNS をターゲットにした場合に、SNS 通知がされない事象への対処方法

EventBridge から KMS 暗号化されている SNS をターゲットにした場合に、SNS 通知がされない事象への対処方法

KMSキーポリシーにサービスからの呼び出しを許可、また、呼び出し側もKMSへのアクセスポリシーが必要です。
2025.03.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていること

Amazon SNS トピックを作成し、KMS 暗号化を有効化しました。

EventBridge を作成し、ターゲットとして、上記の SNS トピックを指定しました。

EventBridge の通知条件を満たしたにも関わらず、SNS トピックがパブリッシュされませんでした。

どのように解決すればいいですか?

どう解決すればいいの?

Amazon SNS トピックに KMS 暗号化を有効化にした場合、EventBridge に設定している IAM ロールの IAM ポリシーに KMS へのアクセス許可が必要です。また、KMS キー側には、EventBridge サービスからのアクセス許可が必要です。

下記の通り、ポリシーを設定してください。

EventBridge に設定している IAM ロールの IAM ポリシー

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "kms:DescribeKey",
            "kms:GenerateDataKey",
            "kms:Decrypt"
        ],
        "Resource": [
            "<KMSKeyARN>"
        ]
    }
}

KMS キーポリシー

{
  "Version": "2012-10-17",
  "Id": "key-consolepolicy-3",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AccountID>:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "Allow_AWS_Service_for_CMK",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "events.amazonaws.com"
        ]
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "<AccountID>"
        }
      }
    }
  ]
}

参考資料

Amazon SNS 暗号化キーとコストの管理 - Amazon Simple Notification Service


AWSテクニカルサポートノートについて

過去にクラスメソッドのAWS総合支援サービスで頂いたお問合せの中から、通常のAWS利用時でも有益になりうる情報をテクニカルサポートチームがTIPSとしてご紹介しています。技術サポートは、無料でご提供しております。詳細は下記ボタンからご覧ください。

クラスメソッドのAWSサポートの詳細を見る

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事