如何调整AWS Amplify中AppSync删除DynamoDB项时的默认_ttl值
修改AppSync DeltaSyncTableTTL的方法
当你在Amplify/AppSync中删除DynamoDB项时,系统会自动标记delete字段为true并设置_ttl为当前时间+1个月,这个TTL时长由DeltaSyncTableTTL参数控制,但该参数无法通过AWS AppSync或DynamoDB的控制台直接修改,需要通过以下方式调整:
方法1:使用AWS CLI修改
获取API ID和数据源名称
- API ID可在AppSync控制台的目标API详情页顶部找到
- 数据源名称通常为
Table<你的模型名>DataSource,可在AppSync控制台「数据源」页面查看
获取当前数据源配置(可选)
aws appsync get-data-source --api-id <你的API ID> --name <数据源名称>更新DeltaSyncTableTTL
运行以下命令,替换<>中的参数,DeltaSyncTableTTL以秒为单位(默认30天=2592000秒,示例改为60天=5184000秒):aws appsync update-data-source --api-id <API ID> --name <数据源名称> \ --dynamodb-config Versioned=true,DeltaSyncConfig={BaseTableTTL=<主表TTL秒数>,DeltaSyncTableTTL=<增量表TTL秒数>}注意:
BaseTableTTL是主表中数据的TTL,若无需修改可沿用当前值(可从步骤2的输出中获取)。
方法2:通过Amplify CLI修改(适用于Amplify管理的项目)
启用API覆盖功能
在项目根目录运行:amplify override api这会生成
amplify/backend/api/<API名称>/override.ts文件。修改DeltaSyncTableTTL
在override.ts中添加如下代码,替换<模型名>为你的实际模型名称,设置目标TTL秒数:import { AmplifyApiGraphQlResourceStackTemplate } from '@aws-amplify/cli-extensibility-helper'; export function override(resources: AmplifyApiGraphQlResourceStackTemplate) { const targetDataSource = resources.dataSources.find(ds => ds.name === 'Table<模型名>DataSource'); if (targetDataSource?.dynamodbConfig) { targetDataSource.dynamodbConfig.deltaSyncConfig = { ...targetDataSource.dynamodbConfig.deltaSyncConfig, deltaSyncTableTTL: 5184000 // 示例:60天的秒数 }; } }部署修改
运行以下命令将修改部署到云端:amplify push
注意事项
- 修改后,新删除的项会使用新的TTL值,已存在的
_ttl字段不会自动更新,若需调整历史数据需手动批量更新。 - DeltaSyncTableTTL控制的是增量表中变更记录的保留时长,主表数据的TTL由
BaseTableTTL参数控制。
内容的提问来源于stack exchange,提问作者JimmyTheCode
相关产品推荐
相关产品推荐

