GeekBox

IT系エンジニアの雑記

【Lambda】 トリガー設定画面で「The specified log group does not exist.」のエラー

スポンサーリンク

LambdaのトリガーとしてCloudWatch Logs のロググループを設定していて、トリガー設定画面で以下のようなエラーが表示される場合の対処方法

原因としては、トリガーに設定しているロググループを先に削除してしまった場合にLambda側のポリシーの設定が残っている場合に出るっぽい。

AWSのコンソールからは消せないっぽいので aws cli から以下のようにして削除を行う。

1.Lambdaのポリシーを見てみる(見にくいので整形済み)

$ aws lambda get-policy --function-name sample-lambda
{
    "Policy": {
        "Version": "2012-10-17",
        "Id": "default",
        "Statement": [
            {
                "Sid": "InvokePermissionsForCWL38e235c79664057f4db2ba40630a04ad",
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.ap-northeast-1.amazonaws.com"
                },
                "Action": "lambda:InvokeFunction",
                "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxx:function:sample-lambda",
                "Condition": {
                    "StringEquals": {
                        "AWS:SourceAccount": "xxxxxxxx"
                    },
                    "ArnLike": {
                        "AWS:SourceArn": "arn:aws:logs:ap-northeast-1:xxxxxxxx:log-group:/aws/lambda/hoge-lambda:*"
                    }
                }
            }
        ]
    }
}

2.削除してしまったロググループのポリシーを削除 1で取得したポリシーの中で削除済みのものが特定できたら以下のコマンドで削除する --statement-id には Sid を指定する。

$ aws lambda remove-permission --function-name sample-lambda --statement-id "InvokePermissionsForCWL38e235c79664057f4db2ba40630a04ad"

3.削除後、再度確認してみる 今回の sample-lambda は他にポリシー設定がないのでエラーが出ているが、ポリシーを複数つけている場合はエラーは出ない。

$ aws lambda get-policy --function-name sample-lambda
An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.

上記手順後もう一度トリガー設定画面を見てみる、すでに開いている場合は画面を更新する。

無事エラーが消えた。