

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
<a name="kinesis-using-sdk-java-list-shards"></a>

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 l'[ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)API. 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](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html).

```
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 fichier POM comme celui qui suit.

```
<?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 l'`ListShards`API, vous pouvez utiliser le [ShardFilter](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html)paramètre pour filtrer la réponse de l'API. Vous ne pouvez spécifier qu'un seul filtre à la fois. 

Si vous utilisez le `ShardFilter` paramètre lors de l'appel de l' ListShardsAPI, `Type` il s'agit de la propriété requise qui 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 l' 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 type `FROM_TIMESTAMP`, toutes les partitions commençant à partir de l'horodatage indiqué jusqu'à TIP sont 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 de l' DescribeStream API peuvent provoquer un ralentissement. Pour de plus amples informations, veuillez consulter [Quotas et limites](service-sizes-and-limits.md). 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 de l' ListShards API, en revanche, sont spécifiques à un seul flux de données. Ainsi, non seulement vous obtenez un TPS plus élevé avec l' 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 l' DescribeStream API pour qu'ils invoquent plutôt le DescribeStreamSummary et le ListShard APIs. Pour identifier ces producteurs et consommateurs, nous recommandons d'utiliser Athena pour analyser les CloudTrail journaux, car les agents utilisateurs de KPL et KCL sont capturés dans les appels d'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 que les intégrations AWS Lambda et Amazon Firehose avec Kinesis Data Streams qui invoquent l'API soient reconfigurées afin que `DescribeStream` les intégrations invoquent plutôt et. `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 autorisations IAM correspondantes doivent être mises à jour afin qu'elles incluent l'autorisation IAM `ListShards`. 