メニュー
Amazon Kinesis Data Streams
開発者ガイド

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

ここでは、Amazon Kinesis Data Streams applicationの設計に取り入れる必要がある、追加の考慮事項を示します。

データプロデューサとデータコンシューマーの起動

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

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

initialPositionInStream = TRIM_HORIZON

Amazon Kinesis Data Streams は、レコードを 24 ~ 168 時間保持します。この期間は保持期間と呼ばれます。TRIM_HORIZON に起動ポジションを設定すると、保持期間で定義されているとおりに、ストリームの古いデータを使用してレコードプロセッサが起動します。TRIM_HORIZON 設定でも、レコードプロセッサが保持期間経過後に起動した場合は、ストリームのデータの一部が使用できなくなります。そのため、ストリームから読み込むコンシューマーアプリケーションが常に存在しており、CloudWatch メトリクス GetRecords.IteratorAgeMilliseconds を使用して、アプリケーションが受信データに追随していることをモニタリングする必要があります。

シナリオによっては、レコードプロセッサでストリームの最初の数レコードが不足していても問題はない場合があります。たとえば、ストリームがエンドツーエンドで正常に機能していることをテストするために、ストリームに最初の数レコードを送信できます。この初期確認を行った後、ワーカーを起動し、ストリームへの本稼働データの送信を開始します。

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

Amazon Kinesis Data Streams Applicationのシャットダウン

Amazon Kinesis Data Streams applicationが目的のタスクを完了したら、アプリケーションが実行されている EC2 インスタンスを削除することによって、アプリケーションをシャットダウンする必要があります。インスタンスを削除するには、AWS マネジメントコンソールまたは AWS CLI を使用します。

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

読み込みのスロットリング

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

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

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