【AWS Lambda】put_subscription_filterの使い方を簡単解説!

今回は、boto3関数のput_subscription_filterについて解説します。
「どうやって使うの?」の解説からパラメータを入力したら自動でコード作成までお手伝いします。

利用目的

CloudWatchLogsのロググループにサブスクリプションフィルターを作成します。
サブスクリプションフィルターを設定することで、CLoudWatchLogsに記録されたログをリアルタイムに別サービスへ連携することができます。
例えば、Lambdaに連携して記録された内容をもとにアクションを実施させることもできますし、Kinesisと連動させることでデータ分析基盤へログをストリーミングすることも可能です。
サブスクリプションフィルターの詳細が知りたい場合は、以下のURLを参照してください。

 CloudWatch Logs サブスクリプションフィルターの使用

既に同名のサブスクリプションフィルターが作成されている場合は、更新が行われます。
なので、既存のサブスクリプションフィルターの設定を変更した場合もこの関数を使用できます。
各ロググループには、最大2つまでサブスクリプションフィルターを作成することが可能です。

サブスクリプションフィルターで連携されるログは、Base64でエンコードしたうえでさらにGZIP圧縮した状態で連携されます。
受けとり側のサービスで解凍とデコードの対応が必要な場合がありますのでご注意ください。

権限

Lambdaに付与するIAMロールに「logs:PutSubscriptionFilter」と「iam:PassRole」の権限を付与してください。

コード生成

パラメータを入力することで、コピーすればすぐに使えるLambdaコードを生成できます。
「*」のついている物は必須パラメータで、ついていないものはオプションです。
import boto3

cwl_client = boto3.client('logs')
def lambda_handler(event, context):
    response = cwl_client.put_subscription_filter(
        logGroupName='',
        filterName='',
        filterPattern='',
        destinationArn=''
    )

    return 0

▼基本設定

ロググループ名*
フィルター名*
フィルターパターン*
送信先ARN*

送信先として「Kinesis Data Streams」、
「Kinesis Firehose」を指定する場合は、
IAMロールARNの指定が必要となります。

▼オプション設定

IAMロールARN

送信先として「Kinesis Data Streams」、
「Kinesis Firehose」を指定する場合は、
このパラメータの指定が必要となります。

グループ化

送信先として「Kinesis Data Streams」を指定する場合のみ、
このパラメータの指定が可能です。

仕様

こちらの記事もどうぞ