CloudFront の標準ログ記録機能を使うと、S3 バケットにログを保存して Athena でクエリを使って検索できるのでとても便利です。
CloudFront ディストリビューションの設定に標準ログ記録の設定がありますが、ここを有効にしただけではログが正常に保存されません。
S3 の設定
CloudFront のログを S3 バケットで受け取るためには、S3 バケットの ACL の設定を有効にする必要があります。
バケット作成時は以下から設定します。
これで、あとは CloudFront の標準ログ記録を有効になっていれば記録が始まります。
バケット作成済みでも問題ありません。
バケットの ACL 設定から CloudFront のログをバケットに書き込むアカウントの正規 ID を手動で追加できます。
以下の正規 ID を設定します。
正規ID : c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0
オブジェクト : リスト許可・書き込み許可
バケット ACL : 読み込み許可・書き込み許可
これは awslogsdelivery のアカウント正規 ID でどの環境でもこのアカウントを設定します。
バケットのアクセス許可のタブの下の方にある「アクセスコントロールリスト (ACL)」の編集ボタンから以下のように設定します。
少し待って S3 バケットにログが記録され始めれば成功です。
参考