翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
APIs を使用してストリームを作成する
次の手順で Kinesis Data Streams を作成します。
Kinesis Data Streams クライアントの構築
Kinesis Data Streams を使用する前に、クライアントオブジェクトを構築する必要があります。次の Java コードは、クライアントビルダーをインスタンス化し、それを使用してリージョン、認証情報、およびクライアント設定を指定します。次に、クライアントオブジェクトを構築します。
AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard(); clientBuilder.setRegion(regionName); clientBuilder.setCredentials(credentialsProvider); clientBuilder.setClientConfiguration(config); AmazonKinesis client = clientBuilder.build();
詳細については、「AWS 全般のリファレンス」で「Kinesis Data Streams のリージョンとエンドポイント」を参照してください。
ストリームを作成する
Kinesis Data Streams クライアントを作成したら、コンソールまたはプログラムでストリームを作成できます。プログラムでストリームを作成するには、CreateStreamRequest
オブジェクトをインスタンス化し、ストリームの名前を指定します。プロビジョンドモードを使用する場合は、使用するデータストリームのシャード数を指定する必要があります。
-
オンデマンド:
CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName );
-
プロビジョンド:
CreateStreamRequest createStreamRequest = new CreateStreamRequest(); createStreamRequest.setStreamName( myStreamName ); createStreamRequest.setShardCount( myStreamSize );
ストリーム名はストリームを識別するために使用されます。名前は、アプリケーションで使用される AWS アカウントに限定されます。また、リージョンにも限定されます。つまり、2 つの異なる AWS アカウントの 2 つのストリームは同じ名前を持つことができ、2 つの異なるリージョンの AWS 2 つのストリームは同じ名前を持つことができますが、同じアカウントと同じリージョンの 2 つのストリームを持つことはできません。
ストリームのスループットはシャードの数の関数です。プロビジョニングされたスループットを向上させるには、より多くのシャードが必要です。シャードが増えると、 がストリームに AWS 請求するコストも増加します。アプリケーションに適切なシャードの数の計算の詳細については、データストリーム容量モードを選択するを参照してください。
createStreamRequest
オブジェクトを設定した後、クライアントの createStream
メソッドを呼び出すことで、ストリームを作成します。createStream
の呼び出し後、ストリームに対してさらにオペレーションを実行するには、ストリームが ACTIVE
状態になるまで待機します。ストリームの状態を確認するには、describeStream
メソッドを呼び出します。ただし、ストリームが存在しない場合、describeStream
は例外をスローします。そのために、describeStream
の呼び出しは try/catch
ブロックで囲みます。
client.createStream( createStreamRequest ); DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest(); describeStreamRequest.setStreamName( myStreamName ); long startTime = System.currentTimeMillis(); long endTime = startTime + ( 10 * 60 * 1000 ); while ( System.currentTimeMillis() < endTime ) { try { Thread.sleep(20 * 1000); } catch ( Exception e ) {} try { DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest ); String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus(); if ( streamStatus.equals( "ACTIVE" ) ) { break; } // // sleep for one second // try { Thread.sleep( 1000 ); } catch ( Exception e ) {} } catch ( ResourceNotFoundException e ) {} } if ( System.currentTimeMillis() >= endTime ) { throw new RuntimeException( "Stream " + myStreamName + " never went active" ); }