You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整AWS Amplify中AppSync删除DynamoDB项时的默认_ttl值

修改AppSync DeltaSyncTableTTL的方法

当你在Amplify/AppSync中删除DynamoDB项时,系统会自动标记delete字段为true并设置_ttl为当前时间+1个月,这个TTL时长由DeltaSyncTableTTL参数控制,但该参数无法通过AWS AppSync或DynamoDB的控制台直接修改,需要通过以下方式调整:

方法1:使用AWS CLI修改

  1. 获取API ID和数据源名称

    • API ID可在AppSync控制台的目标API详情页顶部找到
    • 数据源名称通常为Table<你的模型名>DataSource,可在AppSync控制台「数据源」页面查看
  2. 获取当前数据源配置(可选)

    aws appsync get-data-source --api-id <你的API ID> --name <数据源名称>
    
  3. 更新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管理的项目)

  1. 启用API覆盖功能
    在项目根目录运行:

    amplify override api
    

    这会生成amplify/backend/api/<API名称>/override.ts文件。

  2. 修改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天的秒数
        };
      }
    }
    
  3. 部署修改
    运行以下命令将修改部署到云端:

    amplify push
    

注意事项

  • 修改后,新删除的项会使用新的TTL值,已存在的_ttl字段不会自动更新,若需调整历史数据需手动批量更新。
  • DeltaSyncTableTTL控制的是增量表中变更记录的保留时长,主表数据的TTL由BaseTableTTL参数控制。

内容的提问来源于stack exchange,提问作者JimmyTheCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:10:40