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

チュートリアル: AWS CloudTrail で AWS Lambdaを使用する

AWS アカウントに対して AWS CloudTrail を有効にしていて、アカウントで行われた AWS API の呼び出しのレコード (ログ) が維持され、SNS トピックを作成する API 呼び出しが行われると通知を受信するようになっているとします。アカウントで API 呼び出しが行われると、CloudTrail は、設定されている Amazon S3 バケットにログを書き込みます。このシナリオでは、CloudTrail によってログオブジェクトが作成されると、Amazon S3 がオブジェクト作成イベントを AWS Lambda に発行して Lambda 関数を呼び出すようにします。

Amazon S3は Lambda 関数を実行する際に、CloudTrail によって作成されたオブジェクトのバケット名とキー名を識別する S3 イベントを渡します。Lambda 関数はログオブジェクトを読み取り、そのログで報告されている API 呼び出しを知ることができます。

CloudTrail によって S3 バケットに作成される各オブジェクトは、1 つ以上のイベントレコードを持つ JSON オブジェクトです。特に、各レコードは eventSourceeventName を提供します。

Copy
{ "Records":[ { "eventVersion":"1.02", "userIdentity":{ ... }, "eventTime":"2014-12-16T19:17:43Z", "eventSource":"sns.amazonaws.com", "eventName":"CreateTopic", "awsRegion":"us-west-2", "sourceIPAddress":"72.21.198.64", ... }, { ... }, ... }

ここでは説明のために、Amazon SNS トピックを作成する API 呼び出しがログにレポートされると、Lambda 関数が E メールでユーザーに通知しています。つまり、Lambda 関数はログを分析する際に、次に示すレコードを探します。

  • eventSource = "sns.amazonaws.com"

  • eventName = "CreateTopic"

見つかった場合、Amazon SNS トピックにイベントを発行します (E メールで通知するように、このトピックを設定します)。

実装の要約

このチュートリアルのステップを完了すると、アカウントに Amazon S3、AWS Lambda、Amazon SNS、AWS Identity and Access Management (IAM) のリソースが作成されています。

注記

このチュートリアルでは、これらのリソースが us-west-2 リージョンで作成されることを前提としています。

Lambda の場合

  • Lambda 関数。

  • Lambda 関数に関連付けられているアクセスポリシー – このアクセス権限ポリシーを使用して、Lambda 関数を呼び出すアクセス権限を Amazon S3 に付与します。また、特定の AWS アカウントによって所有される特定のバケットからオブジェクト作成イベントに対してのみ、Amazon S3 が Lambda 関数を呼び出せるように、アクセス権限を制限します。

    注記

    AWS アカウントでバケットと他のいくつかの AWS アカウントを削除し、後に同じ名前のバケットを作成することが可能です。他の条件により、Amazon S3 が特定の AWS アカウントによって所有される特定のバケットからオブジェクト作成イベントを検出した場合のみ、Amazon S3 が Lambda 関数を呼び出すようにできます。

    詳細については、「仕組み」を参照してください。

IAM の場合

  • IAM ロール (実行ロール) – このロールに関連付けられているアクセス権限ポリシーを通じて、Lambda 関数が必要とするアクセス権限を付与します。

Amazon S3 の場合

  • バケット – このチュートリアルでは、バケット名は examplebucket です。CloudTrail コンソールで証跡を有効にすると、このバケットを CloudTrail がログを保存するバケットとして指定します。

  • examplebucket での通知設定 – 設定で、Lambda 関数を呼び出して、オブジェクト作成イベントを Lambda に発行するように、Amazon S3 に指示します。Amazon S3 通知機能の詳細については、『Amazon Simple Storage Service 開発者ガイド』の「バケットイベントの通知の設定」を参照してください。

  • ExampleCloudTrailLog.jsonexamplebucket バケット内のサンプルの CloudTrail ログオブジェクト () – このチュートリアルの前半では、Lambda 関数を作成し、サンプル S3 イベントを使用して関数を手動で呼び出してテストします。このサンプルイベントでは、バケット名およびサンプルオブジェクトキー名として examplebucket が識別されます。Lambda 関数は、オブジェクトを読み取り、SNS トピックを使用して E メール通知を送信します。

Amazon SNS の場合

  • SNS トピック – プロトコルとして E メールを指定して、このトピックにサブスクライブします。

これで、チュートリアルを開始する準備ができました。

次のステップ

ステップ 1: 準備

このページの内容: