in src/main/java/com/amazonaws/services/kinesis/scaling/StreamScalingUtils.java [172:189]
public static Shard getShard(final KinesisClient kinesisClient, final String streamName, final String shardIdStart)
throws Exception {
LOG.info(String.format("Getting Shard %s for Stream %s", shardIdStart, streamName));
KinesisOperation describe = new KinesisOperation() {
public Object run(KinesisClient client) {
// reduce the shardIdStart by 1 as the API uses it as an exclusive start key not
// a filter
String shardIdToQuery = new BigDecimal(shardIdStart).subtract(new BigDecimal("1")).toString();
ListShardsRequest req = ListShardsRequest.builder().streamName(streamName)
.exclusiveStartShardId(shardIdToQuery).build();
ListShardsResponse result = client.listShards(req);
return result.shards().get(0);
}
};
return (Shard) doOperation(kinesisClient, describe, streamName, DESCRIBE_RETRIES, false);
}