0

デバイスからイベントを収集する AWS Kinesis ストリームからのデータを処理する必要があります。最後の 10 秒間に受信したすべてのイベントで、処理関数を毎秒呼び出す必要があります。


たとえば、ストリームにイベントを書き込む 2 つのデバイス A と B があるとします。私のプロシージャの名前は MyFunction で、次のパラメーターを取ります。

  • デバイスID
  • 期間のデータの配列

10:00:00 に処理を開始した場合 (デバイス A と B の過去 10 秒間のイベントが既に蓄積されている場合)、次の 2 つの呼び出しを行う必要があります。

  • MyFunction(А, {09:59:50 から 10:00:00 までのデバイス A のイベント})
  • MyFunction(B, {09:59:50 から 10:00:00 までのデバイス B のイベント})

次の秒、10:00:01

  • MyFunction(А, {09:59:51 から 10:00:01 までのデバイス A のイベント})
  • MyFunction(B, {09:59:51 から 10:00:01 までのデバイス B のイベント})

等々。


デバイスから受信したすべてのデータを蓄積する最も簡単な方法は、メモリを一時バッファーに格納すること (もちろん、最後の 10 秒間のみ) のように見えるので、最初にこれを試してみたいと思います。

このようなメモリ ベースのバッファを保持する最も便利な方法は、Java Kinesis Client Library (KCL) ベースのアプリケーションを作成することです。

AWS Lambda ベースのソリューションも検討しましたが、ラムダのデータをメモリに保持することは不可能のようです。Lambda のもう 1 つのオプションは、2 つの関数を使用することです。最初の関数はすべてのデータを DynamoDB に書き込む必要があり、2 つ目の関数は毎秒呼び出されて、メモリからではなく db からフェッチされたデータを処理します。(したがって、このオプションははるかに複雑です)

私の質問は次のとおりです。そのような処理を実装するための他のオプションは何ですか?

4

1 に答える 1