はじめに
2024年11月に CloudFront のアクセスログ出力機能が v2 に改善された。
この新しい機能を使うことで、ログファイルの出力をデフォルトで年月日などのレベルでパーティショニングができるため、ログファイルの検索やAthenaなどの機能を利用しようとするときに非常に便利になる。
そこでこの機能を利用するために S3 への保存を選んだのだが、以下のようなエラーが発生してしまう。
1 validation error detected: Value '*********************************' at 'name' failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]
ここでは、この問題の解消法についてをまとめる。
結論
エラーメッセージの name
が何のことかがわからなかったが、これはバケット名である。
問題を解消するには、正規表現 [/w-]*
に一致する、つまり、アルファベット (a-zA-Z), アンダースコア (_)、半角整数 (0-9) およびハイフンのみの名前で作成された S3 バケットを指定する必要がある ようだ。
バケット命名規則では .
を含むことができる(実際、今回テストに指定したバケット名は www.t-kigi.net
であり .
を含んだバケット名である)が、これを含むと指定の正規表現に一致しないため注意する必要がある。
なお、この機能が登場するまでの S3 への保存機能(レガシー)ではバケット名に .
があってもログ保存ができる。
そのため、将来的にはこの制限はもしかするとバグとして解消されるかもしれない。