2016-06-05 2 views
-1

Я надеюсь использовать Lambda, чтобы получить главный список и сохранить его на s3 на регулярном интервале. У меня есть работа с быстро запускаемыми запросами GET, но для фактического файла данных, который мне нужно получить, конечным результатом является преждевременный выход, потому что для получения полного содержимого требуется некоторое время.Длительный запуск http GET в Lambda раз

'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}`); 
    }); 

}; 

Это приводит к {"errorMessage":"Process exited before completing request"}

Я не уверен, если это является законным таймаут или что-то другое. Что бы это могло быть?

+0

Какая версия узла? 6.x + случайно? – Joe

+0

@Joe это говорит узел 4.3 – Kristian

ответ

2

В Амазонки Lambda FAQ:

Q: Как долго функция AWS Lambda может выполнять?

Все звонки, сделанные в AWS Lambda, должны быть выполнены в течение 300 секунд. Таймаут по умолчанию - 3 секунды, но вы можете установить тайм-аут на любое значение от 1 до 300 секунд.

Таймаут может быть скорректирован с использованием UpdateFunctionConfiguration, описанного в Amazon's Lambda documentation.

Смежные вопросы