こんばんは、小寺です。
CloudWatch Logsでアカウントレベル サブスクリプションフィルターなるものが発表されました。
https://aws.amazon.com/about-aws/whats-new/2024/01/amazon-cloudwatch-logs-account-level-subscription-filter/

サブスクリプションフィルターのおさらい

サブスクリプションフィルターは、Kinesis データストリーム、Lambda、または Kinesis Data Firehose で使用できます。サブスクリプションフィルターを介して宛先サービスに送信されるログは、base64 でエンコードされ、gzip 形式で圧縮されます。

CloudWatch Logs に出力されたログをリアルタイムに検知し、特定の文字列を含むデータや全データをKinesis データストリーム、Kinesis Data Firehose、Lambdaなどに連携できる機能です。
設定はCLIで行います。

CloudWatch Logs サブスクリプションフィルタを作成は aws logs put-subscription-filter コマンドで実行できます。
サブスクリプションフィルタを設定したら、CloudWatch Logs によりフィルタパターンに一致するすべての受信ログイベントがストリームに転送されます。

例えば、Cloudwatch logs のサブスクリプションフィルタで 「Error」という文字列があればlambdaにログを送ります。Lambda経由でSNSからチャットに通知する等が利用シーンとしてあげられます。

アップデート内容

put-account-policy API を使用したアカウントレベルのサブスクリプションフィルターがサポートされました。
アップデートにより、Amazon CloudWatch Logs に取り込みされたリアルタイムのログイベントを Amazon Kinesis Data Stream、Amazon Kinesis Data Firehose、または AWS Lambda に配信して、AWSアカウントレベルのフィルターを用いてカスタム処理、分析、または他の宛先に配信できるようになりました。

アカウント レベルのサブスクリプション フィルターの使いどころは、単一のサブスクリプション フィルター ポリシーを設定することで、複数またはすべてのログ グループに取り込まれたログを出力できます。
ログ グループ毎のサブスクリプション フィルターが不要になるので、実行時間の短縮になるのが嬉しいですね。
アカウント レベルのサブスクリプション フィルターは、既存のロググループでもこれから新規作成するロググループの両方で利用可能です。

IAMロール作成後にアカウントレベルでのサブスクリプションフィルターは以下通り、作成可能です。

・Kinesisデータストリーム
aws logs put-account-policy \
--policy-name "ExamplePolicy" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"RoleArn":"arn:aws:iam::123456789012:role/CWLtoKinesisRole", "DestinationArn":"arn:aws:kinesis:region:123456789012:stream/TestStream", "FilterPattern": "Test", "Distribution": "Random"}' \
--selection-criteria 'LogGroupName NOT IN ["LogGroupToExclude1", "LogGroupToExclude2"]' \
--scope "ALL"

・Lambda
aws logs put-account-policy \
--policy-name "ExamplePolicyLambda" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"DestinationArn":"arn:aws:lambda:region:123456789012:function:helloWorld", "FilterPattern": "Test", "Distribution": "Random"}' \
--selection-criteria 'LogGroupName NOT IN ["LogGroupToExclude1", "LogGroupToExclude2"]' \
--scope "ALL"

・Kinesis Data Firehose
aws logs put-account-policy \
--policy-name "ExamplePolicyFirehose" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"RoleArn":"arn:aws:iam::123456789012:role/CWLtoKinesisFirehoseRole", "DestinationArn":"arn:aws:firehose:us-east-1:123456789012:deliverystream/delivery-stream-name", "FilterPattern": "Test", "Distribution": "Random"}' \
--selection-criteria 'LogGroupName NOT IN ["LogGroupToExclude1", "LogGroupToExclude2"]' \
--scope "ALL"