CloudWatch コンソールでの Lambda 関数ログに対する「Log group does not exist」エラーを解決するための方法を教えてください。
最終更新日: 2021 年 4 月 14 日
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 から「Log group does not exist」エラーのトラブルシューティングを行うには、以下の事項を確認します。
- 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 ログにアクセスするために必要な許可を含むポリシーの例を以下に示します。
{
"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:*"
]
}
]
}