メニュー
AWS Lambda
開発者ガイド

AWS CloudTrail で AWS Lambda を使用する

AWS アカウントで CloudTrail を有効にして、アカウントでの API 呼び出しと関連イベントの履歴のログを取得できます。CloudTrail では、すべての API アクセスイベントが、CloudTrail を有効にするときに指定した Amazon S3 バケットのオブジェクトとして記録されます。

Amazon S3 のバケット通知機能を利用して、Amazon S3 がオブジェクト作成イベントを AWS Lambda に発行するように指示できます。CloudTrail が S3 バケットにログを書き込むごとに、Amazon S3 は Amazon S3 のオブジェクト作成イベントをパラメーターとして Lambda 関数を呼び出すことができます。その S3 イベントでは、CloudTrail で作成されたログオブジェクトのバケット名とキー名などの情報が提供されます。Lambda 関数のコードで、ログオブジェクトを読み取り、CloudTrail でログ記録されたアクセスレコードを処理できます。たとえば、アカウントで特定の API 呼び出しが行われた場合に通知するための Lambda 関数のコードを記述できます。

このシナリオでは、S3 バケットにアクセスログを書き込みできるように、CloudTrail を有効にします。AWS Lambda については Amazon S3 がイベントソースであるため、Amazon S3 が AWS Lambda にイベントを発行して Lambda 関数を呼び出します。

注記

Amazon S3 でサポートできるイベント送信先は、1 つだけです。

Amazon S3 をイベントソースとして設定する方法の詳細については、「AWS Lambda を Amazon S3 に使用する」を参照してください。

以下の図はフローをまとめたものです。

  1. AWS CloudTrail はログを S3 バケットに保存します (オブジェクト作成イベント)。

  2. Amazon S3 がオブジェクト作成イベントを検出します。

  3. Amazon S3 は、バケットの通知設定で指定されている Lambda 関数を呼び出すことによって、s3:ObjectCreated:* イベントを AWS Lambda に発行します。Lambda 関数のアクセス権限ポリシーには Amazon S3 がその関数を呼び出すための権限が含まれているため、Amazon S3 はその関数を呼び出すことができます。

  4. AWS Lambda は、Lambda 関数の作成時に指定された実行ロールを引き受けることで、Lambda 関数を実行します。

  5. Lambda 関数は、パラメーターとして受け取った Amazon S3 イベントを読み取り、CloudTrail オブジェクトの場所を判別し、CloudTrail オブジェクトを読み取り、CloudTrail オブジェクト内のログレコードを処理します。

  6. 特定の eventTypeeventSource の値が含まれるレコードがログにある場合、イベントを Amazon SNS トピックに発行します。「チュートリアル: AWS CloudTrail で AWS Lambdaを使用する」では、E メールプロトコルを使用して SNS トピックにサブスクライブしているため、E メール通知がユーザーに送信されます。

シナリオの例を説明しているチュートリアルについては、「チュートリアル: AWS CloudTrail で AWS Lambdaを使用する」を参照してください。