Airflow中S3KeySensor任务异常失败及下游任务故障求助
解决Airflow S3KeySensor异常失败的问题
我来帮你分析下这个困扰你的问题——明明目标S3文件已经存在,S3KeySensor却几秒就失败,日志里还出现矛盾的成功报告和无任务可执行的提示。结合你的代码和描述,大概率是这几个方面的问题,咱们逐一排查:
1. 先修正S3 Key的格式问题
你的bucket_key有两个容易导致识别失败的点:
- S3对象的Key不需要开头的斜杠,你现在写的
/shard-conviva-databricks-vpc/...,前导斜杠会让Sensor找不到正确的对象路径,应该改成shard-conviva-databricks-vpc/0/_Projects/Huawei/checks/validity/dt=2018_03_05_08_to_2018_03_12_08/impactSummary.csv。 - 你用了URL编码的
%3D代替=,但Airflow的S3KeySensor会直接处理原始字符串,不需要转义。加上wildcard_match=True的设置,编码后的%3D会被当成通配符的一部分,而不是解析为等于号,这也会导致文件匹配失败。
修改后的Sensor代码可以参考:
inputsensor = S3KeySensor( task_id='inputsensor', bucket_key='shard-conviva-databricks-vpc/0/_Projects/Huawei/checks/validity/dt=2018_03_05_08_to_2018_03_12_08/impactSummary.csv', wildcard_match=True, bucket_name='convivaoregon', s3_conn_id='my_conn_S3', soft_fail=False, poke_interval=50, timeout=300, # 这里顺便把超时时间延长了,后面会说原因 dag=dag )
2. 调整超时时间与检查间隔的配置
你当前设置的timeout=50和poke_interval=50太极限了——总超时时间只有50秒,第一次检查后还没等到第二次检查就直接超时了。哪怕文件存在,如果第一次检查因为网络延迟、S3响应慢没命中,直接就判定失败了。
建议把timeout延长到300秒(5分钟),给Sensor足够的容错时间;如果确定文件已经存在,也可以把poke_interval缩小到10秒,加快检查速度。
3. 排查S3连接权限与Airflow Executor状态
- 先确认你的
my_conn_S3连接配置没问题:去Airflow UI里测试这个连接的可用性,检查Access Key和Secret Key是否有读取目标bucket的权限——有时候权限不足不会直接报错,只会返回“文件不存在”的结果。 - 日志里的
No task to send to the executor大概率是Airflow Executor的状态同步问题,比如CeleryExecutor的worker和 scheduler之间状态不一致。可以试试重启Airflow的Scheduler和Executor进程,再重新运行任务看看。 - 别只看心跳日志,去Airflow UI里找到
inputsensor任务的具体执行日志,里面会有更详细的错误信息,比如S3访问超时、权限拒绝之类的,这才是排查的关键。
4. 用S3Hook手动验证文件存在性
如果上面的方法都没解决,你可以写个小脚本用S3Hook直接验证文件是否能被访问,排除Sensor本身的问题:
from airflow.providers.amazon.aws.hooks.s3 import S3Hook def check_s3_file(): hook = S3Hook(s3_conn_id='my_conn_S3') bucket = 'convivaoregon' key = 'shard-conviva-databricks-vpc/0/_Projects/Huawei/checks/validity/dt=2018_03_05_08_to_2018_03_12_08/impactSummary.csv' if hook.check_for_key(key, bucket_name=bucket): print("✅ 文件能正常访问") else: print("❌ 文件不存在或无访问权限") # 在Airflow的测试环境或者本地运行这个函数
如果这个函数返回文件不存在,那就是连接或权限的问题;如果返回存在,那问题肯定出在S3KeySensor的配置上,再回头检查前面的设置即可。
内容的提问来源于stack exchange,提问作者Emily Shi
相关产品推荐
相关产品推荐

