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

AWS Glue Job排除S3中1-Preparing-*目录及文件失败求助

问题分析与解决方案

排除规则失效的原因

  1. 正则表达式不被支持:AWS Glue的exclusions参数仅支持glob模式,不支持正则表达式,你最初写的^1-Preparing-.*完全不会生效。
  2. 指定具体UUID的glob规则失效的可能原因:
    • 路径匹配精度问题:如果实际目录UUID与规则中填写的不一致(比如UUID格式错误、字符拼写偏差),会导致匹配不到目标目录。
    • glob模式覆盖范围有限:1-Preparing-xxxx/**仅匹配该指定目录下的所有文件,无法批量排除多个不同UUID的1-Preparing-目录。
    • Glue路径匹配逻辑限制:当paths设为桶根s3://mybucket/时,exclusions的glob模式基于桶内对象的相对路径匹配,若S3对象键的实际存储格式(如是否包含末尾斜杠)与规则不匹配,也会导致失效。

简便解决方案

方案1:批量排除所有1-Preparing-开头的目录

使用glob模式批量匹配所有目标目录及其子文件,替换exclusions规则即可:

glueContext.create_dynamic_frame.from_options(
    ...
    connection_type="s3",
    format="csv",
    connection_options={
        "paths": ["s3://mybucket/"], 
        "recurse": True, 
        "exclusions": ["1-Preparing-*/**"]
    },
    ...
)

1-Preparing-*/**的作用是:匹配所有以1-Preparing-开头的一级目录,并排除该目录下的所有层级文件。

方案2:直接指定目标路径(更高效)

既然只需要读取2-Ready-开头的目录,可直接跳过排除逻辑,将paths限定为目标目录:

glueContext.create_dynamic_frame.from_options(
    ...
    connection_type="s3",
    format="csv",
    connection_options={
        "paths": ["s3://mybucket/2-Ready-*/"], 
        "recurse": True
    },
    ...
)

这种方式无需排除操作,直接限定读取范围,性能更优,也避免了匹配规则出错的问题。

额外注意事项

  • Glue的glob模式支持通配符:*匹配任意不含路径分隔符/的字符,**匹配任意层级的目录和文件。
  • exclusions可以是字符串(多个模式用逗号分隔),也可以是字符串数组,两种格式均有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:27:39