Amazon CloudWatch コンソールで AWS Lambda 関数のログを表示すると、「ロググループがありません」というエラーが発生するため、このエラーを解決したいです。
簡単な説明
関数のログを表示しようとしたが、Lambda 関数にロググループがない場合、CloudWatch は次のエラーメッセージを返します。
"ロググループがありません。特定のロググループ: <log group name> このアカウントまたはリージョンにはありません。"
ログは、初めて関数を実行した後に生成されます。関数を呼び出した後にロググループがない場合、関数の AWS Identity and Access Management (IAM) アクセス許可に問題があります。
CloudWatch での「ロググループがない」というエラーをトラブルシューティングするには、以下の事項を確認します。
- Lambda 関数の実行ロールに、CloudWatch にログを書き込むための十分なアクセス許可がある。
- IAM ポリシーのロググループリソースには、関数の名前が含まれている。
注: Lambda@Edge のアクセス許可に関連するログの問題については、「Lambda@Edge のサービスリンクロール」を参照してください。
解決策
注: 次の解決策は、サービスコントロールポリシー (SCP) やアクセス許可の境界などによる上位レベルで拒否されたアクセス許可では機能しません。まず、拒否されたアクセス許可を解決する必要があります。
Lambda 関数の実行ロールの IAM ポリシーを編集し、次の内容を含めます。
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:*"
]
}
]
}
注: 必ず IAM ロールの信頼ポリシーに Lambda サービスを追加してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
関連情報
AWS Lambda でアクセス許可を管理する