EventBridge ルールでマルチアカウントの GuardDuty の検出結果の通知を特定のアカウントのみに除外する方法

困っていた内容

EventBridge ルールでマルチアカウントの GuardDuty の検出結果の通知を設定しております。
複数あるアカウントの内、特定のアカウントのみ除外にしたいのですが、可能でしょうか。

どう対応すればいいの?

EventBridge ルールのイベントパターンにて、anything-but を利用して、除外したいアカウントを記載することで、特定のアカウントのみ除外することが可能となります。
例として、下記のように設定することができます。

{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": {
    "severity": [{
      "numeric": [">=", 7]
    }],
    "accountId": [{
      "anything-but": ["<AWSアカウントA>", "<AWSアカウントB>", "<AWSアカウントC>",]
    }]
  }
}

上記の例では、重要度「高」の検出結果をAWSアカウントA、B、C 以外の AWSアカウントに通知する設定となります。

補足

多数のアカウントを管理しており、その内の少ない数のアカウントに対して、除外したい場合は、anything-but を活用することができます。
なお、アカウントを2〜3つ管理している状態で、その内の特定のアカウントのみに通知したい場合は、下記の方法で実現することも可能です。

{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": {
    "severity": [{
      "numeric": [">=", 7]
    }],
    "accountId": [
        "<AWSアカウントA>"
    ]
  }
}

参考情報