イベントログを取得する方法
①AWS SDK
②AWS CLI
AWS SDKの使い方
pythonのSDK
「AWS SDK for Python (Boto3)」です。
https://aws.amazon.com/jp/sdk-for-python/
どんな関数があるか
何を使えばイベントログが取れるか
①filter_log_events
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html#CloudWatchLogs.Client.filter_log_events
・startTime/endTimeで日時の範囲を指定してデータ抽出が可能。ただし、指定する値がUNIXタイムの”””ミリ秒”””
→私は、UNIXタイムでしょ?秒でしょ?と思いこんでいて長時間はまってました(笑)
・filterPatternで抽出条件の指定が可能
https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
・1回で取得できるデータは1MBまで。ただし、nextTokenが返却されるから、そのあとそれを使い関数を呼べば続きのデータが取得可能
②start_query
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html#CloudWatchLogs.Client.start_query
・cloudwatchlogインサイトを使用することになる。データの抽出集計ができるが、インサイト分の料金もかかる。
ソースイメージ
★すみません、動かしていません。
あと、lambdaなのでboto3のパッケージのアップロードしないといけません。
import boto3
def lambda_handler(event, context):
client = boto3.client("logs")
response = client.filter_log_events(
logGroupName="【ロググループ名】",
filterPattern="【抽出条件】",
startTime="【開始時間 unixtimeのミリ秒】",
endTime="【終了時間 unixtimeのミリ秒】"
)