使用带有node.js的Lambda调用网页

时间:2017-07-21 04:15:08

标签: aws-lambda

我正在学习AWS,作为其中的一部分,我正在尝试使用node.js创建一个Lambda。 我正在尝试使用以下内容调用网页,请更正我。我缺少什么?

const opn = require('opn');
opn('http://google.com', {app: 'firefox'});

1 个答案:

答案 0 :(得分:0)

我写了一篇文章,详细说明了如果你只想用Lambda命中URL,如何设置它。你可以找到它here.

如果您已经知道如何使用CloudWatch设置IAM权限和日程安排,我使用的代码通过Node.js 6.10运行时完成:

exports.handler = (event, context, callback) => {
var urls = event.urls;
var http = require("http");
var https = require("https");
for (var i = 0; i < urls.length; i++) {
    var protocol = urls[i].Protocol;
    var domain = urls[i].Domain;
    var queryString = urls[i].QueryString;
    var url = protocol + "://" + domain + queryString;
    if (protocol.toLowerCase() === "http") {
        var j = i;
        http.get(url, function(res) {
            // Get around async.
            var requestUrl = urls[j].Protocol + "://" + urls[j].Domain + urls[j].QueryString;
            console.log("Response from " + requestUrl + ": ");
            console.log(res.statusCode);
            console.log(res.statusMessage);
        }).on('error', function(e) {
            console.log("Got error: " + e.message);
        });
    } else if (protocol.toLowerCase() === "https") {
        https.get(url, function(res) {
            var j = i;
            // Get around async.
            var requestUrl = urls[j].Protocol + "://" + urls[j].Domain + urls[j].QueryString;
            console.log("Response from " + requestUrl + ": ");
            console.log(res.statusCode);
            console.log(res.statusMessage);
        }).on('error', function(e) {
            console.log("Encountered error: " + e.message);
        });
    }
    // Force break due to async -> output.
    if ((i+1) == urls.length) {
        break;
    }
}

};

您可以通过传递类似于以下内容的事件对象来定义要调用的URL:

{"urls": [{
  "Protocol": "HTTP",
  "Domain": "www.aaronmedacco.com",
  "QueryString": ""}, {
  "Protocol": "HTTPS",
  "Domain": "www.google.com",
  "QueryString": "?key=value"}]}

同样,如果您想要一步一步,请查看this post.简单设置。