You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Textract调用analyzeDocument无错误时回调不执行问题求助

问题根因
  • 你的Lambda handler声明为async类型,但调用analyzeDocument用了回调式写法,async handler不会等待异步回调执行完成,会在同步代码执行完毕后直接终止进程。正常调用Textract需要跨网络请求,耗时久,还没等响应返回Lambda就已经退出,因此回调内的日志不会打印。
  • 配置类错误属于SDK本地同步校验场景,会立即触发回调,因此能在Lambda退出前执行到错误处理逻辑。
  • 你的代码存在笔误:JSON.stringfy应为JSON.stringify。
解决方案

推荐将SDK调用改为async/await写法,示例代码如下:

"use strict";

const AWS = require("aws-sdk");

exports.handler = async (event) => {
  let params = JSON.parse(event.body);
  console.log("Parse as document...");
  let textract = new AWS.Textract();
  let doc = params["doc"];
  let config = {
    Document: {
      Bytes: doc,
    }
  };
  try {
    console.log("analyzing...");
    const data = await textract.analyzeDocument(config).promise();
    console.log("data:" + JSON.stringify(data));
  } catch (err) {
    console.log(err, err.stack);
  }
  console.log("Finished parsing as document.");
  // 按需添加返回值
  return {
    statusCode: 200,
    body: JSON.stringify({message: '处理完成'})
  }
};
补充说明
  • 如果你坚持使用回调写法,需要去掉handler的async声明,并且在回调的最后调用Lambda原生的callback方法通知Lambda执行完成,避免提前退出。
  • 要注意Lambda的超时时间设置,Textract处理大文件耗时较长,需要将超时时间调整到大于实际处理耗时的数值。

内容的提问来源于stack exchange,提问作者Wronski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:36:04