[小ネタ]EC2 Image BuilderのCloudWatch Logsへの出力を無効化する

2021.02.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

進撃の巨人にハマりまくってるオンジーです!心臓を捧げよ!

Image BuilderはデフォルトでCloudWatch Logsへのログ出力が有効になっています。

より詳細なログを出力するためにはS3へのログ出力を有効にする必要がありその手順は下記ブログに書きました。

S3に詳細なログが出ているのでCloudWatch Logsへの出力を無効化したくなった僕みたいな人のための手順です。

手順といってもCloudWatch Logs出力用の権限を削除するだけです。

実際にやってみた

前回の記事からの使い回しですが現在EC2用のIAMロールは以下のポリシーがアタッチされています。

この中の「EC2InstanceProfileForImageBuilder」の中にCloudWatch Logs出力の権限があります。

{
    "Effect": "Allow",
    "Action": [
        "logs:CreateLogStream",
        "logs:CreateLogGroup",
        "logs:PutLogEvents"
    ],
    "Resource": "arn:aws:logs:*:*:log-group:/aws/imagebuilder/*"
}

ここを削除すれば良いんですがAWS管理ポリシーなので編集できません。

そのためカスタマー管理ポリシーを新しく作って上記の部分を除いたJSONを貼り付けます。

一応完成後のポリシーを貼っておきます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "imagebuilder:GetComponent"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "kms:EncryptionContextKeys": "aws:imagebuilder:arn",
                    "aws:CalledVia": [
                        "imagebuilder.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::ec2imagebuilder*"
        }
    ]
}

権限の変更が終わったのでパイプラインを再度実行するとCloudWatch Logsへログが出力されなくなってました!