Amazon Kinesis Data Streams
開発者ガイド

Amazon Kinesis Data Streams プロデューサーのトラブルシューティング

以下のセクションでは、Amazon Kinesis Data Streams プロデューサーの操作中に発生する可能性がある一般的な問題に対する解決策を示します。

プロデューサーアプリケーションの書き込みの速度が予想よりも遅い

書き込みのスループットが予想よりも遅くなる最も一般的な理由は次のとおりです。

サービスの制限を超過している

サービスの制限を超過している呼び出しによって制限が異なることに注意して、Kinesis Data Streams の制限 を確認してください。たとえば、書き込みと読み取りのシャードレベルの制限は最もよく知られていますが、以下のようなストリームレベルの制限もあります。

CreateStreamDeleteStreamListStreamsGetShardIteratorMergeShards のオペレーションは、1 秒あたり 5 個の呼び出しに制限されます。DescribeStream オペレーションは、1 秒あたり 10 個の呼び出しに制限されます。DescribeStreamSummary オペレーションは、1 秒あたり 20 個の呼び出しに制限されます。

このような呼び出しが原因でない場合は、選択したパーティションキーを使用してすべてのシャードに put オペレーションを均等に分散できること、どのパーティションキーもサービスの制限に達していないことを確認します。これには、ピークスループットを測定して、ストリームのシャードの数を考慮する必要があります。ストリーム管理の詳細については、「ストリームの作成と管理」を参照してください。

ヒント

シングルレコードオペレーション PutRecord では、スループットスロットリングの計算結果がキロバイト単位に四捨五入されます。マルチレコードオペレーション PutRecords では、各セルのレコードの累計が四捨五入されます。たとえば、PutRecords は 1.1 KB になる 600 レコードのリクエストをスロットリングしません。

プロデューサーの最適化

プロデューサーの最適化を始める前に、完了しておかなければならない重要なタスクがいくつかあります。最初に、レコードのサイズと 1 秒あたりのレコード数で必要となるスループットピークを特定します。次に、制限要素としてのストリーム容量を除外します (サービスの制限を超過している)。ストリーム容量を除外している場合は、以下のプロデューサーの 2 つの一般的なタイプのトラブルシューティングのヒントと最適化のガイドラインを使用します。

ラージプロデューサー

ラージプロデューサーは、通常オンプレミスサーバーまたは Amazon EC2 インスタンスから実行されます。ラージプロデューサーからより高いスループットを必要とするお客様は、通常レコードあたりのレイテンシーに注意を払います。レイテンシーを処理する戦略として、お客様がレコードをマイクロバッチ/バッファできる場合は、Kinesis Producer Library (高度な集約ロジックがある) を使用するか、マルチレコードオペレーション PutRecords を使用するか、レコードをより大きいファイルに集約してからシングルレコードオペレーション PutRecord を使用します。バッチ/バッファを使用できない場合は、複数のスレッドを使用して Kinesis Data Streams サービスに同時に書き込みます。AWS SDK for Java とその他の SDK には、ごく少数のコードでこれを実行できる非同期クライアントが含まれます。

スモールプロデューサー

スモールプロデューサーは、通常モバイルアプリケーション、IoT デバイス、またはウェブクライアントです。モバイルアプリケーションの場合は、PutRecords オペレーションを使用するか、AWS モバイル SDK の Kinesis レコーダーを使用することをお勧めします。詳細については、「AWS Mobile SDK for Android 入門ガイド」および「AWS Mobile SDK for iOS Getting Started Guide」を参照してください。モバイルアプリケーションは、本来断続的な接続を処理する必要があり、PutRecords のようなバッチ put タイプを必要とします。何らかの理由でバッチを使用できない場合は、上記のラージプロデューサーの情報を参照してください。プロデューサーがブラウザの場合、生成されるデータの量は通常非常に小さなものとなります。ただし、アプリケーションの重要なパスに put オペレーションを配置することはお勧めしません。

承認されていない KMS マスターキーの権限エラー

このエラーは、プロデューサーアプリケーションが KMS マスターキーに対するアクセス許可なしで、暗号化されたストリームに書き込みを行うときに発生します。KMS キーにアクセスする権限をアプリケーションに割り当てる方法については、「AWS KMS でのキーポリシーの使用」および「AWS KMS での IAM ポリシーの使用」を参照してください。