

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# API を使用してストリームを作成する
<a name="kinesis-using-sdk-java-create-stream"></a>

次の手順で Kinesis Data Streams を作成します。

## Kinesis Data Streams クライアントの構築
<a name="kinesis-using-sdk-java-create-client"></a>

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 のリージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#ak_region)を参照してください。**

## ストリームを作成する
<a name="kinesis-using-sdk-java-create-the-stream"></a>

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 課金されるコストも増加します。アプリケーションに適切なシャードの数の計算の詳細については、[適切なストリームモードを選ぶ](how-do-i-size-a-stream.md)を参照してください。

 `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" );
}
```