CloudFrontのログをAWS WAF + FirehoseでS3に送信しようとしてハマった話

AWS WAF+Kinesis FirehoseでCloudFrontでキャプチャしたログをS3に吐く仕組みを作ろうと思ったら、WAFのログ設定画面に作成したはずのFirehoseが出なくてハマるという経験をしました。 原因はFirehoseを作成するリージョンだったというオチをもとに、備忘録としてブログに書き起こしていきます。
2019.06.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

表題の件について実案件でプチハマりをしたので、備忘録として残していきます。

やろうとしていた事

CloudFrontにWAFをくっつけてKinesis Firehose経由でS3にログを吐く、という事をやろうとしていました。

ハマった時

詳細な作業は以下エントリに準拠して行ったため、詳細な手順は割愛します。

AWS WAFのログをFirehoseでS3に出力しブロックログをS3Selectで確認してみた

まずFirehoseを作成します。

ネタバレを記載しておくと、「東京」リージョンでFirehoseを作成したのがプチハマりの原因です。

リソースがCloudFrontに設定されているweb ACLを選択して、

ログ設定画面に飛んでみると、

"No Kinesis Firehose found"と出ています。

「あれ?さっき作ったよな...??」とか思いつつ何度Refreshしても出てきません。何故。。。

 調べた

AWSドキュメントにさらっと記載がありました。「CloudFrontのログ取りたいならバージニア北部でfirehose作ってね」とのこと。

ウェブ ACL トラフィック情報のログ記録

Amazon CloudFront でログをキャプチャしている場合には、米国東部(バージニア北部) で firehose を作成します。

やってみる

リージョンをバージニア北部に変えて、Firehoseを作り直しました。

この状態で先ほどと同様にログの設定画面に飛ぶと、今度は作成したFirehoseが選択出来るようになりました!

まとめ

一回ハマらないと気付かないような仕様だったのでこの機会に学べて良かったと思います。

この記事が誰かのお役に立てば幸いです。

以上、AWS事業本部の大前でした!