配置 CloudWatch 日志组
默认情况下,CloudWatch 会在首次调用您的函数时为其自动创建一个名为 /aws/lambda/<function name>
的日志组。要将您的函数配置为向现有日志组发送日志,或者为函数创建新的日志组,可以使用 Lambda 控制台或 AWS CLI。您还可以使用 CreateFunction 和 UpdateFunctionConfiguration Lambda API 命令以及 AWS Serverless Application Model(AWS SAM)AWS::Serverless::Function 资源配置自定义日志组。
您可以配置多个 Lambda 函数向同一 CloudWatch 日志组发送日志。例如,您可以使用单个日志组来存储构成特定应用程序的所有 Lambda 函数的日志。当您为 Lambda 函数使用自定义日志组时,Lambda 创建的日志流包括函数名称和函数版本。这可以确保即使将同一个日志组用于多个函数,也能保留日志消息与函数之间的映射。
自定义日志组的日志流命名格式遵循以下惯例:
YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]
请注意,配置自定义日志组时,您为日志组选择的名称必须遵守 CloudWatch Logs 命名规则。此外,自定义日志组名称不得以字符串 aws/
开头。如果以 aws/
为开头创建自定义日志组,则 Lambda 将无法创建该日志组。这将导致函数的日志不会发送到 CloudWatch。
更改函数的日志组(控制台)
-
打开 Lamba 控制台的 Functions
(函数)页面。 -
选择函数。
-
在函数配置页面上,选择监控和操作工具。
-
在日志记录配置窗格中,选择编辑。
-
在日志记录组窗格中,为 CloudWatch 日志组选择自定义。
-
在自定义日志组下,输入您希望函数发送日志的目标 CloudWatch 日志组的名称。如果您输入现有日志组的名称,则函数将使用该组。如果不存在具有所输入名称的日志组,则 Lambda 将使用该名称为您的函数创建一个新的日志组。
更改函数的日志组(AWS CLI)
-
要更改现有函数的日志组,请使用 update-function-configuration
命令。 aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogGroup=myLogGroup
在创建函数时指定自定义日志组(AWS CLI)
-
要在使用 AWS CLI 创建新 Lambda 函数时指定自定义日志组,请使用
--logging-config
选项。以下示例命令可创建 Node.js Lambda 函数,用于将日志发送到名为myLogGroup
的日志组。aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogGroup=myLogGroup
执行角色权限
您的函数必须拥有 logs:PutLogEvents 权限,才能向 CloudWatch Logs 发送日志。当您使用 Lambda 控制台配置函数的日志组时,Lambda 将在以下条件下将此权限添加到角色:
-
服务目标设置为 CloudWatch Logs
-
函数的执行角色没有将日志上传到 CloudWatch Logs(默认目标)的权限
注意
Lambda 不会为 Amazon S3 或 Firehose 日志目标添加任何 Put 权限。
当 Lambda 添加此权限时,它会向该函数授予向任何 CloudWatch Logs 日志组发送日志的权限。
要防止 Lambda 自动更新函数的执行角色并改为手动对其进行编辑,请展开权限并取消选中添加所需权限。
当您使用 AWS CLI 配置函数的日志组时,Lambda 不会自动添加 logs:PutLogEvents
权限。如果函数的执行角色还没有该权限,请添加。此权限包含在 AWSLambdaBasicExecutionRole