Amazon Kinesisの集約データをAWS Lambdaで処理する
SA岩永( @riywo )です。AWSのプリンシパルSAのIan MeyersがAWS Big Data Blogに非常に興味深い投稿をしていたので翻訳しました。
特にAmazon Kinesis Streamsを既に使われている方は、Amazon Kinesis Streams to Amazon Kinesis Firehose Forwarderを使うだけでそのストリームをAmazon S3に保管したりAmazon Redshiftにロードする流れがサーバレスに構築できるので強くオススメできます。
使ってみて疑問質問等ありましたら、遠慮無く私までご連絡下さい(日本語で大丈夫です!)。
Amazon Kinesis Streamsへのデータ送信の必要があるアプリケーションの開発をシンプルにするために、昨年我々はAmazon Kinesis Producer Library (KPL)を提供し始めました。多くのお客様が集約をしていて、単一のAmazon Kinesis Streamsのレコードに複数のレコードをまとめて送っています。KPLはイベントの集約を簡単にしてくれますが、ストリームからレコードを処理するときにこの情報を解くという問題は残されたままでした。
このデータを簡単に処理できるようになるAmazon Kinesis de-aggregation modulesを発表できることを嬉しく思っています。モジュールはJava、Python、そしてNode.jsをサポートしているので、KPLで集約されたストリームからAWS Lambdaやmulti-langなKCLアプリケーションを使ってレコードを解くことができます。
また、LambdaベースのAmazon Kinesis Streams to Amazon Kinesis Firehose Forwarderのバージョン1.2.0も同時に提供します。これはストリームから自動的にKPLのレコードを解き、Amazon S3へのアーカイブやAmazon Redshiftへのロードするデリバリストリームに転送してくれます。
GitHubのREADMEには画像があって分かりやすいので、こちらにも転載しておきます。
KPLがレコードを集約する動作はこんな感じです。Amazon Kinesis Streamsは1レコード最大1MBまで入るので、なるべく集約して送った方が実効スループットを上げられます。KPLはそれを手助けしてくれます。
そのデータを、de-aggregation moduleが解くのはこういうイメージ。簡単に元々のレコードに分解して処理できます。
Amazon Kinesis StreamsやAmazon DynamoDB StreamsからAmazon Kinesis FirehoseへAWS Lambdaだけで転送する動作はこんなイメージ。
コメント