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

如何从S3嵌套桶结构动态获取指定JSON文件执行转换

解决方案

方法1:AWS CLI通配符快速定位

直接利用AWS CLI的递归查找和通配符匹配,不用管中间层级的ID,精准定位目标文件:

# 列出所有符合条件的result_.json路径
aws s3 ls s3://trd-data-lake-landing-zone/fetched_projects/ --recursive --include "*/analysis_*/result_.json"

# 批量下载到本地目录
aws s3 cp s3://trd-data-lake-landing-zone/fetched_projects/ ./local-results/ --recursive --include "*/analysis_*/result_.json"

方法2:Python boto3代码动态筛选

如果要在流水线代码里集成,用boto3遍历S3对象并过滤路径:

import boto3

s3_client = boto3.client('s3')
bucket = 'trd-data-lake-landing-zone'
base_prefix = 'fetched_projects/'

# 分页遍历所有S3对象
paginator = s3_client.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket=bucket, Prefix=base_prefix)

target_files = []
for page in pages:
    if 'Contents' not in page:
        continue
    for obj in page['Contents']:
        key = obj['Key']
        # 匹配路径规则:包含analysis_*目录,且结尾是result_.json
        if '/analysis_' in key and key.endswith('/result_.json'):
            target_files.append(f's3://{bucket}/{key}')

# 输出所有找到的文件路径
for path in target_files:
    print(path)

方法3:AWS大数据服务批量处理(流水线集成场景)

如果你的JSON扁平化流水线基于AWS生态,可以用Glue+Athena实现无代码批量处理:

  1. 在Glue创建爬虫,指向s3://trd-data-lake-landing-zone/fetched_projects/,自动识别嵌套目录结构
  2. 在Athena中创建外部表后,用SQL筛选目标文件:
SELECT * FROM your_database.your_table 
WHERE "$path" LIKE '%/analysis_%/result_.json'

原方法失败原因

你之前的路径拼接忽略了中间的locations/location_<id>/design_<id>/层级,而且project、location、design、analysis的ID并不统一,硬编码拼接自然无法匹配真实路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:22:16