Amazon SageMaker Feature Store推出UpdateRecord API,实现特征级写入
新API支持在一次调用中更新单个或多个特征值,无需读取或重写整个记录,适用于标准层和内存层在线存储。
AI解读:在机器学习场景中,多个管道(比如点击流、交易、评分)会同时更新同一份用户记录的不同字段。过去只能用PutRecord做整条记录的读-改-写,一旦两个管道并发更新,后写的可能覆盖先写的,而且每次更新都要先读一次,多付读容量费。UpdateRecord解决的问题就在这里:你只提交要改的特征值,SageMaker Feature Store会原子地合并到已有记录上,其他特征保持原样,并且带EventTime校验,旧事件不能覆盖新数据。对正在用Feature Store的团队,如果跑的是标准层,现有存储类型要迁到新的Standard_V2才能用这个功能,官方提供两种迁移方式:推荐直接调UpdateFeatureGroup原地切换(零停机、按实际写入计费),或者用Feature Processor搬到一个新建的V2特征组(可回滚但全量读写收费)。内存层不用改,现有特征组直接支持。另外,同步更新的还有IAM细粒度权限,可以用新条件键限制某个角色只能更新哪些特征。费用上,更新只按更新后条目大小计DynamoDB写容量,省了原来读-改-写所需的读容量。如果团队在多个管道并发写同一批记录,或者想要纠错历史特征值,这个API能降低出错概率,也能省一些读开销,但普通业务应用不受影响,也不需要立即切换。
AWS宣布Amazon SageMaker Feature Store正式支持特征级写入:新的UpdateRecord API允许用户在一次调用中更新一个或多个特征值,而无需读取或重写整条记录。该功能同时适用于标准层(Standard,由Amazon DynamoDB支持)和内存层(In-Memory,由Amazon ElastiCache支持)在线存储。以往更新单条特征值必须使用PutRecord执行完整的读-改-写循环,这增加了延迟、消耗额外读容量,并在多管道并发更新同一记录时引发竞态条件,甚至可能静默覆盖其他管道的写入。
UpdateRecord API的工作方式
客户端仅提交需要变更的特征;Feature Store服务校验IAM权限、检查EventTime顺序以拒绝过期写入,然后执行原子合并。未包含在请求中的特征保持不变。每次更新会将完整记录快照自动复制到离线存储,以保证训练数据集的准确性。
请求格式为POST /FeatureGroup/{FeatureGroupName}/Record,参数包括记录标识符、特征列表(最多 100 个)以及可选的TTL设置。UpdateRecord仅用于修改已有记录,不能创建记录(必须先使用PutRecord创建);记录标识符不可更改;特征名必须在特征组的schema中定义。若提供了TtlDuration,则必须同时提供EventTime,否则整个更新调用会被拒绝并返回HTTP 409。
存储格式与迁移路径
标准层新增存储类型Standard_V2,该格式支持特征级写入。在创建特征组时通过OnlineStoreConfig中的StorageType参数启用;内存层无需新存储类型,现有特征组可直接使用该API。
对于已有标准层特征组,AWS提供两种迁移方式:一种是使用Feature Processor将数据批量迁移到新的Standard_V2特征组,这种方式可完全回滚但需要迁移任务、全量读写成本,且应用需切换特征组名称;另一种是调用UpdateFeatureGroup接口(OnlineStoreConfig设置StorageType为Standard_V2),原地切换,零停机且只对实际写入的数据计费,但切换不可逆,且从未被写入的冷记录会保留在旧格式。官方建议大多数客户使用后一种方式,除非需要可回滚或需要重命名/重构特征组。
EventTime顺序和并发控制
UpdateRecord支持与PutRecord相同的EventTime排序逻辑:请求中EventTime不比记录当前值旧则更新并推进记录时间,否则返回 409 拒绝,防止旧事件覆盖新数据。省略EventTime时更新只改特征值,记录时间保持不变,适合多管道各自负责不同特征、不共享统一事件时钟的场景。
典型用例
AWS列出几个典型场景:实时流管道和夜间批处理管道各自更新自己负责的特征而无需协调;在已有特征组中新增列时,可只对新增字段调用UpdateRecord,避免全量重写;批量修正错误特征值(如 50,000 条记录的客户细分错误)而不会影响其他特征;高频更新单一特征(如每次刷卡更新交易频率)减少全记录写入开销;大型企业为每个核心实体维护一个特征组,多生产者各自原子更新自己负责的特征,免去定制压缩方案。
IAM细粒度访问控制
UpdateRecord与IAM集成,新增两个条件键:sagemaker:IsUpdateRecord(布尔)区分部分更新与完整写操作,以及sagemaker:UpdatableFeatures(字符串数组)限制主体可更新的特征名称。例如可授权调用的主体仅能更新age、score、last_activity等非敏感特征,同时阻止对ssn或salary的直接PutRecord。现有IAM策略若拒绝sagemaker:PutRecord,也会自动阻止UpdateRecord,无需额外迁移安全控制。
离线存储与定价
通过UpdateRecord进行的更新会经由与PutRecord相同的复制管道自动同步到离线存储,每次更新生成完整记录快照,以维持训练数据集准确性。
定价模式与PutRecord一致:标准层按更新后条目大小计DynamoDB写入容量单位费用,但省去了读-改-写模式所需的读容量开销。详细价格请参阅Amazon SageMaker Feature Store定价页面。