LoginSignup
1
0

More than 5 years have passed since last update.

CloudFormation でデプロイした Lambda が作る LogGroup を消したい

Last updated at Posted at 2018-10-16

スタックを消すとLambda は消えるけど、Lambda が勝手に作った LogGroup が残り続ける。鬱陶しい。

【小ネタ】AWS SAMでLambda関数を作成する場合はCloudWatch LogsのLog Groupも同時に作った方がいいという話 に乗ってる方法で解決したと思ったら、まれに LogGroup の残骸があってなんだこりゃ。

どうも CloudFormation が LogGroup を消した直後に Lambda が起動してしまうとこうなってしまうようだ?

なら Lambda の Role から logs:CreateLogGroup をはく奪してしまえばいいのでは。

こんなかんじ?

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Resources"                : {
        "MyLambdaRole" : {
            "Type" : "AWS::IAM::Role",
            "Properties" : {
                "AssumeRolePolicyDocument" : {
                    "Statement" : [
                        {
                            "Effect" : "Allow",
                            "Principal" : {
                                "Service" : "lambda.amazonaws.com"
                            },
                            "Action"    : "sts:AssumeRole"
                        }
                    ]
                },
                "Policies"                 : [
                    {
                        "PolicyName" : "lambdalogpolicy",
                        "PolicyDocument" : {
                            "Version" : "2012-10-17",
                            "Statement" : [
                                {
                                    "Effect" : "Allow",
                                    "Action" : [
                                        "logs:CreateLogStream",
                                        "logs:PutLogEvents"
                                    ],
                                    "Resource" : "arn:aws:logs:*:*:*"
                                }
                            ]
                        }
                    }
                ]
            }
        },
        "MyLambdaLogGroup" : {
            "Type" : "AWS::Logs::LogGroup",
            "Properties" : {
                "LogGroupName" : {
                    "Fn::Join" : [
                        "",
                        [
                            "/aws/lambda/",
                            {
                                "Ref" : "MyLambda"
                            }
                        ]
                    ]
                }
            }
        },
        "MyLambda"         : {
            "Type" : "AWS::Lambda::Function",
            "Properties" : {
                "Handler" : "index.handler",
                "Role"    : {
                    "Fn::GetAtt" : [
                        "MyLambdaRole",
                        "Arn"
                    ]
                },
                "Runtime" : "python3.6",
                "Code"    : {
                    "ZipFile" : {
                        "Fn::Join" : [
                            "\n",
                            [
                                "def handler(event, context):",
                                "   print(\"hoge\")"
                            ]
                        ]
                    }
                }
            }
        }
    }
}

もし Lambda に logs:CreateLogGroup が必要なら、LogGroup の RetentionInDays を設定してそのうち消えるようにしておくとか、Lambda と LogGroup の依存関係を逆転させるとか?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0