Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Haz una lista de fragmentos
Un flujo de datos puede tener una o varias particiones. El método recomendado para enumerar o recuperar los fragmentos de un flujo de datos es utilizar el. ListShardsAPI El siguiente ejemplo muestra cómo obtener una lista de las particiones de un flujo de datos. Para obtener una descripción completa de la operación principal utilizada en este ejemplo y de todos los parámetros que puede configurar para la operación, consulte. ListShards
import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; import software.amazon.awssdk.services.kinesis.model.ListShardsRequest; import software.amazon.awssdk.services.kinesis.model.ListShardsResponse; import java.util.concurrent.TimeUnit; public class ShardSample { public static void main(String[] args) { KinesisAsyncClient client = KinesisAsyncClient.builder().build(); ListShardsRequest request = ListShardsRequest .builder().streamName("myFirstStream") .build(); try { ListShardsResponse response = client.listShards(request).get(5000, TimeUnit.MILLISECONDS); System.out.println(response.toString()); } catch (Exception e) { System.out.println(e.getMessage()); } } }
Para ejecutar el ejemplo de código anterior, puede utilizar un POM archivo como el siguiente.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>kinesis.data.streams.samples</groupId> <artifactId>shards</artifactId> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>kinesis</artifactId> <version>2.0.0</version> </dependency> </dependencies> </project>
Con el ListShards
API, puede usar el ShardFilterparámetro para filtrar la respuesta delAPI. Solo puede especificar un filtro a la vez.
Si utiliza el ShardFilter
parámetro al invocar ListShardsAPI, Type
es la propiedad obligatoria y debe especificarse. Si especifica los tipos AT_TRIM_HORIZON
, FROM_TRIM_HORIZON
o AT_LATEST
, no necesita especificar las propiedades opcionales ShardId
o Timestamp
.
Si especifica el tipo AFTER_SHARD_ID
, también deberá proporcionar el valor de la propiedad opcional ShardId
. La ShardId
propiedad tiene una funcionalidad idéntica a la del ExclusiveStartShardId
ListShards API parámetro. Cuando se especifica la propiedad ShardId
, la respuesta incluye las particiones que comienzan con la partición cuyo ID sigue inmediatamente al ShardId
proporcionado.
Si especifica el tipo AT_TIMESTAMP
o FROM_TIMESTAMP_ID
, también deberá proporcionar el valor de la propiedad opcional Timestamp
. Si especifica el tipo AT_TIMESTAMP
, se devolverán todas las particiones que estaban abiertas en la marca de tiempo proporcionada. Si especifica el FROM_TIMESTAMP
tipo, se devolverán todos los fragmentos empezando por la marca de tiempo proporcionada hastaTIP.
importante
DescribeStreamSummary
y ListShard
APIs proporcionan una forma más escalable de recuperar información sobre sus flujos de datos. Más específicamente, las cuotas DescribeStream API pueden provocar una limitación. Para obtener más información, consulte Cuotas y límites. Tenga en cuenta también que DescribeStream
las cuotas se comparten entre todas las aplicaciones que interactúan con todos los flujos de datos de su AWS cuenta. Por otro lado ListShards API, las cuotas son específicas para un único flujo de datos. Por lo tanto, no solo se consigue aumentar TPS con ellas ListShards API, sino que la acción se escala mejor a medida que se crean más flujos de datos.
Le recomendamos que migre a todos los productores y consumidores que utilizan el DescribeStream API para, en lugar de utilizar el DescribeStreamSummary y el ListShard APIs. Para identificar a estos productores y consumidores, recomendamos utilizar Athena para analizar CloudTrail los registros como agentes de usuario KPL y capturarlos en KCL las API llamadas.
SELECT useridentity.sessioncontext.sessionissuer.username, useridentity.arn,eventname,useragent, count(*) FROM cloudtrail_logs WHERE Eventname IN ('DescribeStream') AND eventtime BETWEEN '' AND '' GROUP BY useridentity.sessioncontext.sessionissuer.username,useridentity.arn,eventname,useragent ORDER BY count(*) DESC LIMIT 100
También recomendamos que las integraciones de AWS Lambda y Amazon Firehose con Kinesis Data Streams que invocan el se reconfiguren para que, en su lugar, DescribeStream
API las integraciones invoquen y. DescribeStreamSummary
ListShards
En concreto, en el caso de AWS Lambda, debe actualizar el mapeo de la fuente de eventos. En el caso de Amazon Firehose, los IAM permisos correspondientes deben actualizarse para que incluyan el ListShards
IAM permiso.