Airflow从Azure Blob Storage获取文件报错:找不到文件或目录
解决Airflow WASB Hook访问Azure Blob Storage文件找不到的问题
核心问题:路径参数理解错误
Azure Blob Storage的路径逻辑和本地文件系统、Airflow本地路径完全不同:
- WASB Hook的
container_name参数单独指定容器名(你的是airflow) file_path参数是容器内的blob相对路径,不需要包含容器名,也不需要本地路径前缀(比如/home/airflow、/opt/airflow),更不需要开头的斜杠。
你的文件实际存储在airflow容器下的apis/file.py,所以正确的file_path参数值就是apis/file.py。
正确代码示例
from airflow.providers.microsoft.azure.hooks.wasb import WasbHook def download_blob_file(): wasb_hook = WasbHook(wasb_conn_id="your_azure_connection_id") # 下载blob到本地指定路径 wasb_hook.get_file( file_path="apis/file.py", # 容器内的blob相对路径 container_name="airflow", # 目标容器名 local_path="/tmp/downloaded_file.py" # 本地保存路径,可按需修改 )
额外排查点
- 确认Airflow配置的Azure连接(
wasb_conn_id)拥有该容器的读取权限 - 检查blob路径大小写:Azure Blob路径区分大小写,需和实际存储路径完全匹配
- 验证blob存在:在Azure Portal或Azure Storage Explorer中确认
airflow容器下确实存在apis/file.py
内容的提问来源于stack exchange,提问作者Olívia_Palito
相关产品推荐
相关产品推荐

