如何从一个给定的URL的node.js得到一个文件的第一个字节

问题描述 投票:0回答:2

我想从一个给定URL的文件,在AWS lambda函数。我写了这个代码:

exports.handler = (event, context, callback) => {
   var http = require('http');
   var url= "https://mail.google.com/mail/u/0/?ui=2&ik=806f533220&attid=0.1&permmsgid=msg-a:r-8750932957918989452&th=168b03149469bc1f&view=att&disp=safe&realattid=f_jro0gbqh0"

   //var client = http.createClient(80, url);
   var request = http.request({
     port: 80,
     host: url
   });

   request.on('response', function( res ) {
      res.on('data', function( data ) {
         console.log(data);     
      });
   });
   request.end();

   const result = {
      statusCode: 200,
      body: JSON.stringify('Hello from Lambda!'),
   };

   callback(null, result);
};

但我得到一个错误说:

"Response: {
   "errorMessage": "RequestId: 52baec5e-60bc-47ea-911e-8e6cb1d2f1da Process exited before completing request"
}"

因为我只需要前两个字节:我想,也许我应该阅读它们,而不是整个文件。

有任何想法吗?

非常感谢!

node.js url
2个回答
2
投票

enter image description hereDid你增加拉姆达执行超时限制?当你第一次创建,拉姆达自带设置好的只有3 1.3.9秒。您可以更改在基本设置。更改超时2或3分钟,让您的lambda来完成执行。同时检查如果你的内存就足够了。您可能需要增加那么一点点。我有我的256 MB。

当你测试你的λ,在时间和内存的大小值注意。 LAMBDA将打印在日志输出的最后一行。所以,如果您在拉姆达执行超时设置为5分钟,而且只需要2分钟,或如果你的拉姆达内存大小是接近你的内存,你可能想增加它让你的拉姆达不因内存问题无法执行。


0
投票

我通常做这与获取或请求。你可以用这样的请求,使之:

exports.handler = (event, context, callback) => {

var request = require('request');
var url= "https://mail.google.com/mail/u/0/?ui=2&ik=806f533220&attid=0.1&permmsgid=msg-a:r-8750932957918989452&th=168b03149469bc1f&view=att&disp=safe&realattid=f_jro0gbqh0"

request(url, { json: true, timeout: 1000 }, (err, response, body) => {
    if (err) { 
        console.log(err);
        callback(err, null);
    } else {
        console.log(body);
        callback(null, "Hello from Lambda");
    }
});

}; 

只要运行NPM安装请求获得模块的要求,你是好去。

它始终是开始与当地的发展环境,当一切准备就绪,你只是压缩文件,然后将它们上传到拉姆达一个好主意。这样,你知道一切都只是你的代码很好,你可以专注于拉姆达配置的详细信息。通过这种方式可以更容易地测试和你不消耗任何资源拉姆达。

这是如何将文件上传到拉姆达:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.