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

AWS CloudTrail を使用して AWS Lambda API 呼び出しのログを記録する

AWS Lambda は AWS CloudTrail と統合されています。これは、AWS アカウントで AWS Lambda によって行われたか、それに代わって行われた API 呼び出しを記録し、指定した Amazon S3 バケットにログファイルを渡すサービスです。CloudTrail は、AWS Lambda コンソールまたは AWS Lambda API から行われた API 呼び出しをキャプチャします。CloudTrail によって収集された情報を使用して、AWS Lambda に対してどのようなリクエストが行われたか (リクエストの実行元 IP アドレス、実行者、実行日時など) を判断できます。CloudTrail の詳細 (設定して有効にする方法など) については、AWS CloudTrail User Guideを参照してください。

CloudTrail での AWS Lambda 情報

AWS アカウントで CloudTrail のログ記録を有効にすると、AWS Lambda アクションに対する API 呼び出しがログファイルに記録されます。AWS Lambda レコードは、他の AWS サービスレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

以下のアクションがサポートされています。

各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログのユーザー ID 情報は、リクエストが、ルートまたは IAM ユーザーの認証情報を使用して送信されたか、ロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して送信されたか、あるいは AWS の別のサービスによって送信されたかを確認するのに役立ちます。詳細については、CloudTrail Event ReferenceuserIdentity フィールドを参照してください。

必要な場合はログファイルを自身の バケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するように Amazon S3 ライフサイクルルールを定義することもできます。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

ログファイルの配信時にすぐにアクションを実行する場合、新しいログファイルの配信時に CloudTrail により Amazon SNS 通知を発行することを選択できます。詳細については、「CloudTrail 用の Amazon SNS 通知の構成」を参照してください。

また、複数の AWS リージョンと複数の AWS アカウントの AWS Lambda ログファイルを 1 つの S3 バケットに集約することもできます。詳細については、「Working with CloudTrail Log Files」を参照してください。

AWS Lambda ログファイルエントリの概要

CloudTrail ログファイルには、複数の JSON 形式イベントで構成される 1 つ以上のログエントリを記録できます。ログエントリは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、パラメータ、アクションの日時などに関する情報を含みます。ログエントリは、特定の順序になるように生成されるわけではありません。つまり、パブリック API 呼び出しの順序付けられたスタックトレースではありません。

次の例では、GetFunction および DeleteFunction アクション用の CloudTrail ログエントリを示します。

Copy
{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::999999999999:user/myUserName", "accountId": "999999999999", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:03:36Z", "eventSource": "lambda.amazonaws.com", "eventName": "GetFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "errorCode": "AccessDenied", "errorMessage": "User: arn:aws:iam::999999999999:user/myUserName" is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-west-2:999999999999:function:other-acct-function", "requestParameters": null, "responseElements": null, "requestID": "7aebcd0f-cda1-11e4-aaa2-e356da31e4ff", "eventID": "e92a3e85-8ecd-4d23-8074-843aabfe89bf", "eventType": "AwsApiCall", "recipientAccountId": "999999999999" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::999999999999:user/myUserName", "accountId": "999999999999", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:04:42Z", "eventSource": "lambda.amazonaws.com", "eventName": "DeleteFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "requestParameters": { "functionName": "basic-node-task" }, "responseElements": null, "requestID": "a2198ecc-cda1-11e4-aaa2-e356da31e4ff", "eventID": "20b84ce5-730f-482e-b2b2-e8fcc87ceb22", "eventType": "AwsApiCall", "recipientAccountId": "999999999999" } ] }

注記

eventNameには、"GetFunction20150331" のように日付やバージョン情報が含まれることがありますが、同じパブリック API を指しています。