CloudFront の標準ログ記録 (v2) を使用することで、保存先 S3 バケットのバケット ACL 有効化が不要になりました。

CloudFront の標準ログ記録 (v2) を使用することで、保存先 S3 バケットのバケット ACL 有効化が不要になりました。

標準ログ記録 (v2) の登場により、CloudFront のログ保存先 S3 の ACL が無効化されててもOKとなりました。
Clock Icon2025.07.17

はじめに

猫とアポロチョコが好きな m.hayakawa です。

2024年11月のアップデートで CloudFront の標準ログ記録に v2 が追加されました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-cloudfront-log-formats-destinations-access/

これにより、保存先に S3 バケットを選択する際に、S3 バケットの ACL が無効化のままでもOKとなりました。

今までは、Amazon S3 バケットで ACL を無効にすることが推奨されているにも関わらず、CloudFront の保存先の S3 バケットだけは ACL を有効化しなければならないなど、矛盾が発生していましたが、その矛盾が解消されます。

さっそく、設定を試してみました。

やってみた

本題ではないので省略しますが、下記の手順で CloudFront 経由で S3 の静的ウェブサイトホスティングのサイトを作成しておきます。

https://dev.classmethod.jp/articles/cloudfront-s3web/

ログの設定

ディストリビューションを選択し、Logging タブから、ログの設定をしていきます。

2025-07-16_15h17_55

作成ボタンを押して、保存先 S3 バケットを作成します。ここでは us-east-1 リージョンにログを保存し、ACL を無効の設定とします。

2025-07-17_13h28_40

2025-07-16_15h24_19

基本的にはこれだけです。

ログの確認

作成した静的ウェブサイトへ CloudFront 経由でアクセスしてみます。

2025-07-16_15h40_19

問題なくアクセスできましたので、ログ保存先の S3 バケットを確認してみます。

アクセスから反映まで少し時間がかかりますが、このようにログが保存されています。

2025-07-16_15h47_39

中身を確認してみましょう。(一部マスクをしています)

#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(レガシー) を選択すると従来の方法の設定となります。

2025-07-16_15h37_25

まとめ

CloudFront の標準ログ記録 (v2) を使用することで、ログの保存先 S3 バケットが ACL 無効化でもOKとなりました。

他にも保存形式などは様々な指定ができるようですので、要件に合わせて設定していきましょう。

参考資料

標準ログ記録 (v2) を設定する - Amazon CloudFront

標準ログ記録 (レガシー) を設定する - Amazon CloudFront

すべての新しいバケットの ACL を無効にし、オブジェクト所有権を執行します。 - Amazon Simple Storage Service

Amazon S3 バケットで ACL を無効にすることをお勧めします。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.