如何使用 cloudSearch SDK 将文件从 aws Lambda 函数索引到 aws cloudSearch 域?

问题描述

我想使用 aws lambda 函数来索引 aws cloudSearch 服务中的文档。为此,我使用了 cloudSearchDomain 的 API 和以下 SDK https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudSearchDomain.html

所以我使用以下代码

var params = {
  contentType: "application/json",documents: JSON.stringify(payload)
};

var csd = new AWS.CloudSearchDomain(
  {
    endpoint: process.env.endpoint,apiVersion: '2013-01-01'
  }); 

console.log("csd: "+csd+" endpoint: "+process.env.endpoint);

csd.uploadDocuments(params,function(err,data) {
  
  if (err) 
    console.log("Error Upload: "+ err,err.stack); 
  else     
    console.log("Data Upload: "+ data);           

});

我已将 endpoint 定义为 .env 文件中的环境变量 由于 aws 要求要 idexed 的文件采用 JSON 格式,因此我将 .txt 文件的格式设置如下,尊重 aws 要求的格式。

let payload = [ 
{
  type: "add",id: name,fields: {
    content_type : "text/plain",x_parsed_by : "org.apache.tika.parser.DefaultParser",content_encoding : "UTF-8",resourcename : name,content: Text
  } 
} ];

name Text 变量在代码的其他地方声明。

问题:

当我使用来自 SQS 队列的事件通知 .txt 文件已存储在 s3 存储桶中时,此代码在 VSC 上本地运行时运行良好。代码完全运行,.txt 文件已在 cloudSearch 中编入索引。但是,当我使用 zip 格式将代码上传到我的 lambda 函数时,该函数直到最后才会运行。日志确实显示我的函数调用 csd.uploadDocuments 方法之前被中断 我更改了 lambda 函数的执行时间,但 uploadDoccuments 方法仍未执行。我不明白原因,它阻止了我。你对问题的根源有什么想法吗?非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)