Menu
Amazon Kinesis Streams Service API Reference
API Reference (API Version 2013-12-02)

UpdateShardCount

Updates the shard count of the specified stream to the specified number of shards.

Updating the shard count is an asynchronous operation. Upon receiving the request, Amazon Kinesis returns immediately and sets the status of the stream to UPDATING. After the update is complete, Amazon Kinesis sets the status of the stream back to ACTIVE. Depending on the size of the stream, the scaling action could take a few minutes to complete. You can continue to read and write data to your stream while its status is UPDATING.

To update the shard count, Amazon Kinesis performs splits or merges on individual shards. This can cause short-lived shards to be created, in addition to the final shards. We recommend that you double or halve the shard count, as this results in the fewest number of splits or merges.

This operation has the following limits, which are per region per account unless otherwise noted:

  • scale more than twice per rolling 24 hour period

  • scale up above double your current shard count

  • scale down below half your current shard count

  • scale up above 500 shards in a stream

  • scale a stream with more than 500 shards down unless the result is less than 500 shards

  • scale up above the shard limits for your account

For the default limits for an AWS account, see Streams Limits in the Amazon Kinesis Streams Developer Guide. If you need to increase a limit, contact AWS Support.

Request Syntax

Copy
{ "ScalingType": "string", "StreamName": "string", "TargetShardCount": number }

Request Parameters

The request accepts the following data in JSON format.

ScalingType

The scaling type. Uniform scaling creates shards of equal size.

Type: String

Valid Values: UNIFORM_SCALING

Required: Yes

StreamName

The name of the stream.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 128.

Pattern: [a-zA-Z0-9_.-]+

Required: Yes

TargetShardCount

The new number of shards.

Type: Integer

Valid Range: Minimum value of 1. Maximum value of 100000.

Required: Yes

Response Syntax

Copy
{ "CurrentShardCount": number, "StreamName": "string", "TargetShardCount": number }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

CurrentShardCount

The current number of shards.

Type: Integer

Valid Range: Minimum value of 1. Maximum value of 100000.

StreamName

The name of the stream.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 128.

Pattern: [a-zA-Z0-9_.-]+

TargetShardCount

The updated number of shards.

Type: Integer

Valid Range: Minimum value of 1. Maximum value of 100000.

Errors

For information about the errors that are common to all actions, see Common Errors.

InvalidArgumentException

A specified parameter exceeds its restrictions, is not supported, or can't be used. For more information, see the returned message.

HTTP Status Code: 400

LimitExceededException

The requested resource exceeds the maximum number allowed, or the number of concurrent stream requests exceeds the maximum number allowed.

HTTP Status Code: 400

ResourceInUseException

The resource is not available for this operation. For successful operation, the resource needs to be in the ACTIVE state.

HTTP Status Code: 400

ResourceNotFoundException

The requested resource could not be found. The stream might not be specified correctly.

HTTP Status Code: 400

Example

To update the shard count of the specified stream from 2 to 4.

Sample Request

Copy
POST / HTTP/1.1 Host: kinesis.<region>.<domain> Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Authorization: <AuthParams> Connection: Keep-Alive X-Amz-Date: <Date> X-Amz-Target: Kinesis_20131202.UpdateShardCount { "StreamName": "exampleStreamName", "TargetShardCount": 4, "ScalingType": "UNIFORM_SCALING" }

Sample Response

Copy
HTTP/1.1 200 OK x-amzn-RequestId: <RequestId> Content-Type: application/x-amz-json-1.1 Content-Length: <PayloadSizeBytes> Date: <Date> { "TargetShardCount": 4, "StreamName": "exampleStreamName", "CurrentShardCount": 2 }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: