如何在 CloudWatch 控制台中解决 Lambda 函数日志的“日志组不存在”错误?

上次更新日期:2021 年 4 月 14 日

当我尝试在 Amazon CloudWatch 控制台中查看 AWS Lambda 函数的日志时,出现“日志组不存在”错误。如何解决此错误?

简短描述

如果您在尝试查看函数的日志时没有 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 函数的执行角色具有足够的权限向 CloudWatch 写入日志。
  • IAM 策略中的日志组资源包含函数的名称。

注意:如需有关 Lambda@Edge 权限相关日志问题的信息,请参阅 Lambda@Edge 的服务相关角色

解决方法

IAM 控制台中,查看并为 Lambda 函数的执行角色编辑 IAM 策略,以确保以下情况成立:

  • 允许写入操作 CreateLogGroup 和 CreateLogStream
    注意:如果您的函数不需要自定义权限,则可以附加托管策略 AWSLambdaBasicExecutionRole。此托管策略允许 Lambda 将日志写入 CloudWatch。
  • Amazon 资源名称 (ARN) 中指定的 AWS 区域与您的 Lambda 函数的区域相同。
  • log-group 资源包含您的 Lambda 函数的名称。例如,如果您的函数名为 myLambdaFunction,则关联的 log-group/aws/lambda/myLambdaFunction

包含允许 Lambda 函数向 CloudWatch 写入日志所需权限的示例 JSON 策略

{
    "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:*"
            ]
        }
    ]
}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?