

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# シャードを一覧表示する
<a name="kinesis-using-sdk-java-list-shards"></a>

データストリームは 1 つ以上のシャードを持つことができます。データストリームからシャードを一覧表示または取得するのに推奨される方法は、[ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) API を使用することです。次の例では、データストリーム内のシャードを一覧表示する方法を示します。この例で使用しているメインオペレーションと、このオペレーションで設定できるすべてのパラメータの詳細については、[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());
        }
    }
}
```

前のコード例を実行するには、次のような POM ファイルを使用できます。

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

`ListShards` API では、[ShardFilter](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html) パラメーターを使用して API の応答をフィルターで除外できます。一度に 1 つのフィルターしか指定できません。

ListShards API を呼び出すときに `ShardFilter` パラメータを使用する場合、`Type` は必須プロパティであり、指定する必要があります。`AT_TRIM_HORIZON`、`FROM_TRIM_HORIZON`、または `AT_LATEST` タイプを指定する場合は、`ShardId` または `Timestamp` のオプションのプロパティを指定する必要はありません。

`AFTER_SHARD_ID` タイプを指定する場合は、オプションの `ShardId` プロパティの値も指定する必要があります。`ShardId` プロパティは、機能的には ListShards API の `ExclusiveStartShardId` パラメーターと同じです。`ShardId` プロパティが指定されている場合、レスポンスには、指定した `ShardId` の直後に ID が続くシャードで始まるシャードが含まれます。

`AT_TIMESTAMP` または `FROM_TIMESTAMP_ID` タイプを指定する場合は、オプションの `Timestamp` プロパティの値も指定する必要があります。`AT_TIMESTAMP` タイプを指定する場合は、指定されたタイムスタンプで開いていたすべてのシャードが返されます。`FROM_TIMESTAMP` タイプを指定する場合は、TIP に指定されたタイムスタンプから始まるすべてのシャードが返されます。

**重要**  
`DescribeStreamSummary` および `ListShard` API は、データストリームに関する情報を取得するための、よりスケーラブルな方法を提供します。具体的には、DescribeStream API のクォータによってスロットリングが発生する可能性があります。詳細については、「[クォータと制限](service-sizes-and-limits.md)」を参照してください。また、`DescribeStream`クォータは AWS 、アカウント内のすべてのデータストリームとやり取りするすべてのアプリケーション間で共有されることに注意してください。一方、ListShards API のクォータは、単一のデータストリームに固有です。したがって、ListShards API を使用すると TPS が高くなるだけでなく、データストリームを作成するにつれてアクションのスケーリングが向上します。  
DescribeStream API を呼び出すすべてのプロデューサーとコンシューマーを移行して、代わりに DescribeStreamSummary および ListShard API を呼び出すことをお勧めします。これらのプロデューサーとコンシューマーを特定するには、KPL および KCL のユーザーエージェントが API コールでキャプチャされるため、Athena を使用して CloudTrail ログを解析することをお勧めします。  

```
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
```
API を呼び出す AWS Lambda および Amazon Firehose と Kinesis Data Streams の統合`DescribeStream`は、統合が代わりに `DescribeStreamSummary`および を呼び出すように再設定することをお勧めします`ListShards`。具体的には、 AWS Lambda の場合は、イベントソースマッピングを更新する必要があります。Amazon Firehose については、対応する IAM 許可を更新して、それらに `ListShards` IAM 許可を含める必要があります。