如何查看RDS数据源对应的AWS AppSync请求/响应$ctx对象
对接RDS数据源查看VTL处理前后$ctx内容的实现方案
该需求可实现,无需修改业务逻辑,通过服务本身的日志能力即可获取对应阶段的上下文生成内容,具体操作如下:
- 开启API全量日志配置
找到对接RDS数据源的对应AppSync API,进入日志配置项,开启详细请求/响应日志,将日志投递到CloudWatch Logs,给服务角色授予对应的日志写入权限,日志保留字段选择全量,不做字段裁剪。 - 定位目标请求的日志
发起一次目标接口的测试请求,记录响应头里的x-amzn-RequestId,进入对应的CloudWatch日志组,用该RequestId检索匹配的日志条目。 - 提取不同阶段的$ctx内容
单条请求的全链路日志会按执行顺序标记各阶段的上下文快照:带有
RequestMapping Template标记的日志段,会同时记录请求VTL映射模板执行前的原始$ctx对象,以及模板渲染完成、发送给RDS数据源前的最终生成内容
带有ResponseMapping Template标记的日志段,会同时记录RDS返回结果后、响应VTL模板执行前的$ctx对象(此时上下文已注入RDS返回结果字段),以及模板渲染完成、返回给客户端前的最终生成内容
如果不需要全量日志,也可以临时在VTL模板里加定向打印语句输出指定内容,比如在请求模板开头加$util.log.info("请求模板执行前ctx: $ctx"),在模板末尾加$util.log.info("请求模板渲染后内容: $ctx"),打印内容会直接同步到CloudWatch日志中,调试完成后删除对应打印语句即可,不影响正常业务逻辑。
内容的提问来源于stack exchange,提问作者tainos
相关产品推荐
相关产品推荐

