使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决 CloudWatch 控制台中 Lambda 函数日志的“Log group does not exist”(日志组不存在)错误?

1 分钟阅读
0

当我在 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 中管理权限

AWS 官方
AWS 官方已更新 1 个月前