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

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

利用目的

CloudWatchLogsのロググループにからS3へのデータエクスポートタスクを作成します。
エクスポートタスクの作成には、LambdaのIAMロール権限とともにS3バケットのバケットポリシーにも設定が必要となります。

この関数では、エクスポートタスクの作成のみを行います。
実際にCloudWatchLogsからS3へのエクスポートはCloudWatchLogsにて実施されています。

処理は非同期にて実施されるため、Lambdaの実行完了後もCloudWatchLogsによりエクスポートは続けられます。
完了を確認するには、describe_export_tasksを実行する必要があります。

また、ログのエクスポート先となるS3バケットに以下のバケットポリシーを設定しておく必要があります。
「"Resource": "arn:aws:s3:::xxxxxxxxxxxxxx"」の部分はエクスポート先のS3バケット名に変更ください。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.ap-northeast-1.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::xxxxxxxxxxxxxx"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logs.ap-northeast-1.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::xxxxxxxxxxxxxx/*"
        }
    ]
}

権限

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

コード生成

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

cwl_client = boto3.client('logs')
def lambda_handler(event, context):
    response = cwl_client.create_export_task(
        logGroupName='',
        fromTime=,
        to=,
        destination=''
    )
    
    print(response)
    return 0

▼基本設定

タスク名
ロググループ名*
ログストリーム名
開始時刻*
終了時刻*
送信先*
送信先プレフィックス

仕様

こちらの記事もどうぞ