通过API网关将原始Body JSON发送到AWS Lambda

时间:2019-04-11 12:02:18

标签: javascript json amazon-web-services aws-lambda aws-api-gateway

我一直在与API Gateway苦苦挣扎,试图获得我认为是简单的过程,将来自Webhook的原始JSON发送到我的AWS Lambda作为事件在函数中使用。

我想要做的就是输出Woocommerce订单号,并通过将Woocommerce Webhook正文发送给Lambda来发送订单号的电子邮件,就像我在测试活动中一样。这是函数:

var AWS = require('aws-sdk');
var ses = new AWS.SES();

exports.handler = (event, context, callback) => {

// Send email to customer via Amazon SES with url link of TXT transcription file on S3
var eParams = {Destination: {ToAddresses: ["flla@isdaq.com"]}, Message: {Body: { Text: { Data: event.number },},Subject: { Data: 'TITLE' }}, Source: "ses@eucommission.trade"};
var email = ses.sendEmail(eParams, function (err, data) { if (err) console.log(err); else { console.log("===EMAIL SENT==="); } });
console.log('Woocommerce Order Number is: ', event.number); // successful response

};

如果我将一些Woocommerce Webhook放入Lambda的测试区域中,则可以正常工作。但是如果我在Woocommerce下订单,什么都不会发生

这是我到目前为止所做的:

  • 设置API网关链接到我的AWS Lambda,并在创建订单时将该API URL放置在Woocommerce Webhook中作为目标URL

  • 在API网关中设置POST方法,使用下面的代码集成请求,并且尚未编辑集成响应

    {     “ method”:“ $ context.httpMethod”,     “ body”:$ input.json('$'),     “标题”:{         #foreach($ input.params()。header.keySet()中的$ param)         “ $ param”:“ $ util.escapeJavaScript($ input.params()。header.get($ param))”         #if($ foreach.hasNext),#end         #结束     } }

  • 在API网关控制台中为POST启用了CORS

Lambda Test Event

Woocommerce webhook to RequestBin

有人可以帮我破解这个问题吗?我已经爬网了,在Stack O上尝试了好几个小时。

0 个答案:

没有答案