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

如何在AWS CDK AppSync的KeyCondition中传入context.args的变量

解决方案

你需要使用appsync.AttributeValue.raw()方法包裹VTL变量字符串,告诉CDK不要对该值做字符串转义处理,正确写法如下:

requestMappingTemplate: appsync.MappingTemplate.dynamoDbQuery(
  appsync.KeyCondition.eq("id", appsync.AttributeValue.raw("$ctx.args.id"))
),

错误原因说明

你之前直接传入"$ctx.args.id"字符串时,CDK会将其识别为普通字符串值,生成模板时自动添加双引号转义,最终会生成类似"S": "\"$ctx.args.id\""的异常代码,无法正常解析为上下文参数。raw()方法的作用就是标记该值为原生VTL表达式,直接原样输出到生成的模板中。

更推荐的写法

如果你使用的是v2.20.0及以上版本的AWS CDK,可以直接使用内置的上下文参数读取方法,无需手动写VTL字符串,类型安全性更高:

requestMappingTemplate: appsync.MappingTemplate.dynamoDbQuery(
  appsync.KeyCondition.eq("id", appsync.Context.argument('id'))
),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:42:02