如何将 Airflow 的 S3KeySensor 设置为使用正则表达式密钥?

How do I set Airflow's S3KeySensor to use regex key?

我是 Airflow 的新手,我正在使用版本 1.10.15 创建一个 dag,它将使用 S3KeySensor 扫描存储桶中已经具有以下格式的数据文件的 s3 密钥:

daily_load_20220101.tgz
daily_load_20220102.tgz

我正在尝试检测以 daily_load_* 开头的任何新文件。我不确定如何设置 S3KeySensor 来扫描文件。 提前致谢!

对于apache-airflow-providers-amazon>=3.3.0

from airflow.providers.amazon.aws.sensors.s3 import S3KeySensor
S3KeySensor(
    task_id='s3_key_sensor',
    bucket_key='s3://test_bucket/daily_load_*',
    wildcard_match=True
)

对于apache-airflow-providers-amazon<3.3.0

你应该使用 S3PrefixSensor 但是这个传感器不是那么容易理解。这是它在较新版本中被弃用的原因之一(您可以看到 https://github.com/apache/airflow/pull/22737 ) 一般来说,这应该有效:

from airflow.providers.amazon.aws.sensors.s3 import S3PrefixSensor
S3PrefixSensor(
    task_id='s3_key_sensor',
    bucket_name='test_bucket',
    prefix=['daily_load_']
)