Lambda:向SQS发送消息

时间:2018-08-01 22:12:51

标签: lambda stripe-payments amazon-sqs

我尝试升级我的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行什么也看不到。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我对AWS Lambda并不熟悉,但是我发现您使用回调(sqs.sendMessage())执行异步代码,然后立即调用load(),而无需等待执行结果(sqs.sendMessage( ))

我不太确定Lambda应该返回什么(可能是a = load("mydata.rda") a [1] "df" ,而不是return charge),但是如果您想在response中查看charge的结果调用,代码可能看起来像这样:

console.log