AWS Lambda を AWS CloudTrail に使用する - AWS Lambda

AWS Lambda を AWS CloudTrail に使用する

AWS CloudTrail は、ユーザー、ロール、または AWS サービスによって実行されたアクションを記録するサービスです。CloudTrail は API コールをイベントとしてキャプチャします。AWS アカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はイベントのログファイルを Amazon S3 バケットに配信できます。

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

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

例 CloudTrail ログ

{ "Records":[ { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId":"access-key-id", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:26:50Z", "eventSource":"sns.amazonaws.com", "eventName":"CreateTopic", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "name":"dropmeplease" }, "responseElements":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "requestID":"3fdb7834-9079-557e-8ef2-350abc03536b", "eventID":"17b46459-dada-4278-b8e2-5a4ca9ff1a9c", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }, { "eventVersion":"1.02", "userIdentity":{ "type":"Root", "principalId":"123456789012", "arn":"arn:aws:iam::123456789012:root", "accountId":"123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext":{ "attributes":{ "mfaAuthenticated":"false", "creationDate":"2015-01-24T22:41:54Z" } } }, "eventTime":"2015-01-24T23:27:02Z", "eventSource":"sns.amazonaws.com", "eventName":"GetTopicAttributes", "awsRegion":"us-east-2", "sourceIPAddress":"205.251.233.176", "userAgent":"console.amazonaws.com", "requestParameters":{ "topicArn":"arn:aws:sns:us-east-2:123456789012:exampletopic" }, "responseElements":null, "requestID":"4a0388f7-a0af-5df9-9587-c5c98c29cbec", "eventID":"ec5bb073-8fa1-4d45-b03c-f07b9fc9ea18", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" } ] }

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