如何批量导出Amazon S3中所有文件的路径/URL到Excel表格
解决方案
方案1:AWS CLI 一键导出(无需编码,执行速度最快)
你只需要提前完成AWS CLI的安装和身份凭证配置(确保凭证拥有s3:ListAllMyBuckets、目标存储桶的s3:ListBucket权限),直接执行对应命令即可生成可直接用Excel打开的CSV文件。
- Linux/macOS 环境执行命令:
aws s3api list-buckets --query "Buckets[].Name" --output text | tr '\t' '\n' | while read bucket; do aws s3api list-objects-v2 --bucket $bucket --query "Contents[].{Path:join('/',['$bucket',Key])}" --output text; done > s3_file_paths.csv
- Windows PowerShell 环境执行命令:
foreach ($bucket in (aws s3api list-buckets --query "Buckets[].Name" --output text)) { aws s3api list-objects-v2 --bucket $bucket --query "Contents[].{Path:join('/',['$bucket',Key])}" --output text | Out-File -FilePath s3_file_paths.csv -Append }
生成的s3_file_paths.csv直接双击即可用Excel打开,路径格式完全符合你要求的「存储桶名称/文件路径」规则。
方案2:Python boto3 脚本(自定义灵活,可适配特殊需求)
boto3没有内置的批量导出方法,但路径拼接逻辑非常简单,以下是可直接执行的完整脚本:
- 先安装依赖:
pip install boto3 pandas - 执行以下脚本:
import boto3 import pandas as pd # 初始化S3客户端,会自动读取本地配置的AWS凭证,也可手动传入ak/sk/region s3 = boto3.client('s3') all_paths = [] # 遍历所有存储桶,若只需导出指定桶,可直接替换为自定义桶名列表 for bucket in s3.list_buckets()['Buckets']: bucket_name = bucket['Name'] # 分页拉取桶内所有对象,适配大文件量场景 paginator = s3.get_paginator('list_objects_v2') for page in paginator.paginate(Bucket=bucket_name): if 'Contents' not in page: continue for obj in page['Contents']: # 按要求拼接路径 file_path = f"{bucket_name}/{obj['Key']}" all_paths.append(file_path) # 导出为Excel文件 pd.DataFrame(all_paths, columns=['文件路径']).to_excel('s3_file_paths.xlsx', index=False)
5万文件量级下两种方案均可在1分钟内完成导出,不需要手动操作单个文件。
内容的提问来源于stack exchange,提问作者Aarnav Shah
相关产品推荐
相关产品推荐

