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

如何让AWS MWAA Airflow显示Snowflake连接选项?

解决AWS MWAA中Snowflake连接选项缺失的问题

以下是针对该问题的排查与解决步骤:

1. 验证Airflow版本与约束文件的匹配性

你使用的约束文件对应Airflow 2.4.3,必须确保你的MWAA环境使用的Airflow版本完全一致。版本不匹配会直接导致依赖包安装失败。可在MWAA控制台的环境详情页查看当前Airflow版本,若不一致,需替换为对应版本的约束文件链接。

2. 检查MWAA依赖安装日志

前往CloudWatch日志组,找到对应MWAA环境的dependencies-installation日志流:

  • 搜索apache-airflow-providers-snowflake关键词,确认是否存在安装失败的报错(如版本冲突、网络超时)
  • 若出现版本冲突,需调整requirements.txt中的包版本,确保与Airflow 2.4.3兼容(可参考Airflow官方provider兼容性矩阵)

3. 调整requirements.txt格式与内容

修改requirements.txt,移除约束链接的引号,并明确指定google provider的版本(避免自动安装不兼容版本):

--constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.4.3/constraints-3.10.txt

apache-airflow-providers-snowflake==3.3.0
apache-airflow-providers-mysql==3.2.1
apache-airflow-providers-google==8.10.0

(注:8.10.0是Airflow 2.4.3兼容的google provider稳定版本,可按需调整)

4. 验证MWAA执行角色权限

确保你的MWAA执行角色具备以下权限:

  • 读取存储requirements.txt的S3桶的s3:GetObject权限
  • 访问公网的权限:若MWAA部署在私有VPC中,需配置VPC端点或NAT网关允许访问PyPI

5. 手动验证包安装状态

在DAG中添加测试任务,确认Snowflake provider是否安装成功:

from airflow.decorators import task
import subprocess

@task
def check_snowflake_provider():
    # 打印已安装包列表
    result = subprocess.run(["pip", "list", "--format=freeze"], capture_output=True, text=True)
    print(result.stdout)
    # 尝试导入Snowflake Hook验证
    try:
        from airflow.providers.snowflake.hooks.snowflake import SnowflakeHook
        print("Snowflake provider 安装成功")
    except ImportError as e:
        print(f"Snowflake provider 未找到: {e}")

# 在DAG中调用该任务
check_snowflake_provider()

运行DAG后查看日志输出,确认包是否存在。

6. 清理依赖缓存

删除S3桶中旧的requirements.txt文件,重新上传修改后的版本,再触发MWAA环境重建。部分场景下,MWAA会缓存依赖文件,重新上传可规避缓存问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:02:31