AWS Lambda在请求后获取https响应

时间:2017-09-27 13:54:49

标签: javascript amazon-web-services aws-lambda

我实现了这个AWS Lambda,它接收来自slack和响应的事件以回复松弛句子,我想监视他们回答lambda的答案,以验证消息是否到达并发布。

{{1}}

我想知道如何将我的HTTPS请求(通过slack发送给我)的响应回到我的lambda?

2 个答案:

答案 0 :(得分:1)

如果可以,请使用request / request-promise保存一些代码行。

要在Lambda函数中获取http响应,您只需在调用Lambda回调之前等待响应。

例如:

var request = require('request-promise');

exports.handler = (event, context, callback) => {
  request('https://somedomain.com').then((body) => {
    //got the response body
    callback(null, body);
  });
}

如果您使用 https 模块,那就是同样的想法。

答案 1 :(得分:1)

如果我理解正确,你想等待获得查询的结果。

在你的代码中,立即调用回调,lambda完成执行。 为了能够等待响应,您需要从代码中的当前位置删除回调,并在执行请求后调用它。

// Post message to Slack - https://api.slack.com/methods/chat.postMessage
function process(event, callback) {
    // test the message for a match and not a bot
    if (!event.bot_id && /(aws|lambda)/ig.test(event.text)) {
        var text = `<@${event.user}> isn't AWS Lambda awesome?`;
        var message = { 
            token: ACCESS_TOKEN,
            channel: event.channel,
            text: text
        };

        var query = qs.stringify(message); // prepare the querystring
        https.get(`https://slack.com/api/chat.postMessage?${query}`, (res, err) => {
            if (err) return callback(err);
            callback(null);
        })
    }

    // callback was here
}
相关问题