当我尝试在 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