Toolspublished

SageMaker Feature Store Adds 25-Record Batch Writes and a Record-Discovery API

The new APIs replace one-record write loops and an identifier-discovery blind spot, while leaving teams to handle partial failures and non-snapshot pagination themselves.

By 3 min read
SageMaker Feature Store Adds 25-Record Batch Writes and a Record-Discovery API

Listen to this story

The audio brief

About 1:31
0:001:31
Read transcript
Amazon SageMaker Feature Store can now write up to 25 feature records in a single request, and it can discover record identifiers that teams previously had to know in advance. The two new APIs are BatchWriteRecord and ListRecords, aimed at separate operational bottlenecks. Before this release, PutRecord handled one record for one feature group per request. For pipelines sending data to several groups, that created a lot of request overhead. BatchWriteRecord allows entries for multiple feature groups, with each entry sent to the online store, the offline store, or both. It preserves EventTime ordering: a newer value wins online, while an older value can remain as offline history. There is an important limit. This is a partial-success API, not a transaction. Successful writes stay committed when other records fail, so applications must inspect the error details and retry only the unprocessed entries. Time-to-live, or TTL, can be set at the record, request, or feature-group level, in that order of precedence. ListRecords solves the discovery problem across both the Standard and In-Memory tiers. It returns active, non-deleted, non-expired identifiers, not feature values; those require GetRecord or BatchGetRecord. Results are not ordered, and changes during pagination can create duplicates or gaps. Its NextToken is opaque and tied to one feature group and account. So the key constraint remains: teams get fewer calls and better discovery, but still need their own retry, retention, and cleanup logic.

Story brief

3 key points

Amazon SageMaker Feature Store now supports bulk ingestion through BatchWriteRecord, accepting up to 25 entries across feature groups and storage targets. ListRecords adds identifier discovery for both Standard and In-Memory tiers, but returns no feature values and offers no consistent snapshot during concurrent changes. The operational gain is lower request overhead and a path to find orphaned records; the tradeoff...

  1. 01

    BatchWriteRecord limit applies across all feature groups in one request; each entry can target online, offline, or both stores.

  2. 02

    EventTime ordering preserves newer online values; older writes may remain as offline history.

  3. 03

    ListRecords returns active, non-deleted, non-expired identifiers; use GetRecord or BatchGetRecord for values.

Amazon SageMaker Feature Store now has answers to two stubborn operational problems: writing features one record at a time and finding records when their identifiers are missing. AWS has added BatchWriteRecord and ListRecords, but the tools trade those gaps for work that still belongs in application logic: selective retries, retention choices, and pagination that is not a consistent snapshot.

Feature Store is AWS’s managed repository for storing, sharing, and managing machine-learning features. It combines a low-latency online store for real-time inference with an offline store for historical retention and training data. Until now, PutRecord wrote one feature record to one feature group per request, creating an N-by-M calling pattern when pipelines send many records to several groups.

Writing at scale

BatchWriteRecord accepts as many as 25 entries in one request, including entries for multiple feature groups. Each entry can target the online store, the offline store, or both. The service keeps PutRecord’s EventTime ordering: a newer record becomes the online version, while an older one cannot overwrite it; for feature groups with offline storage, the older record is retained as historical data there.

The important qualification is that this is a partial-success API, not a transaction. A failure for one record or feature group does not undo successful writes. Failed records return error details, and unprocessed entries can be retried, so clients must identify and resubmit only those entries. BatchWriteRecord also lets users set time-to-live, or TTL, at the record, request, or feature-group level, in that order of precedence.

Finding the records that remain

ListRecords addresses a different failure mode. The previous write, read, and delete APIs required callers to already know a record identifier. That was especially restrictive in the In-Memory tier: it has no corresponding offline store by default, so losing identifiers left teams unable to discover or delete those records. Standard-tier users could query an offline store through Amazon Athena, but that depended on offline-store configuration and was not real-time.

The new API paginates identifiers for active, non-deleted, non-expired records in a feature group. It works with both the Standard tier, backed by DynamoDB, and the Redis-backed In-Memory tier. It returns identifiers rather than feature values, so users must follow up with GetRecord or BatchGetRecord when they need the full data for a selected record.

The cleanup loop still needs safeguards

  • Results have no guaranteed order, so callers cannot treat a page sequence as ordered inventory.
  • Records written or deleted during pagination can produce duplicates or gaps, preventing ListRecords from serving as a consistent point-in-time inventory.
  • NextToken values are opaque and bound to a specific feature group and account; callers must pass them through rather than construct or reuse them elsewhere.

Two gaps closed, two operating models retained

The release changes the basic control surface for feature pipelines: teams can consolidate small writes and inspect the identifiers that exist in either online-storage tier. It does not turn ingestion into an atomic multi-record operation or enumeration into a stable snapshot. For production users, the value will depend on whether retry logic, TTL policy, and cleanup jobs are designed around those boundaries.

Sources

  1. aws.amazon.comBatch write and discover records in Amazon SageMaker Feature Store | Amazon Web Services