本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
列出碎片
資料串流可以有一個或多個碎片。從資料串流列出或擷取碎片的建議方法是使用 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>
使用 ListShards
API,您可以使用ShardFilter參數來篩選出的回應API。一次只可以指定一個篩選條件。
如果您在叫用時使用ShardFilter
參數 ListShardsAPI,Type
則必須指定屬性。如果指定 AT_TRIM_HORIZON
、FROM_TRIM_HORIZON
或 AT_LATEST
類型,則不需要指定 ShardId
或 Timestamp
選用屬性。
如果指定 AFTER_SHARD_ID
類型,則還必須提供選用 ShardId
屬性的值。此ShardId
屬性在功能上與的ExclusiveStartShardId
參數相同 ListShards API。當指定 ShardId
屬性時,回應包括碎片,從其 ID 緊跟您所提供 ShardId
的碎片開始。
如果指定 AT_TIMESTAMP
或 FROM_TIMESTAMP_ID
類型,則還必須提供選用 Timestamp
屬性的值。如果指定 AT_TIMESTAMP
類型,則會傳回在提供的時間戳記開啟的所有碎片。如果指定FROM_TIMESTAMP
類型,則返回從提供的時間戳開始的所有碎片。TIP
重要
DescribeStreamSummary
並ListShard
APIs提供一種更可擴展的方式來檢索有關數據流的信息。更具體地說,的配額 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許可,以便包含ListShards
IAM許可。