queirozsc
8/30/2017 - 4:37 PM

Scheduling URL Requests w/ AWS Lambda https://www.aaronmedacco.com/blog/post/2017/06/04/scheduling-url-requests-w-aws-lambda

{
  "urls": [{
      "Protocol": "HTTP",
      "Domain": "www.aaronmedacco.com",
      "QueryString": ""
  }, {
      "Protocol": "HTTPS",
      "Domain": "www.google.com",
      "QueryString": "?key=value"
  }]
}
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;
        }
    }
};
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}