从Airflow连接Azure Blob存储失败的排查求助
排查Airflow连接Azure Blob存储的方向
1. 验证存储账户端点格式与DNS解析
- 修正Service Principal方式的
Account Name格式:去掉https://前缀,直接填写<storage_account_name>.blob.core.windows.net,多余前缀会导致DNS解析失败,匹配报错中的“Name or service not known”。 - 在Airflow节点执行
nslookup <storage_account_name>.blob.core.windows.net,确认能解析到VNet内的私有IP(若存储账户开启私有端点)。如果解析失败,说明VNet未关联Azure私有DNS区域privatelink.blob.core.windows.net,需补全DNS配置。
2. 检查存储账户网络访问规则
- 确认存储账户“防火墙和虚拟网络”设置中,已将Airflow所在VNet/子网加入允许列表;若使用托管Airflow服务,需勾选“允许受信任的Microsoft服务访问此存储账户”。
- 若存储账户启用私有端点,检查Airflow节点所在子网的NSG是否允许出站访问私有端点的443端口。
3. 核对认证配置细节
- Service Principal方式:
- 确认连接类型为
Azure Blob Storage,认证方式选Azure Active Directory。 - 检查
Client Id(服务主体应用ID)、Client Secret是否正确配置,且Client Secret未过期。
- 确认连接类型为
- SAS Token方式:
- 确保SAS Token无
?前缀,权限覆盖DAG所需操作(如Read/Write)且未过期。 - 确认Blob Storage Login仅填写
<storage_account_name>,无额外后缀。
- 确保SAS Token无
4. 测试Airflow节点的直接网络连通性
- Service Principal方式:先获取访问令牌,再执行
curl -v https://<storage_account_name>.blob.core.windows.net/<container_name> -H "Authorization: Bearer <access_token>",查看具体错误信息。 - SAS Token方式:执行
curl -v https://<storage_account_name>.blob.core.windows.net/<container_name>?<sas_token>,验证连通性。 - 同时测试Azure AD端点连通性:执行
nslookup login.microsoftonline.com,确认解析和访问正常。
5. 检查Airflow依赖版本
- 确认
apache-airflow-providers-microsoft-azure包版本为最新稳定版(如>=4.0.0),旧版本可能存在VNet内连接或私有端点的兼容问题,必要时升级依赖。
内容的提问来源于stack exchange,提问作者user21677797
相关产品推荐
相关产品推荐

