2019-06-09 20:42:25 +00:00
|
|
|
package consumer
|
|
|
|
|
|
|
|
|
|
import (
|
2021-09-22 05:00:14 +00:00
|
|
|
"context"
|
2019-06-09 20:42:25 +00:00
|
|
|
"fmt"
|
|
|
|
|
|
2021-09-22 05:00:14 +00:00
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
|
|
|
"github.com/aws/aws-sdk-go-v2/service/kinesis"
|
|
|
|
|
"github.com/aws/aws-sdk-go-v2/service/kinesis/types"
|
2019-06-09 20:42:25 +00:00
|
|
|
)
|
|
|
|
|
|
2021-09-22 05:00:14 +00:00
|
|
|
// listShards pulls a list of Shard IDs from the kinesis api
|
|
|
|
|
func listShards(ctx context.Context, ksis kinesisClient, streamName string) ([]types.Shard, error) {
|
|
|
|
|
var ss []types.Shard
|
2019-06-09 20:42:25 +00:00
|
|
|
var listShardsInput = &kinesis.ListShardsInput{
|
|
|
|
|
StreamName: aws.String(streamName),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for {
|
2021-09-22 05:00:14 +00:00
|
|
|
resp, err := ksis.ListShards(ctx, listShardsInput)
|
2019-06-09 20:42:25 +00:00
|
|
|
if err != nil {
|
2021-02-05 17:10:34 +00:00
|
|
|
return nil, fmt.Errorf("ListShards error: %w", err)
|
2019-06-09 20:42:25 +00:00
|
|
|
}
|
|
|
|
|
ss = append(ss, resp.Shards...)
|
|
|
|
|
|
|
|
|
|
if resp.NextToken == nil {
|
|
|
|
|
return ss, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
listShardsInput = &kinesis.ListShardsInput{
|
2020-03-20 04:45:53 +00:00
|
|
|
NextToken: resp.NextToken,
|
2019-06-09 20:42:25 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|