チュートリアル: EventBridge を使用して Amazon S3 オブジェクトレベル操作のログを記録する - Amazon EventBridge

チュートリアル: EventBridge を使用して Amazon S3 オブジェクトレベル操作のログを記録する

S3 バケットにオブジェクトレベルの API 操作のログを記録することができます。Amazon EventBridge がこれらのイベントと一致する前に、AWS CloudTrail を使用してこれらのイベントを受信するように設定された証跡を設定する必要があります。

ステップ 1: AWS CloudTrail 証跡を設定する

S3 バケットのデータイベントを AWS CloudTrail および EventBridge に記録するには、証跡を作成します。証跡は、アカウントでの API コールと関連イベントをキャプチャし、指定した S3 バケットにログファイルを提供します。既存の証跡を更新するか、新しい証跡を作成できます。

証跡を作成するには

  1. https://console.aws.amazon.com/cloudtrail/ にある CloudTrail コンソールを開きます。

  2. ナビゲーションペインで、[証跡]、[新しい証跡を追加する] を選択します。

  3. [Trail name (証跡名)] に、証跡の名前を入力します。

  4. [Data events (データイベント)] に、バケット名とプレフィックスを入力します (オプション)。証跡ごとに、最大 250 個の Amazon S3 オブジェクトを追加できます。

    • バケットのすべての Amazon S3 オブジェクトのデータイベントを記録するには、S3 バケットと空のプレフィックスを指定します。そのバケットのオブジェクトでイベントが発生すると、証跡がイベントを処理して記録します。

    • 特定の Amazon S3 オブジェクトのデータイベントを記録するには、[Add S3 bucket (S3 バケットを追加する)] を選択し、S3 バケットおよびオプションとしてオブジェクトのプレフィックスを指定します。そのバケットのオブジェクトでイベントが発生し、オブジェクトが指定したプレフィックスで始まっていると、証跡がイベントを処理して記録します。

  5. 各リソースについて、ログ記録の対象を [読み取り] イベントにするか、[書き込み] イベントにするか、または両方のタイプのイベントにするかを指定します。

  6. [Storage location] で、ログファイルストレージに指定する S3 バケットを作成するか既存のバケットを選択します。

  7. [作成する] を選択します。

詳細については、AWS CloudTrail User Guideの「データイベント」を参照してください。

ステップ 2: AWS Lambda 関数を作成する

S3 バケットのデータイベントのログを記録する Lambda 関数を作成します。ルールを作成するときに、この関数を指定します。

Lambda 関数を作成するには

  1. AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. Lambda を初めて使用する場合は、ウェルカムページを参照してください。[関数を作成する] を選択します。それ以外の場合は、[関数の作成] を選択します。

  3. [Author from scratch] を選択します。

  4. [一から作成] で、次の操作を行います。

    1. Lambda 関数の名前を入力します。たとえば、関数名を LogS3DataEvents とします。

    2. [ロール] で、[カスタムロールを作成する] を選択します。

      新しいウィンドウが開きます。必要に応じて [ロール名] を変更し、[許可する] を選択します。

    3. Lambda コンソールに戻り、[関数を作成する] を選択します。

  5. Lambda 関数のコードを次のように編集し、[保存する] を選択します。

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };

ステップ 3: ルールを作成する

Amazon S3 データイベントに応答して Lambda 関数を実行するルールを作成します。

ルールを作成するには

  1. https://console.aws.amazon.com/events/ で Amazon EventBridge コンソールを開きます。

  2. ナビゲーションペインで [ルール] を選択します。

  3. [ルールを作成する] を選択します。

  4. ルールの名前と説明を入力します。

  5. [Define pattern (パターンの定義)] で、以下の操作を行います。

    1. [イベントパターン] を選択します。

    2. [Pre-defined pattern by service (サービスによる定義済みパターン)] を選択します。

    3. [Service provider (サービスプロバイダー)] で、[AWS] を選択します。

    4. [サービス名] で、[Simple Storage Service (S3)] を選択します。

    5. [イベントタイプ] で、[Object Level Operations (オブジェクトレベルのオペレーション)] を選択します。

    6. [特定のオペレーション]、[PutObject] の順に選択します。

    7. デフォルトでは、このルールはリージョン内のすべてのバケットのデータイベントと一致します。特定のバケットのデータイベントに一致させるには、[特定のバケット (名前別)] で指定し、1 つ以上のバケットを指定します。

  6. [Select event bus (イベントバスを選択)] で、[AWS default event bus (AWSデフォルトイベントバス)] を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  7. [ターゲット] で、Lambda 関数を選択します。

  8. [関数] で、作成した Lambda 関数を選択します。

  9. [作成する] を選択します。

ステップ 4: ルールをテストする

ルールをテストするには、オブジェクトを S3 バケットに配置します。Lambda 関数が呼び出されたことを確認できます。

Lambda 関数のログを表示するには

  1. https://console.aws.amazon.com/cloudwatch/ にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで [ログ] を選択します。

  3. Lambda 関数 (/aws/lambda/function-name) のロググループの名前を選択します。

  4. 起動したインスタンスの関数によって提供されるデータを表示するログのストリーム名を選択します。

また、証跡に指定した S3 バケット内の CloudTrail ログの内容を確認することもできます。詳細については、『AWS CloudTrail User Guide』の「CloudTrail ログファイルの取得と表示」を参照してください。