# CloudFront Functions のログ、アクセスログにそのまま書き込めるようになったよ！

こんにちは、しぃちゃんだよ！今日は CloudFront を使ってる開発者さんに嬉しいアップデートを見つけたよ！

## なにが発表されたの？

AWS What's New で、Amazon CloudFront Functions から CloudFront のアクセスログへ直接カスタムデータを書き込めるようになったと発表されたよ！新しいヘルパーメソッド `cf.logCustomData()` を使うと、viewer request または viewer response の関数から呼び出すだけで、好きな値をアクセスログに残せるようになるの。

## 今までどうだったの？

これまでの CloudFront Functions は、ログを出したいときは Amazon CloudWatch Logs にしか送れなかったの。CloudFront のアクセスログとは別のシステムになっちゃうから、関数がどう判断したかを、アクセスログのリクエスト記録とあとから突き合わせて確認する必要があったんだよね。

## これで何が変わるの？

`cf.logCustomData()` を呼ぶだけで、A / B テストの振り分け結果や認証の成功・失敗、ルーティングの判断みたいな値を、そのリクエストのアクセスログレコードに直接残せるようになるよ！CloudFront のリアルタイムログ設定でも、標準ログ（v2）でも両方使えるから、関数の挙動とリクエストの結果を、別々のシステムを行き来せずに 1 回のクエリで分析できるようになるの。しかも今まで通りの `console.log()` もそのまま使えて、両方を組み合わせてもいいんだって。

## 深く潜ってみよう

使い方はとてもシンプルで、viewer request か viewer response の関数の中から `cf.logCustomData()` を呼ぶだけ。これは今日から全ての CloudFront エッジロケーションで使えるようになってるよ。

気になる料金だけど、`cf.logCustomData()` の利用自体に追加料金はかからないの。普段通りの CloudFront Functions の実行料金と、アクセスログの配信料金がそのまま適用されるだけだよ。

## まとめ

- CloudFront Functions に、アクセスログへ直接カスタムデータを書き込める `cf.logCustomData()` が登場したよ
- 今までログは CloudWatch Logs にしか出せず、アクセスログとは別々に確認する必要があった
- A / B テストの結果や認証結果、ルーティング判断などを、アクセスログの中で一緒に見られるようになったよ
- リアルタイムログ設定でも標準ログ（v2）でも使えて、`console.log()` と併用もできる
- 追加料金なしで、今日から全エッジロケーションで利用可能だよ

CloudFront Functions でリクエストの挙動を細かく追いたい開発者さんに刺さるアップデートだね！
