AWS CloudTrailのイベントをAmazon Athenaを使わなくても取得して分析できるよって話
こんにちは、臼田です。
みなさん、AWSのイベント分析してますか?(挨拶
今回はAWS CloudTrailのイベントを分析する手法の1つを紹介します。
概要
みなさんはAWS CloudTrailのイベントをAmazon Athenaを利用して分析してますか?
私も普段はよくAmazon Athenaを利用しますが、AWS CloudTrailのマネジメントコンソールでイベント履歴を確認することも多いです。こちらのほうが手っ取り早いことも多いですし。
しかし、イベント履歴の画面では細かいクエリを書いていくことはできません。1つの条件と時間指定程度です。
また、限定的なケースですが既存でS3バケットに対して証跡が保存されていなかったり、今ある権限ではS3バケットに保存されたイベントにアクセスできない場合などもあります。
というわけで他の方法でもイベントを取得して分析してみましょう。
イベントをダウンロードする
AWS CloudTrailではイベント履歴の画面から「イベントをダウンロード」することができます。
こちらの機能ではCSVとJSONの形式でダウンロードすることが可能です。
用途に合わせて使い分けたいところですが、データ形式以上に重要な差異があるためこの選択は気をつけなければいけません。
JSON形式は通常のS3バケットに保存されたログファイルと同じようにすべての内容が記載されています。
一方で、CSV形式は独自のフォーマットでイベントをサマライズしたレコードがならんでいるだけです。以下のようなフォーマットであり、完全な情報を得ることができません。
User name,AWS access key,Event time,Event source,Event name,AWS region,Source IP address,User agent,Error code,Resources,Request ID,Event ID,Read-only,Event type,Recipient Account Id,Event category
username,,2025-05-05T18:01:09Z,signin.amazonaws.com,RenewRole,ap-northeast-1,xx.xx.xx.xx,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",,[],,00000000-0000-4000-8000-000000000000,false,AwsConsoleSignIn,999999999999,Management
もちろん完全なデータではない分軽量であるため、このカラムのみで満足できる場合はCSVでも良いでしょう。うまく使い分けてください。
ダウンロードを開始すると、以下のようにマネジメントコンソール上のフィルターが適用された状態でイベントの取得が開始されます。
つまり必要に応じてこれを調整することが可能です。全数を取得したい場合、フィルターのルックアップ値を空にしてエンターを押すとすべてのイベントが表示されますので、この状態でダウンロードを開始すれば、「すべての属性、すべての値、過去90日間」の取れる限りすべてのイベントを取得開始できます。
しかしこれも注意が必要です。このダウンロードで一度に取得できるのは最大200,000件のイベントとなっています。
記録されたイベント履歴は、CSV または JSON 形式のファイルとしてダウンロードできます。1 つのファイルで最大 200,000 個のイベントをダウンロードできます。イベントの上限が 200,000 に達すると、CloudTrail コンソールに追加のファイルをダウンロードするオプションが表示されます。ダウンロードするファイルのサイズを減らすには、フィルタと時間範囲を使用します。
コンソールで最近の管理イベントを確認する - AWS CloudTrail
これを超えると、一旦ファイルが保存された後、以下のように残りのダウンロードを続行するか確認が出ます。
継続して取得すると、また同じ画面になります。画面上では続きかどうかはわかりません。
この次にネックになるのはセッションタイムアウトです。必要に応じ時間を絞るなどして対処していくと良いでしょう。
ちなみに最初の200,000件を取得するまでおよそ30分かかりました。参考にしてください。
200,000件のイベントのデータ量で、323MBとなりました。2回目の取得はセッションタイムアウトとなったため、93.6MBまでとなりました。このイベントは近い時間から取得するため、継続して取得していく場合はだんだん時間を後ろにずらしていく形になります。
取得したファイルをDuckDBに読み込ませると、ちゃんと200,000件あることが確認できました。
これでAthenaでこねこねするのとは別のアプローチで分析できますね。
まとめ
今回はAmazon Athenaを利用せずAWS CloudTrailのイベント履歴からダウンロードして分析する方法について解説しました。
ダウンロードのファイル形式による違いや取得のための制限に注意する必要があるので、同じことを行う場合は気をつけてください。