CloudFront の標準ログ記録 (v2) を使用することで、保存先 S3 バケットのバケット ACL 有効化が不要になりました。
はじめに
猫とアポロチョコが好きな m.hayakawa です。
2024年11月のアップデートで CloudFront の標準ログ記録に v2 が追加されました。
これにより、保存先に S3 バケットを選択する際に、S3 バケットの ACL が無効化のままでもOKとなりました。
今までは、Amazon S3 バケットで ACL を無効にすることが推奨されているにも関わらず、CloudFront の保存先の S3 バケットだけは ACL を有効化しなければならないなど、矛盾が発生していましたが、その矛盾が解消されます。
さっそく、設定を試してみました。
やってみた
本題ではないので省略しますが、下記の手順で CloudFront 経由で S3 の静的ウェブサイトホスティングのサイトを作成しておきます。
ログの設定
ディストリビューションを選択し、Logging タブから、ログの設定をしていきます。
作成ボタンを押して、保存先 S3 バケットを作成します。ここでは us-east-1 リージョンにログを保存し、ACL を無効の設定とします。
基本的にはこれだけです。
ログの確認
作成した静的ウェブサイトへ CloudFront 経由でアクセスしてみます。
問題なくアクセスできましたので、ログ保存先の S3 バケットを確認してみます。
アクセスから反映まで少し時間がかかりますが、このようにログが保存されています。
中身を確認してみましょう。(一部マスクをしています)
#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes time-taken x-forwarded-for ssl-protocol ssl-cipher x-edge-response-result-type cs-protocol-version fle-status fle-encrypted-fields c-port time-to-first-byte x-edge-detailed-result-type sc-content-type sc-content-len sc-range-start sc-range-end
2025-07-16 06:43:05 NRT20-P8 259 xxxx:xxxx:xxxx:xxxx::xxx:xx GET xxx.cloudfront.net /index.html 304 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/138.0.0.0%20Safari/537.36 - - Hit 9hej_XXXXSAMPLEXXXX_NSdp4wZTIVlQ== xxx.cloudfront.net https 29 0.002 - TLSv1.3 TLS_AES_128_GCM_SHA256 Hit HTTP/2.0 - - 32896 0.002 Hit - - - -
2025-07-16 06:43:05 NRT20-P8 350 xxxx:xxxx:xxxx:xxxx::xxx:xx GET xxx.cloudfront.net /favicon.ico 403 https://xxx.cloudfront.net/index.html Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/138.0.0.0%20Safari/537.36 - - Error jQPp_XXXXSAMPLEXXXX_rucweN_pPg== xxx.cloudfront.net https 35 0.013 - TLSv1.3 TLS_AES_128_GCM_SHA256 Error HTTP/2.0 - - 32896 0.013 Error application/xml - - -
デフォルトでは上記の形式で保存されることが確認できました。
補足
従来の方法も、標準ログ記録 (レガシー) として残っています。Add→Amazon S3(レガシー) を選択すると従来の方法の設定となります。
まとめ
CloudFront の標準ログ記録 (v2) を使用することで、ログの保存先 S3 バケットが ACL 無効化でもOKとなりました。
他にも保存形式などは様々な指定ができるようですので、要件に合わせて設定していきましょう。
参考資料
標準ログ記録 (v2) を設定する - Amazon CloudFront
標準ログ記録 (レガシー) を設定する - Amazon CloudFront
すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。 - Amazon Simple Storage Service
Amazon S3 バケットで ACL を無効にすることをお勧めします。