S3のPutObjectイベントを推定する方法
CloudTrailでS3のPutObjectイベントをログに記録できるようにすると、1時間あたりの受信ファイルの総数を確認できます。その後、イベントのCloudTrailログでクエリを実行できます。
前提条件: S3のPutObjectイベントに対してCloudTrailを有効にするには、CloudTrailログを格納するための専用のバケットを設定する必要があります。
-
CloudTrailで、 [Create trail]をクリックします。
-
[Trail name]と[Trail log bucket name]に入力して、ログを保存します。
- (オプション) ログのバケットの Prefix を入力します。
- (オプション)バケットデータ暗号化の SSE-KMS を設定します。
- Nextをクリックします。
-
収集するログイベントを設定します。
- Data eventsをオンにし、 Management eventsをオフにします。
- [データイベント]で、次を選択します。
- DataイベントタイプにはS3。
- ログセレクタテンプレートにはLog writeOnly events。
- Nextをクリックします。
-
Create trailをクリックします。 ダッシュボードで、Trailが[ログ]ステータスになっていることを確認できます。
ログをクエリするAthenaテーブルを作成する
Athenaでデータベースとテーブルを作成するには、Amazon S3で読み取り時クエリを実行するためのスキーマとテーブルデータの場所を記述する必要があります。
-
[CloudTrail]→[Event history]に移動します。
-
[Create Athena table]をクリックします。
-
[Storage location]で追跡ログを保存するバケットの名前(「my-trail-logs-bucket-name」など)を選択します。
-
[ Create table ]をクリックします。
AthenaでPutObjectログのクエリを実行する
-
Athenaで、[+]をクリックして新しいクエリを追加します。
-
次のクエリ文字列をクエリパネルにコピーします。
select count() as totalevent, eventname, SUBSTR(eventtime, 1, 13) as eventhour, json_extract(requestparameters, '$.bucketName') as bkt from cloudtrail_logs_<bucket_name> where eventname = 'PutObject' and errorcode is NULL group by eventname, json_extract(requestparameters, '$.bucketName'), SUBSTR(eventtime, 1, 13) order by eventhour
-
「cloudtrail_logs_
」 は「Tables」のテーブル名に使用します。 - [Run] または [Run again]をクリックします。