目次

S3のPutObjectイベントを推定する方法

CloudTrailでS3のPutObjectイベントをログに記録できるようにすると、1時間あたりの受信ファイルの総数を確認できます。その後、イベントのCloudTrailログでクエリを実行できます。

前提条件: S3のPutObjectイベントに対してCloudTrailを有効にするには、CloudTrailログを格納するための専用のバケットを設定する必要があります。

  1. CloudTrailで、 [Create trail]をクリックします。

    ダッシュボードページ

  2. [Trail name]と[Trail log bucket name]に入力して、ログを保存します。

    1. (オプション) ログのバケットの Prefix を入力します。
    2. (オプション)バケットデータ暗号化の SSE-KMS を設定します。
    3. Nextをクリックします。

    トレイル属性の選択

  3. 収集するログイベントを設定します。

    1. Data eventsをオンにし、 Management eventsをオフにします。
    2. [データイベント]で、次を選択します。
      • DataイベントタイプにはS3
      • ログセレクタテンプレートにはLog writeOnly events
    3. Nextをクリックします。

    ログイベントを選択

  4. Create trailをクリックします。 ダッシュボードで、Trailが[ログ]ステータスになっていることを確認できます。

    証跡付きダッシュボード

ログをクエリするAthenaテーブルを作成する

Athenaでデータベースとテーブルを作成するには、Amazon S3で読み取り時クエリを実行するためのスキーマとテーブルデータの場所を記述する必要があります。

  1. [CloudTrail]→[Event history]に移動します。

  2. [Create Athena table]をクリックします。

    Athenaテーブルの作成

  3. [Storage location]で追跡ログを保存するバケットの名前(「my-trail-logs-bucket-name」など)を選択します。

    AWSでテーブルを作成する

  4. [ Create table ]をクリックします。

AthenaでPutObjectログのクエリを実行する

  1. Athenaで、[+]をクリックして新しいクエリを追加します。

    クエリを追加

  2. 次のクエリ文字列をクエリパネルにコピーします。

    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
    
  3. 「cloudtrail_logs_は「Tables」のテーブル名に使用します。

  4. [Run] または [Run again]をクリックします。