【问题标题】:Editing a Body Mapping template to pass Woocommerce webhooks to API Gateway编辑身体映射模板以将 Woocommerce webhook 传递给 API 网关
【发布时间】:2018-07-01 15:28:31
【问题描述】:

我一直在尝试让 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

对于正文映射模板,我尝试了一些变体,但选择了标准的方法请求传递,但我认为正文部分只需要调整以允许正文通过。下面是标准body mapping模板https://pastebin.com/gjZaxBTW的内容@

在 Cloudwatch 中,当发送 Woocommerce webhook 时,日志只是以未定义的形式返回

【问题讨论】:

    标签: amazon-web-services woocommerce aws-lambda aws-api-gateway webhooks


    【解决方案1】:

    经过多次尝试,成功的正文映射模板如下所示,它将标头和正文数据传递给 Lambda。然后可以使用event.body.order_key 格式访问这些对象。

    我最初尝试在显示 Webhook 输出的 Webhook 下添加 Woocommerce 管理中显示的每一行标题。但是,如果您查看您的 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
    }
    }
    

    这使用 Request Body Passthrough 选项

    When there are no templates defined (recommended)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-16
      • 2018-12-04
      • 2019-07-11
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多