列出碎片 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

列出碎片

資料串流可以有一個或多個碎片。從資料串流列出或擷取碎片的建議方法是使用 ListShardsAPI. 下列範例顯示取得資料串流中碎片清單的方法。如需此範例中使用的主要作業的完整描述,以及可為該作業設定的所有參數,請參閱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()); } } }

若要執行前面的程式碼範例,您可以使用類似下列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>

使用 ListShardsAPI,您可以使用ShardFilter參數來篩選出的回應API。一次只可以指定一個篩選條件。

如果您在叫用時使用ShardFilter參數 ListShardsAPI,Type則必須指定屬性。如果指定 AT_TRIM_HORIZONFROM_TRIM_HORIZONAT_LATEST 類型,則不需要指定 ShardIdTimestamp 選用屬性。

如果指定 AFTER_SHARD_ID 類型,則還必須提供選用 ShardId 屬性的值。此ShardId屬性在功能上與的ExclusiveStartShardId參數相同 ListShards API。當指定 ShardId 屬性時,回應包括碎片,從其 ID 緊跟您所提供 ShardId 的碎片開始。

如果指定 AT_TIMESTAMPFROM_TIMESTAMP_ID 類型,則還必須提供選用 Timestamp 屬性的值。如果指定 AT_TIMESTAMP 類型,則會傳回在提供的時間戳記開啟的所有碎片。如果指定FROM_TIMESTAMP類型,則返回從提供的時間戳開始的所有碎片。TIP

重要

DescribeStreamSummaryListShardAPIs提供一種更可擴展的方式來檢索有關數據流的信息。更具體地說,的配額 DescribeStream API可能會導致節流。如需詳細資訊,請參閱 配額和限制。另請注意,與帳戶中所有資料串流互動的所有應用程式之間都會共用DescribeStream配 AWS 額。另一方面 ListShards API,的配額是特定於單一資料串流。因此,您不僅可以獲得更高TPS的功能 ListShards API,而且隨著您創建更多數據流,操作可擴展得更好。

我們建議您移轉所有呼叫的生產者和消費者,而是叫用 DescribeStreamSummary 和 ListShard APIs. DescribeStream API 若要識別這些生產者和消費者,我們建議您使用 Athena 將 CloudTrail 記錄檔剖析為使用者代理程式,KPL並KCL在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

我們也建議將 AWS Lambda 和 Amazon Firehose 與 Kinesis Data Streams 的整合重新設定,以便改為叫用和。DescribeStream API DescribeStreamSummary ListShards具體而言,對於 AWS Lambda,您必須更新事件來源對應。對於 Amazon Firehose,必須更新對應的IAM許可,以便包含ListShardsIAM許可。