当我尝试在 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@Edge 权限相关日志问题的信息,请参阅 Lambda@Edge 的服务相关角色。
解决方法
在 IAM console(IAM 控制台)中,查看并为 Lambda 函数的执行角色编辑 IAM policy,以确保以下情况成立:
- 允许写入操作 CreateLogGroup 和 CreateLogStream。
**注意:**如果您的函数不需要自定义权限,则可以附加托管策略 AWSLambdaBasicExecutionRole。此托管策略允许 Lambda 将日志写入 CloudWatch。
- Amazon 资源名称(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:*"
]
}
]
}
相关信息
AWS Lambda 权限