【AWS】CloudWatch Logs のログを S3 に移行する方法の比較と注意事項
本記事では、CloudWatch Logs のログを S3 に移行する方法と注意事項を解説します。

前提
CloudWatch Logs のログを S3 に移行する方法は大きく分けて以下の2つがある。
①Kinesis Data Firehoseを利用するパターン
ログ発生時、ニアリアルタイムでS3にも転送する。
②EventBridge+Lambdaを利用するパターン
保存期間を経過したログをLambdaを利用して転送する。
説明
①Kinesis Data Firehoseを利用するパターン
コスト$:ログ量によるが、基本的に数十ドル程度かかる。
難易度:Subscription FilterとFirehoseの設定のみ。
運用面:基本必要なことはなし。
②EventBridge+Lambdaを利用するパターン
※ EventBridge の API である Export Task が、1つのアカウントおよびリージョンにて同時に 1 度のみ実行可能という制約があり、定期的な実行として、AWSは推奨していない。
また、上記制約のため、複数のロググループがある場合、Step Functionが必要になる可能性がある。
コスト$:ログ量によるが、Lambda、Step Function、 EventBridgeの従量課金のため、基本的に無料か数十ドル以下と安い。
難易度:Lambdaの作成が必要。
運用面:LambdaやStep Function周りでエラー等が発生する可能性がある。