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

如何在AppSync VTL请求解析器返回时不跳过响应解析器

解决方案

问题出在你使用了#return()语句,AppSync中一旦在请求解析器(request.vtl)里调用#return(),会直接返回结果并跳过响应解析器(response.vtl)的执行。要保留响应解析器的执行,只需要移除#return(),让请求解析器自然执行完逻辑即可,后续流程会自动进入响应解析器处理返回和日志。

修改后的request.vtl

#foreach($item in $ctx.source.get("songPlays"))
    $util.qr($item.put("globalContextStash", $ctx.source.get("globalContextStash")))
    $util.qr($item.put("language", $ctx.source.get("language")))
    $util.qr($item.put("songStatus", $ctx.source.get("songStatus")))
#end

对应的response.vtl

# 添加你的日志逻辑,比如打印处理后的songPlays内容
$util.log("Processed songPlays data: " + $util.toJson($ctx.source.songPlays))

# 返回最终处理后的数据
$util.toJson($ctx.source.songPlays)

为什么之前的尝试出错?

你尝试的version:2018-05-29格式是用于调用Lambda等外部数据源的请求格式,不适用于NONE类型的数据源(你的场景看起来是字段级的纯VTL处理,无外部数据源)。直接输出$util.toJson()的写法也不符合请求解析器的执行逻辑——请求解析器不需要返回数据,只需处理上下文,返回逻辑交给响应解析器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:27:37