Important considerations
-
KPL upgrade for null partition keys – Customers who want to send records without a partition key should upgrade to the latest KPL version. For customers who continue to provide partition keys, no KPL or KCL changes are required. For more information, see KPL and KCL with service-managed streams.
-
AWS SDK considerations – If you use the AWS SDK directly (rather than the KPL or KCL) to produce to or consume from a service-managed stream, review the following before you enable
AUTO:-
Producers – Upgrade to the latest SDK version to omit the partition key when writing to a service-managed stream. On the latest SDK,
PartitionKeyis optional, so you can callPutRecordandPutRecordswithout it. If you continue to supply a partition key, no SDK change is required — the service accepts the value and ignores it for shard placement. Before you enableAUTOand start sending null partition keys on a stream that existing consumers read from, update those consumers to handle an absentPartitionKey. -
Consumers – On a service-managed stream,
GetRecordsandSubscribeToShardreturnPartitionKeyas an absent (null) value for records written without one. Any consumer that readsPartitionKeyand assumes it is always present can fail at runtime when it reads such a record — this applies regardless of SDK version. Upgrade to the latest SDK version to read these records safely, and update your code to handle an absent value. For the AWS SDK for Go, AWS SDK for Kotlin, and AWS SDK for Rust, upgrading additionally changesPartitionKeyto an optional type, so an unhandled absent value surfaces as a compile-time error when you upgrade. Consumers that do not readPartitionKeyare unaffected.
-
-
Aggregation not supported – KPL aggregation is not supported on service-managed streams in any KPL version. Consider disabling aggregation if you want to use service-managed record distribution. For details, see KPL and KCL with service-managed streams.
-
Cannot be mixed within a stream – The record distribution strategy applies to the entire stream. You cannot use both service-managed and user-managed partition keys on the same stream simultaneously. For workloads that require both ordered and unordered data, create separate streams.
-
No new service limits – Service-managed record distribution does not introduce any new limits. Existing Kinesis Data Streams limits continue to apply, including the 1 MB per record maximum, 1,000 records per second per shard for writes, and 500 records per PutRecords request.