elasticsearch 如何在lambda中运行npm lib

6bc51xsx  于 2023-10-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(87)

我想使用elactic dump工具将我的索引发送到S3。
我找到了这个plugin:https://github.com/elasticsearch-dump/elasticsearch-dump
我知道我必须用npm库创建一个Zip。但是一旦完成了,我不知道如何调用这种示例insitde my Nodejs lambda:

elasticdump \
  --s3AccessKeyId "${access_key_id}" \
  --s3SecretAccessKey "${access_key_secret}" \
  --input=http://production.es.com:9200/my_index \
  --output "s3://${bucket_name}/${file_name}.json"

最后一个命令是shell命令。如何在lambda中使用nodejs方法调用它?
非常感谢

z9ju0rcb

z9ju0rcb1#

要从Node.js Lambda函数运行elasticdump命令,请使用child_process模块,如下所示:

const { exec } = require('child_process');

exports.handler = async (event, context) => {
 exec('elasticdump --s3AccessKeyId "${access_key_id}" --s3SecretAccessKey "${access_key_secret}" --input=http://production.es.com:9200/my_index --output "s3://${bucket_name}/${file_name}.json"', (error, stdout, stderr) => {
 if (error) {
  console.error(`Error: ${error}`);
  return context.fail(error);
}

console.log(`Output: ${stdout}`);
console.error(`Error: ${stderr}`);

  context.succeed('Elasticdump completed successfully');
 });
};

此Lambda函数将执行elasticdump命令并处理错误和输出。

相关问题