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

1 分钟阅读
0

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

简短描述

如果尝试查看函数的日志时,Lambda 函数没有日志组,则 Amazon 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

解决方法

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

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

**下面的策略示例包括 Lambda 角色访问 Amazon 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:*"
            ]
        }
    ]
}

相关信息

AWS Lambda permissions

AWS 官方
AWS 官方已更新 3 年前
没有评论