翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
起動、シャットダウン、スロットリングの処理
ここでは、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
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ログに記録するため、ログにはそれらが表示されます。
アプリケーションが絶えずスロットリングされていると思われる場合は、ストリームのシャード数を増やすことを検討してください。