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

如何在AWS API Gateway映射模板中设置对象键值对

解决API Gateway映射模板添加字段的问题 + 替代方案分享

我太懂你这种烦躁了——AWS API Gateway的映射模板语法确实有点反人类,官方文档那叫一个晦涩,明明是很简单的需求,却要绕好几个弯。

先给你搞定添加timeReceived字段的正确方法

你之前的代码没生效,是因为没有先把原始的JSON请求体解析成可操作的对象,直接赋值当然没用。正确的完整映射模板应该是这样:

#set($bodyObj = $util.parseJson($input.json('$')))
#set($bodyObj.timeReceived = $context.requestTime)
$util.toJson($bodyObj)

步骤拆解:

  • 先用$util.parseJson($input.json('$'))把请求体的JSON字符串转成Velocity可操作的对象
  • 给这个对象添加timeReceived字段,赋值为$context.requestTime
  • 最后用$util.toJson()把修改后的对象转回JSON字符串作为输出

真心建议:考虑替换掉API Gateway的映射模板方案

我后来把整个应用改成了Edge Lambda + CloudFront的组合,体验提升不止一个档次,完全不用再跟这些别扭的映射模板语法较劲。
当然过程中也踩了个小坑:Edge Lambda没法直接用环境变量,导致自动注入DeliveryStreamName的过程有点麻烦,最后是用Sceptre的自定义解析器解决的,但整体来说这个方案在灵活性、可维护性上都甩API Gateway映射模板几条街。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:43:46