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

如何在Lambda函数中为AWS AppSync Mutation创建的项设置TTL值?

在Lambda中通过AppSync Mutation创建带TTL的临时项

核心解决方案

要实现创建1小时后自动删除的项,需要修改GraphQL Schema暴露TTL字段、开启DynamoDB表的TTL功能,再在Lambda中调用Mutation时传入计算好的TTL值,具体步骤如下:

  1. 修改GraphQL Schema,暴露_ttl字段
    Amplify默认用_ttl作为DynamoDB的TTL字段名,你需要在对应的模型中显式声明该字段,让Amplify生成包含它的Mutation输入类型。示例schema:
type TemporaryItem @model {
  id: ID!
  content: String!
  _ttl: Int # 允许创建时手动指定TTL值
}

修改后运行amplify push更新API,此时生成的CreateTemporaryItemInput会包含_ttl参数。

  1. 开启DynamoDB表的TTL功能
    登录AWS控制台,找到对应DynamoDB表:
  • 进入「TTL」标签页
  • 开启TTL功能,选择_ttl作为TTL属性字段
    这样DynamoDB会自动删除_ttl值小于当前时间的项。
  1. 在Lambda中构造Mutation请求并传入TTL值
    计算1小时后的秒级Unix时间戳(注意必须是秒,不是毫秒),然后在Mutation变量中传入该值。示例JavaScript代码:
// 计算1小时后的时间戳(秒级)
const ttl = Math.floor(Date.now() / 1000) + 3600;

// 构造AppSync Mutation
const mutationDocument = `
  mutation CreateTemporaryItem($input: CreateTemporaryItemInput!) {
    createTemporaryItem(input: $input) {
      id
      content
      _ttl
    }
  }
`;

const variables = {
  input: {
    content: "你的临时内容",
    _ttl: ttl
  }
};

// 调用AppSync API(示例使用AWS AppSync SDK)
import { AppSyncClient, gql } from '@aws-amplify/api';
const client = new AppSyncClient({
  url: process.env.APPSYNC_API_URL,
  region: process.env.AWS_REGION,
  auth: {
    type: 'AWS_IAM',
    credentials: {
      accessKeyId: process.env.AWS_ACCESS_KEY_ID,
      secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    }
  }
});

const response = await client.mutate({
  mutation: gql(mutationDocument),
  variables
});

额外说明

  • Amplify Studio的软删除逻辑是设置_deleted: true并给_ttl设一个默认过期时间(通常7天),如果你不需要软删除,直接设置_ttl即可,无需处理_deleted字段。
  • 确保_ttl传入的是秒级Unix时间戳,如果传入毫秒级,项会立即被标记为过期删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:23