AWS Lambda
开发人员指南

Python 中的 AWS Lambda 函数日志记录

您的 Lambda 函数带有一个 CloudWatch Logs 日志组,其中包含您的函数的每个实例的日志流。运行时会将每个调用的详细信息发送到该日志流,然后中继日志和来自您的函数代码的其他输出。

要从函数代码输出日志,您可以使用 print 方法或使用写入到 stdoutstderr 的任何日志记录库。以下示例记录环境变量和事件对象的值。

例 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 错误处理器示例应用程序

要从命令行获取调用的日志,请使用 --log-type 选项。响应包含一个 LogResult 字段,该字段包含来自调用的多达 4 KB 的 base64 编码日志。

$ 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: 8e827ab1-f155-11e8-b06d-018ab046158d Version: $LATEST Processing event... END RequestId: 8e827ab1-f155-11e8-b06d-018ab046158d REPORT RequestId: 8e827ab1-f155-11e8-b06d-018ab046158d Duration: 29.40 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 19 MB

base64 在 Linux、macOS 和 Ubuntu on Windows 上可用。对于 macOS,命令为 base64 -D

在删除函数时,不会自动删除日志组。为避免存储无限的日志,请删除日志组或者配置保留期,在该期限后会自动删除日志。