AWS Lambda
開発者ガイド

Python の AWS Lambda 関数ログ作成

Lambda 関数には、CloudWatch Logs ロググループが付属しており、関数のインスタンスごとにログストリームを含みます。ランタイムは、各呼び出しに関する詳細をログストリームに送信し、関数のコードのログやその他の出力を中継します。

関数コードからログを出力するには、printメソッドか、stdout または stderr に書き込む任意のログ記録ライブラリを使用します。次の例では、環境変数の値とイベントオブジェクトをログに記録します。

例 lambda_function.py

import json import os def lambda_handler(event, context): print('## ENVIRONMENT VARIABLES') print(os.environ) print('## EVENT') print(event) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

より詳細なログには、ログ記録ライブラリを使用します。

import json import os import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): logger.info('## ENVIRONMENT VARIABLES') logger.info(os.environ) logger.info('## EVENT') logger.info(event) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

logger からの出力には、ログレベル、タイムスタンプおよびリクエスト ID が含まれています。

[INFO] 2019-04-21T23:24:14.135Z 00d3cdad-8aaf-42b2-af4e-6f8b2cae00a5 ## EVENT [INFO] 2019-04-21T23:24:14.135Z 00d3cdad-8aaf-42b2-af4e-6f8b2cae00a5 {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

関数設定ページで関数を設定すると、Lambda コンソールによってログ出力が示されます。すべての呼び出しのログを表示するには、CloudWatch Logs コンソールを使用します。

Lambda 関数のログを表示するには

  1. CloudWatch コンソールのログページを開きます。

  2. 関数 (/aws/lambda/function-name) のロググループの名前を選択します。

  3. リストの最初のストリームを選択します。

各ログストリームは、関数のインスタンスに相当します。新しいストリームは、関数を更新する際や、複数の同時呼び出しを処理するために追加のインスタンスを作成する際に表示されます。特定の呼び出しのログを検索するには、X-Ray で関数を計測し、リクエストとログストリームに関する詳細をトレースに記録することができます。ログとトレースを X-Ray と関連付けるサンプルアプリケーションについては、AWS Lambda の Error Processor サンプルアプリケーション を参照してください。

コマンドラインから呼び出しのログを取得するには、--log-type オプションを使用します。レスポンスには、LogResult フィールドが含まれます。このフィールドには、呼び出しから base64 コードされた最大 4 KB のログが含まれます。

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

このログをデコードするには、base64 ユーティリティを使用します。

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

base64 ユーティリティは、Linux、macOS、および Windows の Ubuntu で使用できます。macOS の場合、コマンドは base64 -D です。

関数を削除してもロググループが自動的に削除されることはありません。ログが無期限に保存されないようにするには、ロググループを削除するか、ログが自動的に削除された後に保持期間を設定します。