

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Listar fragmentos
<a name="kinesis-using-sdk-java-list-shards"></a>

Um fluxo de dados pode ter um ou mais fragmentos. O método recomendado para listar ou recuperar os fragmentos de um stream de dados é usar a [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)API. O exemplo a seguir mostra como obter uma lista de fragmentos em um fluxo de dados. Para obter uma descrição completa da operação principal usada neste exemplo e de todos os parâmetros que você pode definir para a operação, consulte [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());
        }
    }
}
```

Para executar o exemplo de código anterior, é possível usar um arquivo POM, como o seguinte.

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

Com a `ListShards` API, você pode usar o [ShardFilter](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html)parâmetro para filtrar a resposta da API. Só é possível especificar um filtro de cada vez. 

Se você usar o `ShardFilter` parâmetro ao invocar a ListShards API, essa `Type` é a propriedade necessária e deve ser especificada. Se os tipos `AT_TRIM_HORIZON`, `FROM_TRIM_HORIZON` ou `AT_LATEST` forem especificados, não há necessidade de especificar as propriedades opcionais `ShardId` e `Timestamp`.

Se o tipo `AFTER_SHARD_ID` for especificado, também é necessário fornecer o valor para a propriedade opcional `ShardId`. A `ShardId` propriedade é idêntica em termos de funcionalidade ao `ExclusiveStartShardId` parâmetro da ListShards API. Quando a propriedade `ShardId` é especificada, a resposta inclui os fragmentos a partir daquele cuja ID segue imediatamente a `ShardId` fornecida.

Se os tipos `AT_TIMESTAMP` ou `FROM_TIMESTAMP_ID` forem especificados, também é necessário fornecer o valor para a propriedade opcional `Timestamp`. Se o tipo `AT_TIMESTAMP` for especificado, todos os fragmentos abertos no timestamp fornecido serão retornados. Se o tipo `FROM_TIMESTAMP` for especificado, todos os fragmentos do timestamp fornecido até a extremidade serão retornados. 

**Importante**  
`DescribeStreamSummary`e `ListShard` APIs forneça uma forma mais escalável de recuperar informações sobre seus fluxos de dados. Mais especificamente, as cotas da DescribeStream API podem causar limitação. Para obter mais informações, consulte [Cotas e limites](service-sizes-and-limits.md). Observe também que as `DescribeStream` cotas são compartilhadas em todos os aplicativos que interagem com todos os fluxos de dados em sua AWS conta. As cotas da ListShards API, por outro lado, são específicas para um único fluxo de dados. Portanto, você não apenas obtém um TPS mais alto com a ListShards API, mas a ação é melhor dimensionada à medida que você cria mais fluxos de dados.  
Recomendamos que você migre todos os produtores e consumidores que chamam a DescribeStream API para, em vez disso, invocar o DescribeStreamSummary e o. ListShard APIs Para identificar esses produtores e consumidores, recomendamos usar o Athena para analisar CloudTrail registros, pois os agentes de usuário para KPL e KCL são capturados nas chamadas de 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
```
Também recomendamos que as integrações do AWS Lambda e do Amazon Firehose com o Kinesis Data Streams que invocam a API sejam reconfiguradas para que, em vez disso, `DescribeStream` as integrações invoquem e. `DescribeStreamSummary` `ListShards` Especificamente, para o AWS Lambda, você deve atualizar o mapeamento da fonte do evento. No Amazon Firehose, as permissões correspondentes do IAM precisam ser atualizadas para que incluam a permissão `ListShards` do IAM. 