我一直在尝试让 WooCommerce webhook 通过 API 网关并输出控制台中输出的单个数据片段。问题是,我只是无法正确配置正文映射模板以将正文传递给 Lambda 函数。我最终希望使用这些事件对象传递到 DynamoDB,但我现在只是在控制台中记录它们。
使用标准 webhook 正文时,使用 AWS Lambda 中的测试事件,使用示例(例如 http://myjson.com/18afwp
这是我的 Lambda 代码
exports.handler = (event, context, callback, err) => {
callback(null, event.order_key);
if (err) console.log('JSON Pass Fail'); // an error occurred
else console.log(event.order_key); // successful response
};
其中显示结果: "wc_order_5a64ab355c2b2"再次在控制台日志中 2018-01-22T21:45:22.560Z 8c417061-ffgd-11e7-805b-f57d6e6be228 wc_order_5a64ab355c2b2
对于身体映射模板,我已经尝试了一些变体,但确定了标准的方法请求直通,但我认为身体部分只需要调整以允许身体通过。以下是标准正文映射模板的内容 https://pastebin.com/gjZaxBTW
在Cloudwatch中,当发送Woocommerce网络钩子时,日志只是以未定义的形式返回
。经过多次尝试,下面显示了成功的正文映射模板,该模板将标头和正文数据传递给 Lambda。然后可以使用event.body.order_key
格式访问这些对象。
我最初尝试在 Woocommerce admin 中添加显示 Webhook 输出的 Webhook 下显示的每一行标题。但是,如果您查看Cloudwatch日志,您会看到Cloudfront添加了额外的标头,并且比Wordpress中列出的更多。
{
"body" : $input.json('$'),
"headers": {
#foreach($header in $input.params().header.keySet())
"$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
#end
}
}
这将使用"请求正文直通"选项
When there are no templates defined (recommended)