イメージ:
こんにちは😺
技術課の山本です。
気になったので、「どういう用途があるのか?」という観点で調べてみました。
結論としては、「何も考えずに長らく CloudWatch Logs に保管していたログを、S3 に保管して料金削減したい」という場合に良いのかなと感じました。
手動エクスポートなので、暫定的な対処の位置づけです。
AWS マネジメントコンソールから手動で S3 バケットにエクスポートする
AWS マネジメントコンソールの CloudWatch Logs の画面から、期間とストリーム名を指定して、自他の AWS アカウントにある S3 バケットにエクスポートできます。
開始と終了は UTC 時間で記載する必要があります。CloudWatch Logs のタイムゾーン表示は UTC+9 になっていたりするので注意です。
CloudWatch Logs のタイムゾーン表示:
注意点は、事前に S3 バケットのバケットポリシーを記述し、CloudWatch Logs のサービスから S3 バケットへの Put オブジェクトを許可する必要があります。
詳細は以下のドキュメントをご参照ください。
コンソールを使用してログデータを Amazon S3 にエクスポートする
エクスポートしたログは、ログストリームごとにフォルダができています。
参考:CloudWatch Logs のログストリーム画面
ログストリームのフォルダ内に 000000.gz という圧縮ファイルができています。試していないものの、サイズがある程度の大きさになると 000001.gz というようにファイルが増えるのでしょう。ドキュメントには特に言及なしでした。
解凍したファイルの中身です。一番最初に INIT_START のログが来ていると嬉しいのですが、なぜか真ん中あたりにあります・・・。時系列でエクスポートしてくれないようです。1 回目の実行ログの上に、2 回目の実行ログがあります。
参考:実際のログストリームの中身。一番最初に INIT_START のログがあります。
また、S3 はフォルダ単位のダウンロードができず、ファイルも 1 ファイルずつ選択してダウンロードする必要があります。
まとめ
AWS マネジメントコンソールから手動で S3 バケットにエクスポートするときには以下が注意点でした。
- 事前に S3 バケットに CloudWatch Logs サービスからの Put を許可すること
- エクスポートする際に開始時間と終了時間を UTC 時間で指定すること
- ログファイルは圧縮した状態となること
- ログファイルの中身は時系列ではないこと
- S3 のマネジメントコンソールでは 1 ファイルずつしかダウンロードできないこと
上記より、用途としては保管のために Export するための機能かなと思います。
検索性としては CloudWatch Logs の画面からの方が断然良いので。
Athena を使いたい場合も、CloudWatch Logs から直接クエリできます。
結論としては、「何も考えずに長らく CloudWatch Logs に保管していたログを、S3 に保管して料金削減したい」という場合に良いのかなと感じました。
手動エクスポートなので、暫定的な対処の位置づけです。
AWS マネジメントコンソールから S3 にエクスポートしたあとに、CloudWatch Logs 側で保持期間を短くする、というイメージですね。
S3 バケット上でもさらに料金を削減するなら、Intelligent-Tiering を設定するのも良いかなと思います。
なお、標準 S3 の最初の 50 TB の保管料金が、「0.023USD/GB」、CloudWatch Logs は「0.03USD/GB」くらいです。執筆時点 (2023/12/11)。
関連ブログ
CloudWatch Logs を "自動で" S3 にエクスポートする方法。その 1 、Kinesis Data Firehose を使用する方法。 - サーバーワークスエンジニアブログ
CloudWatch Logs を "自動で" S3 にエクスポートする方法。その 2 、EventBridge Scheduler を使用する方法。 - サーバーワークスエンジニアブログ
余談
相変わらず軽いトレイルランニングにハマっています。
最近は「伊豆トレイルジャーニー」という大会を見に行ってきました。
トップのランナーたちは本当に速くてびっくりしました。
富士山と駿河湾が綺麗でした。
山本 哲也 (記事一覧)
カスタマーサクセス部のエンジニア。2024 Japan AWS Top Engineers に選んでもらいました。
今年の目標は Advanced Networking – Specialty と Machine Learning - Specialty を取得することです。
山を走るのが趣味です。今年の目標は 100 km と 100 mile を完走することです。 100 km は Gran Trail みなかみで完走しました。OSJ koumi 100 で 100 mile 砕け散りました。どこかで 100 mile やりたいです。
基本的にのんびりした性格です。座右の銘は「いつか着く」