当我在 Amazon CloudWatch 控制台中查看我的 AWS Lambda 函数的日志时,出现了“Log group does not exist”(日志组不存在)错误。我想解决此错误。
简短描述
如果查看函数的日志时,Lambda 函数没有日志组,则 CloudWatch 会返回以下错误消息:
"Log group does not exist.The specific log group: <log group name> does not exist in this account or region."
日志是在您首次运行函数后生成的。如果调用函数后没有日志组,则表示该函数的 AWS Identity and Access Management (IAM) 权限存在问题。
要对来自 CloudWatch 的“日志组不存在”错误进行故障排除,请确认以下内容:
- 您的 Lambda 函数的执行角色有足够的权限将日志写入 Amazon CloudWatch。
- IAM 策略中的日志组资源包含您的函数的名称。
**注意:**有关 Lambda@Edge 的权限相关日志记录问题的信息,请参阅 Service-linked roles for Lambda@Edge。
解决方法
**注意:**以下解决方案不适用于更高级别的拒绝权限,例如通过服务控制策略 (SCP) 或权限边界。您必须先解决权限被拒绝的问题。
编辑 Lambda 函数执行角色的 IAM 策略,使其包括以下内容:
- 允许 CreateLogGroup 和 CreateLogStream 写入操作。
**注意:**如果您的函数不需要自定义权限,则您可以附加托管式策略 AWSLambdaBasicExecutionRole,以允许 Lambda 向 CloudWatch 写入日志。
- ARN 中指定的 AWS 区域与您的 Lambda 函数的区域相同。
- log-group 资源包括您的 Lambda 函数的名称。例如,如果您的函数名为 myLambdaFunction,则关联的 log-group 为 /aws/lambda/myLambdaFunction。
下面的策略示例包括 Lambda 角色访问 CloudWatch 日志所需的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:region:accountId:*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:region:accountId:log-group:/aws/lambda/functionName:*"
]
}
]
}
**注意:**确保在 IAM 角色的信任策略中添加 Lambda 服务:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
相关信息
在 AWS Lambda 中管理权限