継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

CloudFront のアクセスログが S3 に出てない時に対処したことをまとめる

タダです.

CloudFront でアクセスログを設定しているのに S3 にログがない...? って思ったことありませんか?自分はあります.ログがないと調査や分析ができなくなってしまって手詰まりになるってことにもなるため,そんな時に対処したことをまとめていきます.

S3 バケットの暗号化がカスタマーキーで行われている場合はキーポリシーを更新する

アクセスログを出力するバケットで,暗号化をカスタマーキーで行っている場合は KMS のキーポリシーを更新します.具体的には以下のポリシーを追加します.これで暗号化されたバケットに対し CloudFront はログファイルをバケットに書き込むことができます.

{
    "Sid": "Allow CloudFront to use the key to deliver logs",
    "Effect": "Allow",
    "Principal": {
        "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*"
}

docs.aws.amazon.com

バケットACL に awslogsdelivery のアクセス許可を追加する

現状,S3 バケットACL は無効化が推奨されています.しかし,CloudFront のアクセスログを格納するバケットにおいては有効化する必要があります.加えて awslogsdelivery のアクセス許可を与える必要があります.

docs.aws.amazon.com

具体的には, c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0 というアカウントの正規 ID を入力し,各種権限を有効化します.

docs.aws.amazon.com

まとめ

小ネタですが,自分が CloudFront のアクセスログが出ていない時に対処した2つの内容をまとめました.