我一直在与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
有人可以帮我破解这个问题吗?我已经爬网了,在Stack O上尝试了好几个小时。