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

如何在AWS Lambda中使用PyArrow读取S3中的Parquet文件?

在AWS Lambda中使用PyArrow读取S3上的Parquet文件

要在Lambda中实现读取S3存储的Parquet文件,按以下步骤操作:

1. 配置Lambda的IAM权限

Lambda执行角色必须具备S3对象读取权限,你可以:

  • 为角色附加AmazonS3ReadOnlyAccess托管策略(适合测试场景)
  • 或者创建更细粒度的自定义策略,仅允许对目标桶和文件执行s3:GetObject操作,示例策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/path/to/your/*.parquet"
        }
    ]
}

2. 准备Lambda的依赖包

Lambda默认环境不包含PyArrow和s3fs(PyArrow处理S3路径的依赖),你需要将这些依赖打包:

  • 推荐使用Lambda层:在Amazon Linux 2环境下(或用Docker模拟)安装依赖,打包成zip后上传为Lambda层
  • 也可以直接将依赖和代码打包成一个zip包上传到Lambda

3. 编写Lambda代码

PyArrow支持直接通过S3路径读取Parquet,无需先下载文件到本地,两种实现方式如下:

方式1:直接使用S3路径

import pyarrow.parquet as pq

def lambda_handler(event, context):
    # 替换为你的S3文件路径
    s3_file_path = "s3://your-bucket-name/path/to/target-file.parquet"
    # 读取Parquet文件为PyArrow Table
    pq_table = pq.read_table(source=s3_file_path)
    
    # 可选:转换为Pandas DataFrame进行后续处理
    df = pq_table.to_pandas()
    
    return {
        "statusCode": 200,
        "body": f"成功读取Parquet文件,共{pq_table.num_rows}行数据"
    }

方式2:显式使用S3FileSystem

如果需要更灵活的S3配置(比如自定义端点、临时凭证等),可以显式初始化S3FileSystem:

import pyarrow.parquet as pq
from pyarrow.fs import S3FileSystem

def lambda_handler(event, context):
    bucket_name = "your-bucket-name"
    file_key = "path/to/target-file.parquet"
    
    fs = S3FileSystem()
    # 通过文件键和存储桶读取
    pq_table = pq.read_table(source=file_key, filesystem=fs, storage_options={"bucket": bucket_name})
    
    return {
        "statusCode": 200,
        "body": f"成功读取Parquet文件,共{pq_table.num_rows}行数据"
    }

注意事项

  • 依赖兼容性:打包依赖时必须基于Lambda运行环境(Amazon Linux 2),否则会出现导入错误
  • 路径正确性:S3路径格式为s3://bucket-name/object-key,注意不要包含多余的斜杠或空格
  • 权限排查:如果出现AccessDenied错误,先检查Lambda角色的权限是否覆盖目标S3对象,以及对象是否有公共访问限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:05:29