vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

AWS CloudFront standard logging v2 の注意点

CloudFront のアクセスログ v2 の話。



前置き

これまで少し使いづらかった CloudFront のログ配信機能がアップデートされました。

これまでの S3 へのログ配信は、Athena でパーティショニングするには自前で移動する必要がありました。

参考:Analyze your Amazon CloudFront access logs at scale | AWS Big Data Blog

v2 では、パーティション用のパス出力が標準サポートされました。 また、出力先もS3だけでなく、 CloudWatch Logs、Amazon Data Firehose (旧 Kinesis Data Firehose) への出力も行えるようになっています。

出力先は1つのみ

ドキュメントに記述がありますが、 v2 では S3、CloudWatch Logs、Data Firehose のどれか一つの配信先しか利用できません。

現在、配信ソースはディストリビューションごとに 1 つだけ持つことができます

マネジメントコンソール上では、 “Add” ボタンとなっており一見追加できそうですが、作成時にエラーになります。

This ResourceId has already been used in another Delivery Source in this account

従来の形式(Legacy)との併用は可能です。

CloudWatch Logs の Delivery リソース

CloudFront の設定ではありません。

CloudWatch Logs の Delivery リソースで設定します。

マネジメントコンソールからは直接確認できないため、意識しにくいかもしれません。

参考:TerraformでCloudFrontの標準ログv2を設定する - NIFTY engineering

CloudWatch Logs のv2の機構で配信されます。

一部の AWS サービスでは、新しい メソッドを使用してログを送信します。

CloudFront standard logging v2 もこの “一部” に含まれているようです。他に Bedrock knowledge bases のログ配信もこちらの機能で実現しているようです。

動作しているログ配信は、次の 3 つの要素で構成されます。 * 実際にログを送信するリソースを表す論理オブジェクトである DeliverySource。 * 実際の配信先を表す論理オブジェクトである DeliveryDestination。 * 配信ソースを配信先に接続する Delivery。

Delivery Source の削除

ドキュメントに記載がありますが、マネジメントコンソールから設定を削除しても消えません

CloudFront コンソールから標準ログ記録を削除すると、配信と配信先のみが削除されます。AWS アカウントから配信ソースは削除されません。

中途半端感が否めないですが、 API(CLI) で削除する必要があります。

# 各種 Delivery リソースの一覧
aws logs describe-deliveries
aws logs describe-delivery-destinations
aws logs describe-delivery-sources

# DeliverySource の削除
aws logs delete-delivery-source --name DeliverySourceName

マネジメントコンソール上での削除時には何も出力されないので気付き難いです。

残っていると再設定する際に前述のエラーになります。


パーティションパスの設定は待望の機能です。jsonなどの出力形式に対応したのも嬉しいです。

一部の操作性に改善の余地はありますが、今後のアップデートで改善されることを期待します。