【AWS学習記録】Kinesis FIrehoseにはbuffer sizeについてなど

本日勉強したことをメモします。

Kinesis Data StreamsとKinesis Firehoseの違い

Kinesis Data Streamsはproducer/consumer アプリケーションを書く必要があるが、Kinesis Firehoseは必要ない。

Kinesis Produver constructorについて

Kinesis Produver constructorには以下の設定がある。

RecordMaxBufferdTime

MaxConnections

RequestTImeout

Region

RecordMaxBufferedTimeが低すぎると、集計が効率悪くなりパフォーマンスが落ちる。

Kinesis FIrehoseにはbuffer sizeについて

Kinesis Firehoseのbuffer sizeが大きすぎるとLambda関数の呼び出しリミットエラーが発生する場合がある。その場合はbuffer sizeを下げる。

DynamoDBのglobal tableについて

(https://aws.amazon.com/jp/dynamodb/global-tables/)

グローバルテーブルは、Amazon DynamoDB のグローバルフットプリントをベースに構築され、大規模なグローバルアプリケーションのローカルでの高速な読み取りおよび書き込みパフォーマンスを実現する、フルマネージドのマルチリージョン、マルチアクティブのグローバルデータベースを提供します。グローバルテーブルは、選択する AWS リージョン全体にわたって DynamoDB テーブルを自動的にレプリケートします。

グローバルに分散したユーザーがいる場合はグローバルテーブルが有効。

グローバルテーブルでは世界中のAWSリージョンにマルチアクティブレプリケーションして、ユーザーがどこにいても低レイテンシーでデータを提供できる。

グローバルテーブルのトランザクション処理

DynamoDBのグローバルテーブルはトランザクション処理をひとつのリージョンでのみサポートしている。たとえば三つのリージョンでグローバルテーブルを有効にしていた場合、トランザクション処理を行っているリージョンのトランザクションが終了するまで残り二つのリージョンには反映されない。

トランザクション処理がコミットされてから残り二つのリージョンに反映される。これはグローバルテーブルの仕様。

AWS Iot Coreについて

AWS IoT CoreはIoTデバイスのデータを受け取ってS3に直接書き込める。IoT CoreからKinesisに送るより直接S3に送ったほうがコストを抑えることができる。

Redshift MLについて

Redshift MLというサービスがある。RedshiftでSQLを使って機械学習モデル作成から予測まで可能。

(https://dev.classmethod.jp/articles/aws-redshift-ml/)

Redshift MLからSageMakerにデータを送ることもできるが、S3からSageMakerに送ったほうがコストは安い。

Kinesis Firehoseはストリーミングデータを取得してS3に書き込むことができる。

Glueの組み込み機能

Glueでデータ変換を行うには、組み込みの機能がある。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html

JSON形式のフィールドを持つCSVファイルをintやstringに変換する場合はUnboxが使える。

Redshiftのパフォーマンスが悪い時の対策

Redshiftのパフォーマンスが悪い時はVACUUMを実行してANALYZEを実行する。毎日。削除された行がクリーンアップされて、新しく挿入されたデータをソートし、meta dataを更新する。