AWS методы textract в node js не вызываются - PullRequest
1 голос
/ 08 февраля 2020

Я хочу извлечь текст из изображения, используя node js, поэтому я создал лямбду в aws. Пожалуйста, найдите приведенный ниже фрагмент кода. Проблема заключается в том, что метод textract deteDocumentText не вызывается. Не могли бы вы помочь мне в решении этой проблемы.

Что касается разрешения, то я дал s3 полный доступ и 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. С нетерпением жду ответа.

1 Ответ

0 голосов
/ 08 февраля 2020

Проблема в том, что вы пометили свой метод как async, что означает, что вы возвращаете обещание. В вашем случае вы не возвращаете обещание, поэтому для лямбды нет способа завершить выполнение метода. Здесь у вас есть два варианта

  • Удалить async
  • Или более рекомендуемый способ - преобразовать ваш стиль обратного вызова, чтобы использовать обещание. 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;
};

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...