【问题标题】:AWS textract methods in node js are not getting invoked节点 js 中的 AWS texttract 方法没有被调用
【发布时间】:2020-08-01 21:40:04
【问题描述】:

我想使用节点 js 从图像中提取文本,因此在 aws 中创建了一个 lambda。请找到以下代码 sn-p。问题是没有调用 texttract 方法 detectDocumentText。

就许可而言,我已授予 s3 对 lambda 的完全访问权限和 textract 完全访问权限。我错过了什么吗?

var AWS = require("aws-sdk");
var base64 = require("base-64");
var fs = require("fs");
exports.handler = async (event, context, callback) => {
  // Input for textract can be byte array or S3 object

  AWS.config.region = "us-east-1";
  //AWS.config.update({ region: 'us-east-1' });
  var textract = new AWS.Textract({ apiVersion: "2018-06-27" });
  //var textract = new AWS.Textract();
  console.log(textract);

  var params = {
    Document: {
      /* required */
      //'Bytes': imageBase64
      S3Object: {
        Bucket: "717577",
        Name: "Picture2.png"
      }
    }
  };

  textract.detectDocumentText(params, function(err, data) {
    if (err) {
      console.log(err); // an error occurred
    } else {
      console.log(data); // successful response

      callback(null, data);
    }
  });
};

而且我在 cloudwatch 日志中看不到任何错误日志。

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda amazon-textract


    【解决方案1】:

    问题是您已将方法标记为async,这意味着您正在返回一个承诺。在您的情况下,您没有返回承诺,因此对于 lambda 来说,无法完成该方法的执行。这里有两个选择

    • 删除async
    • 或者更推荐的方法是将你的回调样式转换为使用promise。 aws-sdk 在所有方法上都支持 .promise 方法,因此您可以利用它。代码如下所示
    var AWS = require("aws-sdk");
    var base64 = require("base-64");
    var fs = require("fs");
    exports.handler = async (event, context) => {
      // Input for textract can be byte array or S3 object
    
      AWS.config.region = "us-east-1";
      //AWS.config.update({ region: 'us-east-1' });
      var textract = new AWS.Textract({ apiVersion: "2018-06-27" });
      //var textract = new AWS.Textract();
      console.log(textract);
    
      var params = {
        Document: {
          /* required */
          //'Bytes': imageBase64
          S3Object: {
            Bucket: "717577",
            Name: "Picture2.png"
          }
        }
      };
    
      const data = await textract.detectDocumentText(params).promise();
      return data;
    };
    
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2012-03-13
      • 2018-12-26
      • 1970-01-01
      • 2012-09-02
      • 2014-06-02
      相关资源
      最近更新 更多