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

ログ記録 (Python)

Lambda 関数にログ作成のステートメントを含めることができます。AWS Lambda はこれらのログを CloudWatch に書き込みます。Lambda コンソールを使用して Lambda 関数を呼び出すと、コンソールに同じログが表示されます。

次の Python ステートメントはログエントリを生成します。

  • print ステートメント。

  • logging モジュールの Logger 関数 (たとえば、logging.Logger.info および logging.Logger.error) です。

printlogging.* 関数はどちらも CloudWatch Logs にログを書き込みますが、logging.* 関数は各ログエントリにタイムスタンプやログレベルなどの追加情報を書き込みます。

たとえば、次の Python コードの例を考えてみます。

Copy
import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def my_logging_handler(event, context): logger.info('got event{}'.format(event)) logger.error('something went wrong') return 'Hello World!'

コード例では logging モジュールを使用してログにメッセージを書き込んでいるため、タイムスタンプやログレベルなどの追加情報をログで取得できます。ログレベルは、次に示すように、[INFO][ERROR][DEBUG] のようなログのタイプを識別します。

スクリーンショットは、Lambda コンソールの [Log output] セクションの例です。ログは CloudWatch でも確認できます。詳細については、「AWS Lambda の Amazon CloudWatch ログへのアクセス」を参照してください。

logging モジュールを使用する代わりに、次の Python の例に示すように print ステートメントをコードで使用できます。

Copy
from __future__ import print_function def my_other_logging_handler(event, context): print('this will also show up in cloud watch')  return 'Hello World!'

この場合、印刷メソッドに渡されるテキストのみが CloudWatch に送信されます。ログエントリには、logging.* 関数が返す追加情報はありません。from __future__ ステートメントを使用すると、Python 2 または 3 と互換性のあるコードを作成できます。

コンソールは、RequestResponse 呼び出しタイプ (同期呼び出し) を使用して関数を呼び出します。したがって、値 ("Hello world!") が返ります。をコンソールが表示する AWS Lambda から取得します。

前述の Python コードをテストするには (コンソール)

  1. コンソールで、hello-world-python 設計図を使用して Lambda 関数を作成します。[runtime] で、[Python 2.7] を選択します。[Handler] で [lambda_function.lambda_handler] を [lambda_function.my_other_logging_handler] に置き換え、[Role] で [Basic execution role] を選択します。設計図で提供されているコードを、このセクションのコードで置き換えます。コンソールを使用して Lambda 関数を作成する詳細な手順については、 「ステップ 2.1: Hello World Lambda 関数を作成する」を参照してください。

  2. テンプレートコードをこのセクションで提供されたコードに置き換えます。

  3. Lambda コンソールで提供される [Hello World] という [Sample event template] を使用して Lambda 関数をテストします。

ログの検索

Lambda 関数が書き込んだログは、次のように確認できます。

  • AWS Lambda コンソール – AWS Lambda コンソールの [ Log output] セクションにログが表示されます。

  • レスポンスのヘッダー、Lambda 関数をプログラムで呼び出した場合 – Lambda 関数をプログラムで呼び出した場合、LogType パラメーターを追加して、CloudWatch ログに書き込まれたログデータの最後の 4 KB を取得できます。AWS Lambda は、レスポンスの x-amz-log-results ヘッダーでこのログ情報を返します。詳細については、「Invoke」を参照してください。

    AWS CLI を使用して関数を呼び出した場合は、 --log-type parameter を値 Tail とともに指定して同じ情報を取得できます。

  • CloudWatch ログ – CloudWatch でログを確認するには、ロググループ名とログストリーム名を把握しておく必要があります。コード内で context.logGroupName および context.logStreamName を使用してこの情報を取得できます。Lambda 関数を実行すると、コンソールまたは CLI の結果ログが、ロググループ名およびログストリーム名を表示します。

このページの内容: