Amazon Kinesis Firehoseを使用してS3にデータを送信しました。

AWSで大量のイベントを一括して入力できるサービスを探していたところ、Kinesis Firehoseを知りました。Firehoseでは、ユーザーが指定したフォーマットで、イベントファイルを作成し、Firehoseでサポートされているサービスのいずれかにファイルを保存することができます。今回はS3を選択しました。
2022.07.21

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

使ったサービス

Amazon Kinesis Firehose

データストリームを直接AWS製品にロードし、確実に処理するAWSサービス、スケーリングが自動的に行われるサービスで、最大で毎秒ギガバイト、バッチ処理、暗号化、圧縮も可能です。S3、Elasticsearch Service、Redshiftへのストリーミングが可能で、データをコピーして追加のサービスを通じて処理することができます。

S3

ストレージ向けのシンプルで人気のあるAWSサービスです。デフォルトで複数の施設にデータを複製します。 使用量に応じて課金されます。AWSサービスとの深い連携です。Bucketは論理的な記憶単位です。ObjectはBucketに追加されるデータ。 S3はobjectレベルでストレージクラスを持っており、アクセス頻度の低いオブジェクトをより低いストレージクラスに移動させることでコストを削減することができます。

Demo

S3 Bucketを作成し、名前を付け、その他の設定はデフォルトのままとします。 Kinesisでdelivery streamsをクリックします。 ここでは、エンドポイントからデータを入れるために、ソースデータを直接選んでおり、データの送信先はS3Bucketを指定します。

その他の設定はデフォルトのまま、「配信ストリームの作成」をクリックします。 kinesis FirehoseからS3へデモデータを送信し、配信システムをテストします。 データがS3に届くまで、しばらくこの状態を続けてください。 スクロールすると、送信されたデータ量と、1秒あたりのリクエスト数が表示されます。 今度はS3に移動してデータを確認します。 データをダウンロードして確認します。

まとめ

今回実際に検証をしたことで、kinesis firehoseがイベントを1つのファイルにプッシュする仕組みが理解できました。Buffer SizeやBuffer intervalsも適切に設定することが必要だとわかりました。また、転送データは1秒当たり最大1MBにデフォルト設定されています。S3 Bucketを長期保存する場合は、ライフサイクルポリシーを設定して、より低コストに保存をすることをおすすめします。また、Kinesis Firehoseの設定でファイルのgzip圧縮を有効にすることで、ファイルの保護とファイルサイズの圧縮を行うことができるので、こちらもおすすめです。S3のファイルに対してBI操作を行うことも可能であるとわかりました。

参考資料

Amazon Kinesis Firehoseについて知っておくべき全てのこと

Amazon S3について知っておくべき全てのこと