Amazon Kinesis Firehoseを使用してS3にデータを送信しました。
使ったサービス
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操作を行うことも可能であるとわかりました。