初めに
AWSのサービスを使用したログはCloudWatchLogsに集約することができるが、そのログの中で特定のパターンのログを抽出してS3に保存したい場面がある。
今回の記事ではCloudWatchLogsのログをKinesisDataFitehoseで抽出/変換してS3にファイル出力する構成を記事にした。
使うAWSサービス
・Amazon CloudWatch
・Amazon Kinesis Data Firehose
・AWS Lambda
・Amazon S3
実現方法
アーキテクチャ
①Lambda関数の作成
・使用用途に応じたLambda関数を作成する
②KinesisDataFirehoseの設定
<KinesisDataFirehose配信ストリームを作成する>
「ソースと送信先を選択」
・以下の設定を行う
ソース:DirectPUT
送信先:Amazon S3
「レコードを変換及び転換」
・以下の設定を行う
データ変換をオンにする:チャックボックスを有効化
AWS Lambda関数:①で作成したLambda関数を指定する
「送信先の設定」
・以下の設定を行う
S3バケット:抽出/変換結果を保存するS3バケットを指定する
S3バケットプレフィックス(オプション):プレフィックスの指定がある場合や、年月日単位でプレフィックスを分けたいなどの場合は入力する
③CloudWatchの設定
<サブスクリプションフィルターを作成する>
「ロググループ」
・以下の順に選択してサブスクリプションフィルターを作成する画面を表示する
ロググループ > サブスクリプションフィルター > KinesisFirehoseサブスクリプションフィルターを作成
「Kinesis Firehose配信ストリームを選択」
・②で設定したKinesis Firehoseストリームを選択する
最後に一言
CloudWatchのログを確認する際にどうしても目的のもの以外のログが多く、なかなか目的のログが発見できないことがある。その対策のためにあらかじめKinesis経由で目的の内容だけ抽出した結果をS3に残しておけば例えば障害発生時の調査などで利用できるのではないかと思う。