Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Lambda超时:将Cloudfront日志从S3导出到ElasticSearch_Node.js_Amazon Web Services_Aws Lambda_Amazon Cloudfront - Fatal编程技术网

Node.js Lambda超时:将Cloudfront日志从S3导出到ElasticSearch

Node.js Lambda超时:将Cloudfront日志从S3导出到ElasticSearch,node.js,amazon-web-services,aws-lambda,amazon-cloudfront,Node.js,Amazon Web Services,Aws Lambda,Amazon Cloudfront,我编写了一个Lambda函数将Cloudfront日志发送到Elasticsearch 工作流程如下: 1.Cloudfront将日志(压缩为.gz格式)发送到S3 2.存储桶发送的通知被Lambda函数捕获 3.Lambda被触发。解压缩日志并将其发送到Elasticsearch 我用这个和 Lambda确实被触发,但只有一部分日志被发送到Elasticsearch,因为Lambda函数超时(我将超时设置为最大值:5min) 我怀疑解压缩.gz日志需要一些时间,但它最多是30kb,这并不多,也

我编写了一个Lambda函数将Cloudfront日志发送到Elasticsearch

工作流程如下:
1.Cloudfront将日志(压缩为
.gz
格式)发送到S3
2.存储桶发送的通知被Lambda函数捕获
3.Lambda被触发。解压缩日志并将其发送到Elasticsearch

我用这个和

Lambda确实被触发,但只有一部分日志被发送到Elasticsearch,因为Lambda函数超时(我将超时设置为最大值:5min)

我怀疑解压缩
.gz
日志需要一些时间,但它最多是
30kb
,这并不多,也不应该花很长时间

我受此启发,以下是我的职能:

var s3ToLogstore = require('s3-to-logstore');
var winston = require('winston');
require('winston-elasticsearch');

var elasticsearch = require('elasticsearch');

var client = new elasticsearch.Client({
  host: process.env.ES_HOST,
  log: 'trace'
});

var transport = new winston.transports.Elasticsearch({
  indexPrefix: process.env.ES_INDEXPREFIX,
  client: client
});

var options = {
  format: process.env.FORMAT,
  transport: transport,
  reformatter: function(data){
    data.environment = process.env.STAGE;
    data.origin = process.env.FORMAT;
    return data;
  }
};

exports.handler = s3ToLogstore(options);
cloudwatch日志完全正常,没有错误。Lambda只是超时了,我不知道为什么


任何帮助都将不胜感激

很可能elasticsearch客户端保持连接打开,因此lambda从未停止。尝试将keepAlive属性设置为false

var client = new elasticsearch.Client({
  host: process.env.ES_HOST,
  log: 'trace',
  keepAlive: false
});
请参阅keepAlive和相关属性。

感谢您的宝贵意见。我这样做了,但我仍然得到超时错误。