我正在使用 MWAA,当我通过
requirements.txt
添加新的提供程序时,它们不会显示在“Airflow - 管理 > 提供程序”UI 中,而安装在 MWAA 实例上的默认提供程序则显示得很好。
示例:
apache-airflow-providers-databricks==2.0.2
添加到 requirements.txt
结果: 所有这些之后,这是“管理 > 提供商”选项卡:
我只是希望能够轻松查看所有已安装的提供程序。任何建议表示赞赏。
所以看来这实际上是内部 VPC 问题。我当时认为这不相关,但是当我运行公共(与私有)实例时,我没有遇到同样的问题。
我也有同样的问题。正如 @theNewfelll 所说,这似乎是公共 VPC 与私有 VPC 的问题。
问题是,如果您在“监控”部分启用气流调度程序日志记录(编辑和更新环境),您可以看到如下整体:
Installing collected packages: slack-sdk, apache-airflow-providers-slack
Successfully installed apache-airflow-providers-slack-5.0.0 slack-sdk-3.19.1
因此,不存在未安装提供程序的任何错误,它只是没有显示在下拉列表中,因此您无法创建该连接。
问题是私有 VPC 的私有 Web 服务器没有互联网连接 - 遗憾的是日志没有给出错误而不是显示成功。
解决方案是下载 pip3 软件包(本例中为 slack):
pip3 download apache-airflow-providers-slack==5.0.0
获得 .whl 文件后,更改权限
chmod -R 755
(-R = 文件内的层次结构,而不仅仅是文件),然后将其压缩 (zip -r plugins.zip .
),与任何其他插件一起放入名为plugins 的文件中。压缩。将此上传到您的 MWAA。
requirements.txt 文件需要采用以下形式:
/usr/local/airflow/plugins/apache_airflow_providers_slack-5.0.0-py3-none-any.whl
由于没有互联网访问权限,插件将被复制到 Scheduler 和 Worker 文件系统上的插件文件夹中。
我在尝试安装时遇到了同样的问题
apache-airflow-providers-mysql
。
首先,我尝试将其直接添加到位于我的 S3 存储桶中的requirements.txt 文件中——但这不起作用(如本文所述)。
破碎
requirements.txt
:
--find-links /usr/local/airflow/plugins
--no-index
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.11.txt"
/usr/local/airflow/plugins/apache_airflow_providers_mysql-5.5.1-py3-none-any.whl
根据调度程序日志(Cloudwatch
requirements_install_ip-*.log
),提供程序的安装看起来很好,但网络服务器中不会显示任何内容(具体来说,我正在检查提供程序页面和连接页面,看看是否可以创建 mysql 连接).
我最终发现网络服务器也有
requirements_install_ip-*.log
日志,这些日志包含一个错误,最终引导我找到了解决方案:
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='raw.githubusercontent.com', port=443):
Max retries exceeded with url: /apache/airflow/constraints-2.8.1/constraints-3.10.txt
(Caused by ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f601f89e090>, 'Connection to raw.githubusercontent.com timed out. (connect timeout=15)'))
因此,我删除了
--constraint
行,网络服务器提供程序安装工作正常,并且提供程序立即出现在网络服务器中:
工作
requirements.txt
:
--find-links /usr/local/airflow/plugins
--no-index
/usr/local/airflow/plugins/apache_airflow_providers_mysql-5.5.1-py3-none-any.whl
MWAA 文档对此有以下说法:
从 Apache Airflow v2.7.2 开始,您的需求文件必须包含 --constraint 语句。如果您不提供约束,Amazon MWAA 将为您指定一个约束,以确保您的要求中列出的软件包与您正在使用的 Apache Airflow 版本兼容。
这不是一个令人满意的解决方案,但它确实对我有用,而且由于 MWAA 似乎确实有某种备份约束机制,所以它必须这样做。