起動、シャットダウン、スロットリングの処理 - Amazon Kinesis Data Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

起動、シャットダウン、スロットリングの処理

ここでは、Amazon Kinesis Data Streams アプリケーションの設計に取り入れる必要がある、追加の考慮事項を示します。

データプロデューサーとデータコンシューマーを起動する

デフォルトでは、 はストリームの先頭からレコードの読み取りKCLを開始します。ストリームの先頭は、最後に追加されたレコードです。この設定では、受信側のレコードプロセッサが実行される前に、データプロデューサーアプリケーションがストリームにレコードを追加した場合、レコードプロセッサが起動した後、これらのレコードはレコードプロセッサによって読み込まれません。

レコードプロセッサの動作を変更して、常にストリームの先頭からデータを読み込むには、Amazon Kinesis Data Streams アプリケーションの properties ファイルで次の値を設定します。

initialPositionInStream = TRIM_HORIZON

デフォルトでは、Amazon Kinesis Data Streams はすべてのデータを 24 時間保存します。また、最大 7 日間の延長保存と最大 365 日間の長期保存もサポートします。この期間は保持期間と呼ばれます。開始位置を TRIM_HORIZON に設定すると、保持期間で定義されているとおりに、ストリーム内の最も古いデータでレコードプロセッサが起動します。TRIM_HORIZON に設定しても、保持期間を上回る時間が経過した後でレコードプロセッサが起動される場合は、ストリーム内のレコードの一部が利用できなくなります。このため、コンシューマーアプリケーションは常にストリームから読み取り、 CloudWatch メトリクスを使用してアプリケーションが受信データに追いついていることGetRecords.IteratorAgeMillisecondsをモニタリングする必要があります。

シナリオによっては、レコードプロセッサがストリームの最初の数レコードを処理しなくても問題ない場合があります。例えば、ストリームを通じていくつかの初期レコードを実行して、ストリームが期待 end-to-end どおりに動作していることをテストできます。この初期確認を行った後でワーカーを起動し、ストリームへの本番データの送信を開始します。

TRIM_HORIZON の設定の詳細については、シャードイテレーターを使用するを参照してください。

Amazon Kinesis Data Streams アプリケーションをシャットダウンする

Amazon Kinesis Data Streams アプリケーションが意図したタスクを完了したら、実行中のEC2インスタンスを終了してシャットダウンする必要があります。インスタンスは、AWS Management Console または AWS CLI を使用して終了することができます。

Amazon Kinesis Data Streams アプリケーションをシャットダウンしたら、アプリケーションの状態を追跡するために がKCL使用した Amazon DynamoDB テーブルを削除する必要があります。

読み取りスロットリング

ストリームのスループットは、シャードレベルでプロビジョニングされます。各シャードは、読み取りに対して 1 秒あたり最大 5 トランザクションのスループットで、最大合計データ読み取り速度は 1 秒あたり 2MB です。アプリケーション (または同じストリームで動作するアプリケーションのグループ) がシャードからデータをより高速に取得しようとすると、Kinesis Data Streams は対応する GET オペレーションを調整します。

Amazon Kinesis Data Streams アプリケーションでは、レコードプロセッサが制限よりも高速にデータを処理している場合 (フェイルオーバーの場合など)、スロットリングが発生します。はアプリケーションと Kinesis Data Streams 間のインタラクションKCLを管理するため、スロットリング例外はアプリケーションKCLコードではなくコードで発生します。ただし、 はこれらの例外をKCLログに記録するため、ログにはそれらが表示されます。

アプリケーションが絶えずスロットリングされていると思われる場合は、ストリームのシャード数を増やすことを検討してください。