【速報】AWS CloudTrailでLambda Functionの実行ログが取れるようになりました #reinvent

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWS CloudTrailのアップデートがありました!

AWS CloudTrailでAWS Lambda Functionの実行ログが取れるようになりました。これまでのCloudTrailでは、Lambdaの管理操作のみログとして記録することが出来ました。Functionの作成や変更や削除などです。今回のアップデートにより、Lambdaの Invoke APIをData Eventとして記録するようになります。詳しいドキュメントは以下です。

このアップデートにより、Lambda Functionが何によってキックされているのかをトレースすることが出来ますので、不適切な実行がされている場合に実行元を把握することが出来ます。

やってみた

Lambda Functionの実行ログを取るためには、CloudTrailの設定が必要になりますので、既存で設定されているtrailを変更するか、新規にtrailを作成します。

trailの設定画面で、以下のように[Data events]に[lambda]タブが追加されています。

実行ログを取得したいFunctionにチェックを入れて[Save]ボタンをクリックします。

これで実際にLambda Functionが実行されると、以下のようなログが記録されます。「"eventName": "Invoke"」となっています。

{
    "additionalEventData": {
        "functionVersion": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXX:function:Tweet:$LATEST"
    }, 
    "awsRegion": "ap-northeast-1", 
    "eventID": "XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX", 
    "eventName": "Invoke", 
    "eventSource": "lambda.amazonaws.com", 
    "eventTime": "2017-11-30T21:26:50Z", 
    "eventType": "AwsApiCall", 
    "eventVersion": "1.06", 
    "managementEvent": false, 
    "readOnly": false, 
    "recipientAccountId": "XXXXXXXXXXX", 
    "requestID": "XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX-XXXXXXXXXXX", 
    "requestParameters": {
        "contentType": "", 
        "functionName": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXX:function:Tweet", 
        "invocationType": "Event", 
        "sourceArn": "arn:aws:events:ap-northeast-1:XXXXXXXXXXX:rule/cloudwatchevents"
    }, 
(--snip--) 

さいごに

AWS Lambda Functionをシステム上重要なポイントで使っている場合には、ぜひ実行ログを保存するように設定しましょう。