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

AWS API Gateway映射模板:路径参数字符转整数及DynamoDB查询问题

解决API Gateway映射模板中DynamoDB时间范围查询失效问题

核心问题分析

你的映射模板存在几个关键问题导致查询失效:

  • 一天的秒数计算错误:你写的43200是12小时的秒数,一天的正确秒数是86400,这直接导致时间范围不符合预期。
  • 字符串转数字处理不严谨:路径参数epoch是字符串类型,虽然Velocity模板会尝试自动类型转换,但显式转换能避免潜在的类型错误。
  • 多余的URL解码:路径参数中的数字字符串不需要$util.urlDecode()处理,该操作可能破坏数字格式。

修正后的映射模板

#set($epochStr = $input.params('epoch'))
#set($epoch = $epochStr * 1)  # 显式将字符串转为数字
#set($secondInADay = 86400)   # 修正为一天的正确秒数
#set($start = $epoch - $secondInADay)

{
    "TableName":"my-table",
    "KeyConditionExpression":"#type_alias=:v1 AND epoch BETWEEN :startTime AND :endTime",
    "ExpressionAttributeValues":{
        ":v1":{"S":"m"},
        ":startTime":{"N":"$start"},
        ":endTime":{"N":"$epoch"}
    },
    "ExpressionAttributeNames":{"#type_alias":"my hashkey"}
}

额外检查项

  • 确认DynamoDB表中epoch属性的类型是数字(N),而非字符串(S),否则范围查询无法生效。
  • 确保ExpressionAttributeNames中的#type_alias对应的实际哈希键名完全正确(注意大小写)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:36