0Pricing
Cloud & IT Cert Prep · レッスン

速度とコストのためのログパーティション化

調査を高速化し、コストを削減できるようにデータを整理します。

「速度とコストのためのログパーティション化」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

スキャンのコスト

Athenaはdata scannedの量に応じて課金されるため、1日分のイベントを探すために1年分のログをクエリすると、コストと時間の無駄になります。Partitioningは、Athenaが関連するデータの部分だけを読み取れるようにする手法で、クエリを大幅に高速化し、低コストにします。これはAthenaで最も重要な最適化です。

パーティションとは

partitionは、通常は日付の構成要素である1つ以上の列の値によってテーブルのデータを分割し、それらをS3プレフィックスに対応付けます。CloudTrailログはすでにregion/year/month/day単位で配置されているため、これらをパーティションにすると物理構造と一致し、クエリ範囲外のフォルダーをAthenaが読み飛ばせるようになります。

パーティションプルーニング

クエリでパーティション列をフィルタリングすると、Athenaはpartition pruningを実行し、一致するプレフィックスだけを読み取って残りを無視します。適切なパーティションが設定されていれば、1日分のクエリでスキャンするバケットの割合はごくわずかです。プルーニングがなければ、同じクエリでも不要なデータを含め、すべてをスキャンしてしまいます。

パーティションを手動で追加する

パーティションを登録する方法の1つはALTER TABLE ADD PARTITIONです。パーティションの値をS3ロケーションに対応付けます。この方法は機能しますが、毎日のログデータでは毎日パーティションを追加する必要があるため、手間がかかります。過去のデータを一度だけ読み込む用途には適していますが、継続的に増えるログには向きません。

パーティションプロジェクション

Partition projectionは、現在推奨されている最新のアプローチです。日付の範囲などのパーティションパターンをAthenaに指定すると、カタログに各パーティションを保存せず、クエリ実行時にプレフィックスを計算します。継続的に増加するCloudTrailやFlow Logのデータでは、これにより絶え間ないメンテナンスを避け、プルーニングを自動化できます。

TBLPROPERTIES (
  'projection.enabled'='true',
  'projection.dt.type'='date',
  'projection.dt.range'='2023/01/01,NOW',
  'projection.dt.format'='yyyy/MM/dd'
)

パーティション用のGlueクローラー

Glue crawlerを使って、新しいパーティションをスケジュールに従って検出し、カタログに追加することもできます。これにより変化するデータのパーティション管理を自動化できます。ただし、日付ベースで規則的に配置されたデータでは、通常、パーティションプロジェクションのほうが簡単で、クローラーのコストもかかりません。

列指向形式でさらに削減する

パーティションによって読み取るファイルを限定できるのに対し、Parquetのようなcolumnar formatsでは、それらのファイル内で読み取る列を限定できます。ログをParquetに変換して日付でパーティション分割するなど、両方を組み合わせると、スキャンするデータ量を桁違いに削減できます。多くのチームでは、大量のログについてクエリに最適化したコピーを保存する変換ジョブを実行しています。

圧縮

GZIPやSnappyなどの形式でログデータを圧縮すると、スキャンするバイト数とストレージコストをさらに削減できます。Athenaは圧縮ファイルを透過的に読み取ります。パーティション分割や列指向ストレージと組み合わせることで、圧縮は大規模なログ分析を現実的なコストで行うための3つの手法を完成させます。

セキュリティ向けパーティションを設計する

セキュリティログでは、調査に時間範囲を設定するため、主にdateでパーティション分割します。また、organization trailでは、特定のアカウントをすばやく対象にできるよう、account or regionでのパーティション分割も検討します。適切なパーティションキーは、実際の調査でどのようにフィルタリングするかを反映し、実際のクエリでプルーニングを最大限に活用できます。

スキャンメトリクスを確認する

Athenaはクエリごとのdata scannedを報告します。このメトリクスを確認すると、パーティション分割が機能しているか判断できます。適切にパーティション分割され、時間範囲を絞ったクエリであれば、スキャンする量はテラバイトではなくメガバイトになるはずです。予想以上に多くスキャンされる場合は、フィルターがパーティション列と一致していない可能性があります。

最適化を組み合わせる

最適化の基本構成は、無関係なデータを読み飛ばすpartition、必要な列だけを読み取るcolumnar format、バイト数を縮小するcompressionです。これらをCloudTrailとFlow Logsに適用すると、時間とコストのかかるスキャンを高速で低コストな調査に変えられます。これは大規模なセキュリティ分析にまさに必要なことです。

理解度チェック

パーティション分割に関する知識を確認しましょう。

まとめ

Partitioningは列(通常は日付)によってテーブルデータを分割し、Athenaがpartition pruningを行って関連するプレフィックスだけをスキャンできるようにします。これによりコストと時間を削減できます。増え続けるログでは、手動のADD PARTITIONやクローラーよりもpartition projectionを優先します。パーティションをcolumnar Parquetやcompressionと組み合わせると大幅な削減効果が得られます。セキュリティログはdateとaccountでパーティション分割し、data-scannedメトリクスを確認しましょう。

よくある質問

「速度とコストのためのログパーティション化」レッスンは無料ですか?

はい。「速度とコストのためのログパーティション化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

「速度とコストのためのログパーティション化」で何を学びますか?

調査を高速化し、コストを削減できるようにデータを整理します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「速度とコストのためのログパーティション化」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. AthenaによるS3ログのクエリ
  2. CloudTrailデータ上のテーブル作成
  3. SQLクエリによるインシデント調査
  4. 速度とコストのためのログパーティション化
← Cloud & IT Cert Prepに戻る