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

如何在AWS SDK中获取S3中指定文件夹名的目录路径

使用AWS SDK获取S3中指定名称的文件夹路径

假设你的S3存储桶中有以下模拟文件夹的前缀:

folder/folder1/subfolder1
folder/folder2/subfolder1
folder/folder2/subfolder2 

需要筛选出所有最后一级目录名为subfolder1的完整路径,预期结果:

folder/folder2/subfolder1
folder/folder1/subfolder1

下面以Python的boto3 SDK为例,实现这个需求:

实现步骤与代码

  1. 初始化S3客户端:通过boto3创建S3客户端,凭证可通过环境变量、~/.aws/credentials文件或IAM角色自动加载。
  2. 分页获取文件夹前缀:S3没有真实的文件夹结构,通过前缀和分隔符/模拟,使用分页器处理大量前缀的场景。
  3. 筛选目标路径:遍历所有返回的前缀,判断最后一级目录是否为subfolder1,收集符合条件的路径。
import boto3

def get_target_subfolders(bucket_name):
    # 初始化S3客户端
    s3_client = boto3.client('s3')
    # 创建分页器,处理大量前缀的分页返回
    paginator = s3_client.get_paginator('list_objects_v2')
    # 分页请求,指定分隔符为/,返回模拟的文件夹前缀
    page_iter = paginator.paginate(Bucket=bucket_name, Delimiter='/')
    
    target_paths = []
    for page in page_iter:
        # 遍历当前页的所有文件夹前缀
        if 'CommonPrefixes' in page:
            for prefix_info in page['CommonPrefixes']:
                # 去掉前缀末尾的/,得到干净的文件夹路径
                folder_path = prefix_info['Prefix'].rstrip('/')
                # 分割路径,取最后一级目录名称
                last_folder = folder_path.split('/')[-1]
                if last_folder == 'subfolder1':
                    target_paths.append(folder_path)
    
    return target_paths

# 替换为你的存储桶名称
target_bucket = "your-bucket-name"
result_paths = get_target_subfolders(target_bucket)
# 打印结果
for path in result_paths:
    print(path)

其他SDK的通用思路

如果使用Java、JavaScript等其他AWS SDK,核心逻辑一致:

  • 调用列出对象的接口,设置分隔符为/,获取所有模拟文件夹的前缀。
  • 遍历前缀,解析路径的最后一级目录名称,筛选出符合条件的路径。
  • 注意处理分页逻辑,避免因前缀数量过多导致请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:42:48