Répertorier les fragments - Amazon Kinesis Data Streams

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Répertorier les fragments

Un flux de données peut comporter une ou plusieurs partitions. La méthode recommandée pour répertorier ou récupérer les fragments d'un flux de données consiste à utiliser le. ListShardsAPI L'exemple suivant montre comment vous pouvez obtenir une liste des partitions d'un flux de données. Pour une description complète de l'opération principale utilisée dans cet exemple et de tous les paramètres que vous pouvez définir pour l'opération, consultez 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()); } } }

Pour exécuter l'exemple de code précédent, vous pouvez utiliser un POM fichier comme le suivant.

<?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>

Avec le ListShardsAPI, vous pouvez utiliser le ShardFilterparamètre pour filtrer la réponse duAPI. Vous ne pouvez spécifier qu'un seul filtre à la fois.

Si vous utilisez le ShardFilter paramètre lors de l'appel de ListShardsAPI, la propriété Type est requise et doit être spécifiée. Si vous spécifiez les types AT_TRIM_HORIZON, FROM_TRIM_HORIZON ou AT_LATEST, vous n'avez pas besoin d'indiquer le ShardId ou les propriétés optionnelles Timestamp.

Si vous spécifiez le type AFTER_SHARD_ID, vous devez également indiquer la valeur de la propriété optionnelle ShardId. La fonctionnalité de la ShardId propriété est identique à celle du ExclusiveStartShardId paramètre de ListShards API. Lorsque la propriété ShardId est indiquée, la réponse inclut les partitions en commençant par la partition dont l'identifiant suit immédiatement le ShardId que vous avez indiqué.

Si vous spécifiez le type AT_TIMESTAMP ou FROM_TIMESTAMP_ID, vous devez également indiquer la valeur de la propriété optionnelle Timestamp. Si vous spécifiez le type AT_TIMESTAMP, toutes les partitions ouvertes à l'horodatage indiqué sont renvoyées. Si vous spécifiez le FROM_TIMESTAMP type, toutes les partitions commençant par l'horodatage fourni sont TIP renvoyées.

Important

DescribeStreamSummaryet ListShard APIs offrez un moyen plus évolutif de récupérer des informations sur vos flux de données. Plus précisément, les quotas pour le DescribeStream API peuvent entraîner un ralentissement. Pour de plus amples informations, veuillez consulter Quotas et limites. Notez également que les DescribeStream quotas sont partagés entre toutes les applications qui interagissent avec tous les flux de données de votre AWS compte. Les quotas pour ListShards API, en revanche, sont spécifiques à un seul flux de données. Ainsi, non seulement vous progressez TPS avec le ListShards API, mais l'action s'adapte mieux à mesure que vous créez davantage de flux de données.

Nous vous recommandons de migrer tous vos producteurs et consommateurs qui appellent le DescribeStream API to au lieu d'invoquer le DescribeStreamSummary et le ListShard APIs. Pour identifier ces producteurs et consommateurs, nous recommandons d'utiliser Athena pour analyser les CloudTrail journaux en tant qu'agents utilisateurs KPL et KCL capturés dans les appels. API

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

Nous recommandons également de reconfigurer les intégrations AWS Lambda et Amazon Firehose avec Kinesis Data Streams qui invoquent DescribeStream API le. DescribeStreamSummary ListShards Plus précisément, pour AWS Lambda, vous devez mettre à jour le mappage de votre source d'événements. Pour Amazon Firehose, les IAM autorisations correspondantes doivent être mises à jour afin qu'elles incluent l'ListShardsIAMautorisation.