docs: public static List<Shard> discoverShards(String regionName, String streamName, String accessKey, String secretKey,
              String appName) {
          try {
              Region region = RegionUtils.getRegion(regionName);
              if (region != null) {
                  final AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
                  AmazonKinesis kinesisClient = new AmazonKinesisClient(credentials,
                          getClientConfigWithUserAgent(appName));
                  kinesisClient.setRegion(region);
  
                  DescribeStreamResult result = kinesisClient.describeStream(streamName);
                  if (!"ACTIVE".equals(result.getStreamDescription().getStreamStatus())) {
                      throw new IllegalArgumentException("Kinesis stream " + streamName + " is not active.");
                  }
                  return result.getStreamDescription().getShards();
              }
          } catch (ResourceNotFoundException e) {
              LOGGER.warn("Kinesis stream " + streamName + " does not exist.", e);
          } catch (Exception e) {
              LOGGER.warn("Error found while describing the kinesis stream " + streamName, e);
          }
          return null;
      }