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

部署FastAPI至AWS Lambda时Textract报UnsupportedDocumentException问题

解决AWS Lambda部署FastAPI+Textract的UnsupportedDocumentException报错

可能的原因

  • Lambda环境中文件字节流在传输/解析过程中损坏或被修改,与本地开发环境的字节内容不一致
  • FastAPI适配Lambda的工具(如mangum)版本存在问题,导致文件上传的字节解析异常

排查与解决步骤

  1. 验证字节流一致性
    在extractImage函数中添加日志,打印接收的文件字节长度和前10个字节,对比本地和Lambda的日志:

    def extractImage(form_image: bytes = File()):
        print(f"Bytes length: {len(form_image)}")
        print(f"First 10 bytes: {form_image[:10]}")
        # 原业务代码...
    

    查看CloudWatch日志,如果Lambda中的字节长度或内容与本地差异较大,说明文件解析/传输环节存在问题。

  2. 检查mangum适配器版本
    若使用mangum作为FastAPI到Lambda的适配工具,确保安装最新稳定版。旧版本可能存在multipart/form-data解析bug,导致文件字节异常。更新命令:

    pip install --upgrade mangum
    
  3. 测试原始字节传递
    临时修改代码,将文件字节保存到Lambda的/tmp目录后重新读取,再传递给Textract,验证是否为字节流本身的问题:

    def extractImage(form_image: bytes = File()):
        # 临时保存文件
        with open("/tmp/test_image.png", "wb") as f:
            f.write(form_image)
        # 重新读取字节
        with open("/tmp/test_image.png", "rb") as f:
            img_bytes = f.read()
        response = textractclient.analyze_document(
            Document={"Bytes": img_bytes},
            FeatureTypes=["FORMS"],
        )
        # 原业务后续逻辑...
    

    若此方式能正常运行,说明原始接收的字节流存在异常,需进一步排查上传解析环节。

  4. 确认文件上传方式
    若通过API Gateway或Lambda Function URL上传文件,确保请求的Content-Type为multipart/form-data,且客户端上传时未对文件进行额外编码(如base64)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:00:24