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

AWS RDS导出至S3的.gz.parquet文件下载报错,寻求批量处理方案

批量处理Aurora导出的.gz.parquet文件并跨区迁移方案

方案1:AWS CLI + Bash脚本批量重命名并跨区复制

适合本地执行,操作简单,适配一次性批量处理场景。

  1. 先递归列出源桶下所有目标文件,保存到本地清单:
aws s3 ls s3://源桶名/ --recursive | grep ".gz.parquet" > file_list.txt
  1. 编写循环脚本,逐个跨区复制并重命名文件:
#!/bin/bash
while read -r line; do
    # 提取文件的S3键路径
    s3_key=$(echo "$line" | awk '{print $4}')
    # 替换后缀:移除.gz前缀
    new_key=${s3_key%.gz.parquet}.parquet
    # 跨区复制并重命名到目标桶
    aws s3 cp s3://源桶名/$s3_key s3://目标桶名/$new_key
    # 可选:复制完成后删除源文件
    # aws s3 rm s3://源桶名/$s3_key
done < file_list.txt
  1. 先测试少量文件验证逻辑,确认无误后批量执行。

方案2:AWS Lambda批量处理(无服务器方式)

无需本地环境,适合大规模文件自动化处理。

用Python编写Lambda函数,遍历源桶对象并跨区复制重命名:

import boto3

s3 = boto3.client('s3')

def lambda_handler(event, context):
    source_bucket = '源桶名'
    target_bucket = '目标桶名'
    
    # 分页遍历源桶所有对象
    paginator = s3.get_paginator('list_objects_v2')
    pages = paginator.paginate(Bucket=source_bucket)
    
    for page in pages:
        if 'Contents' in page:
            for obj in page['Contents']:
                key = obj['Key']
                if key.endswith('.gz.parquet'):
                    # 生成新文件名
                    new_key = key.replace('.gz.parquet', '.parquet')
                    # 跨区复制对象
                    s3.copy_object(
                        Bucket=target_bucket,
                        Key=new_key,
                        CopySource={'Bucket': source_bucket, 'Key': key}
                    )
                    # 可选:删除源对象
                    # s3.delete_object(Bucket=source_bucket, Key=key)
    return {'statusCode': 200, 'body': '批量处理完成'}

注意:给Lambda配置S3的ListBucket、GetObject、PutObject权限,同时根据文件数量调整超时时间(最长15分钟)。

方案3:修改Aurora导出参数,从根源避免错误后缀

下次导出时直接生成合规后缀的文件,省去后续处理步骤:

使用AWS CLI启动Aurora导出任务时,指定GZIP压缩但不额外添加.gz后缀(Parquet文件元数据会记录压缩格式,无需通过后缀标识):

aws rds start-export-task \
    --export-task-id aurora-parquet-export \
    --source-arn arn:aws:rds:源区域:账号ID:cluster:你的aurora集群名 \
    --s3-bucket-name 源桶名 \
    --iam-role-arn arn:aws:iam::账号ID:role/rds-s3-export-role \
    --kms-key-id arn:aws:kms:源区域:账号ID:key/你的KMS密钥ID \
    --export-only "你的数据库.你的表" \
    --file-format PARQUET \
    --compression-type GZIP

导出后的文件后缀为.parquet,直接支持下载和跨区复制操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:47:28