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 ListShards
API, 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
DescribeStreamSummary
et 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'ListShards
IAMautorisation.