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

Java 11 Lambda读取S3的docx文件时获取到S3网页而非文件内容如何处理

AWS Lambda Java 11 正确读取S3存储docx文件解决方案

问题根因说明

你观察到的包含footnotes.xml、settings.xml的输出不是加密内容,也不是S3网页内容:docx格式本质是ZIP压缩包封装的多XML文件集合,直接读取原始字节流转字符串输出就会呈现这类特征。如果确认拿到的是S3网页响应,通常是错误调用了公开URL而非用SDK直接拉取对象导致的。

正确实现步骤

  • 首先确保依赖配置正确,除了AWS SDK v1之外,引入docx解析工具Apache POI:
<!-- Apache POI 处理docx依赖 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
<!-- AWS SDK S3 依赖,对应你使用的1.11.937版本 -->
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.937</version>
</dependency>
  • 第二步:编写正确的S3对象读取+docx解析逻辑,使用AWS SDK直接调用getObject接口获取对象流,不要手动拼接S3公开URL请求:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.S3Object;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import java.io.InputStream;

public class S3DocxReader {
    private final AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
    
    public String readDocxFromS3(String bucketName, String key) {
        try (S3Object s3Object = s3Client.getObject(bucketName, key);
             InputStream inputStream = s3Object.getObjectContent();
             XWPFDocument document = new XWPFDocument(inputStream);
             XWPFWordExtractor extractor = new XWPFWordExtractor(document)) {
            // 提取docx纯文本内容
            return extractor.getText();
        } catch (Exception e) {
            // 自定义异常处理逻辑
            throw new RuntimeException("读取docx文件失败", e);
        }
    }
}

常见配置校验项

  • 确认Lambda执行角色已配置目标S3桶的s3:GetObject权限,桶策略未拦截Lambda执行角色的访问请求
  • Lambda内存配置不低于512MB,避免Apache POI解析大文件时触发OOM
  • 不要使用HTTP客户端直接请求S3对象URL,否则桶未公开时会拿到403错误页面内容,和你描述的异常输出特征一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:24:08