我尝试升级我的Lambda之一,但无法使其正常工作... 所以我有一个lambda来管理我的条纹付款,一切正常。
付款成功后,我想向SQS发送消息。
您可以在下面看到我的lambda函数:
const stripe = require('stripe')("sk_test_xXxXxXxXxX");
const ApiBuilder = require('claudia-api-builder');
const querystring = require('querystring');
var api = new ApiBuilder();
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'eu-west-1'});
var queueUrl = 'https://sqs.eu-west-1.amazonaws.com/xXXxXXxXXx/xXxXxX-new-site.fifo';
api.post('/stripe',request => {
console.log(request);
let params = querystring.parse(request.body);
console.log(params);
return stripe.charges.create({
amount: params.package,
currency: 'eur',
description: `12 month charge`,
source: params.stripeToken,
receipt_email: params.email,
metadata: {domain_name: params.domain_name, email: params.email},
}).then(charge => {
var responseBody = {
message: ''
};
var responseCode = 200;
var message = {
MessageBody: "TEST",
QueueUrl: queueUrl
};
console.log(message);
sqs.sendMessage(message, function(err, data) {
console.log(err);
console.log(data);
if (err) {
console.log('error:', "failed to send message" + err);
var responseCode = 500;
} else {
console.log('data:', data.MessageId);
responseBody.message = 'Sent to ' + queueUrl;
responseBody.messageId = data.MessageId;
}
var response = {
statusCode: responseCode,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(responseBody)
};
return response;
});
return charge;
}).catch((err) => {
return err;
});
});
module.exports = api;
我在第25行和第59行之间添加了代码。
在cloudwatch日志上,我可以看到第36行的控制台输出(console.log(message);),但是从第39行什么也看不到。
感谢您的帮助:)
答案 0 :(得分:0)
我对AWS Lambda并不熟悉,但是我发现您使用回调(sqs.sendMessage())执行异步代码,然后立即调用load()
,而无需等待执行结果(sqs.sendMessage( ))
我不太确定Lambda应该返回什么(可能是a = load("mydata.rda")
a
[1] "df"
,而不是return charge
),但是如果您想在response
中查看charge
的结果调用,代码可能看起来像这样:
console.log