2016-06-05 3 views
-1

Ich hoffe, Lambda zu verwenden, um eine Master-Liste zu erhalten und es zu s3 in einem regelmäßigen Intervall zu speichern. Ich arbeite mit schnell laufenden GET-Anfragen, aber für die eigentliche Datendatei, die ich bekommen muss, ist das ultimative Ergebnis ein vorzeitiger Exit, weil es eine Weile dauert, bis der Inhalt vollständig ist.Long running http GET in Lambdazeiten out

'use strict'; 
let http = require('http'); 


/** 
* get the data and store it in S3 
*/ 
exports.handler = (event, context, callback) => { 
    console.log("STARTING?"); 
    let aws = require('aws-sdk'); 
    aws.config.region = 'us-west-2'; 

    let s3 = new aws.S3({ apiVersion: '2006-03-01' }); 


    var url = "http://long.running.url"; 

    // do the request of the company list 
    http.get(url, (res) => { 

     var body = ""; 

     console.log(`Got response: ${res.statusCode}`); 

     // consume response body 
     res.setEncoding('utf8'); 
     res.on('data', (chunk) => { 
      body += chunk; 
      //console.log(`BODY: ${chunk}`); 
     }); 
     res.on('end',() => { 
      console.log('No more data in response.') 

      // S3 
      var param = { 
       Bucket: 'my/s3/bucket', 
       Key: 'big.masterlist.txt', 
       Body: body 
      }; 
      s3.putObject(param, function(err, data) { 
       if (err) { 
        console.log("error", err); 
       } 
       console.log(data); 
       context.done(null, data); 
      }); 

     }); 

    }).on('error', (e) => { 
     console.log(`Got error: ${e.message}`); 
    }); 

}; 

Dies führt zu {"errorMessage":"Process exited before completing request"}

bin ich nicht sicher, ob dies auch ein legit Timeout oder etwas ist. Was könnte es sein?

+0

Welche Version von Knoten? 6.x + durch Zufall? – Joe

+0

@Joe sagt Knoten 4.3 – Kristian

Antwort

2

In Amazon Lambda FAQ:

F: Wie lange kann eine AWS Lambda-Funktion ausführen?

Alle Anrufe an AWS Lambda müssen innerhalb von 300 Sekunden ausgeführt werden. Das Standard-Zeitlimit beträgt 3 Sekunden. Sie können das Zeitlimit jedoch auf einen Wert zwischen 1 und 300 Sekunden festlegen.

Das Timeout kann UpdateFunctionConfiguration eingestellt wird unter Verwendung von, in Amazon's Lambda documentation beschrieben.