Amazon Kinesis Data Streams
開発者ガイド

ストリームのリスト

前のセクションで説明したように、ストリームのスコープは、Kinesis Data Streams クライアントのインスタンス化に使用される AWS の認証情報に関連付けられた AWS アカウントに限定されます。また、このクライアントに指定されたリージョンにも限定されます。AWS アカウントを使用して多数のストリームを 1 度にアクティブにできます。ストリームは、Kinesis Data Streams コンソールでリストするか、プログラムによってリストすることができます。このセクションのコードでは、AWS アカウントのすべてのストリームをリスト表示する方法を示します。

ListStreamsRequest listStreamsRequest = new ListStreamsRequest(); listStreamsRequest.setLimit(20); ListStreamsResult listStreamsResult = client.listStreams(listStreamsRequest); List<String> streamNames = listStreamsResult.getStreamNames();

このコード例では、最初に ListStreamsRequest の新しいインスタンスを作成し、その setLimit メソッドを呼び出して、最大 20 個のストリームが listStreams の呼び出しごとに返されるように指定しています。setLimit の値を指定しない場合は、アカウントにあるストリームの数と同じかそれよりも少ないストリームの数が Kinesis Data Streams によって返されます。次に、コードはクライアントの listStreams メソッドに listStreamsRequest を渡します。listStreams の戻り値は ListStreamsResult オブジェクトに格納されます。コードはこのオブジェクトの getStreamNames メソッドを呼び出して、返されたストリームの名前を streamNames リストに格納します。アカウントとリージョンにこの制限で指定したよりも多くのストリームがある場合でも、Kinesis Data Streams によって返されるストリームの数が指定した制限に満たないことがあります。確実にすべてのストリームを取得するには、次のコード例で説明している getHasMoreStreams メソッドを使用します。

while (listStreamsResult.getHasMoreStreams()) { if (streamNames.size() > 0) { listStreamsRequest.setExclusiveStartStreamName(streamNames.get(streamNames.size() - 1)); } listStreamsResult = client.listStreams(listStreamsRequest); streamNames.addAll(listStreamsResult.getStreamNames()); }

このコードは、listStreamsRequestgetHasMoreStreams メソッドを呼び出して、listStreams の最初の呼び出しで返されたストリームの数よりも多いストリームがあるかどうかを確認します。ある場合、コードは setExclusiveStartStreamName メソッドを呼び出して、listStreams の前の呼び出しで返された最後のストリームの名前を指定します。setExclusiveStartStreamName メソッドは listStreams の次の呼び出しをそのストリームの後から開始します。その呼び出しによって返されたストリーム名のグループが streamNames リストに追加されます。すべてのストリームの名前がリストに収集されるまで、この処理を続行します。

listStreams で返されるストリームは以下のいずれかの状態になります。

  • CREATING

  • ACTIVE

  • UPDATING

  • DELETING

前の「ストリームの作成」で示した describeStream メソッドを使用して、ストリームの状態を確認できます。