提供程序包¶
Apache Airflow 2 以模块化的方式构建。“核心”Apache Airflow 提供了核心调度程序功能,允许您编写一些基本任务,但 Apache Airflow 的功能可以通过安装额外的包来扩展,这些包称为 提供程序
。
提供程序可以包含操作器、钩子、传感器和传输操作器,以与多个外部系统通信,但它们也可以使用新功能扩展 Airflow 核心。
您可以单独安装这些提供程序包,以便与给定的服务交互。 Apache Airflow
的提供程序的设计方式使您可以轻松编写自己的提供程序。 Apache Airflow 社区
开发和维护着 80 多个提供程序包,但您可以自由开发自己的提供程序 - 您构建的提供程序与社区编写的提供程序具有完全相同的功能,因此您可以发布这些提供程序并与他人共享。
如果您想了解如何构建自己的自定义提供程序,可以在 如何创建您自己的提供程序 中找到所有相关信息。
所有社区管理的提供程序的完整列表可在 提供程序索引 中找到。
您还可以在 操作器和钩子参考 中查看所有社区提供程序的操作器和钩子的索引
扩展 Airflow 核心功能¶
提供程序使您能够使用额外的功能扩展核心 Airflow。核心 Airflow 提供了基本且可靠的调度功能,提供程序扩展了其功能。这里我们描述所有自定义功能。
Airflow 会自动发现哪些提供程序添加了这些附加功能,一旦您安装了提供程序包并重新启动 Airflow,这些功能就会自动提供给 Airflow 用户。
所有可以扩展的核心功能的摘要可在 核心扩展 中找到。
身份验证后端¶
提供程序可以添加自定义身份验证后端,允许您配置 Web 服务器对用户进行身份验证的方式,将其与公共或私有身份验证服务集成。
您可以在 身份验证后端 中查看通过社区管理的提供程序可用的所有身份验证后端
安装和升级提供程序¶
单独的提供程序包提供了 1.10 版本中不可用的可能性
您可以升级到特定提供程序的最新版本,而无需升级 Apache Airflow 核心。
如果新版本引入了一些问题,您可以降级到特定提供程序的先前版本,而不会影响主要的 Apache Airflow 核心包。
您可以独立于其他提供程序包增量发布和升级/降级提供程序包。这意味着您可以按照环境中的常规测试,在您的环境中增量验证每个提供程序包更新。
提供程序的类型¶
提供程序具有相同的功能 - 无论它们是由社区提供还是第三方提供程序。本章解释了社区管理的提供程序是如何进行版本控制和发布的,以及如何创建您自己的提供程序。
社区维护的提供程序¶
从社区的角度来看,Airflow 是以多个独立的包交付的。Airflow 调度系统的核心作为 apache-airflow
包交付,还有 80 多个提供程序包可以单独安装,称为 Airflow 提供程序包
。这些包以 apache-airflow-providers
包的形式提供 - 例如,有 apache-airflow-providers-amazon
或 apache-airflow-providers-google
包)。
社区维护的提供程序与 Airflow 版本分开发布和版本控制。我们遵循 语义化版本控制 方案来处理包。某些版本的提供程序包可能依赖于特定版本的 Airflow,但我们的一般方法是,除非有充分的理由,否则新版本的提供程序应该与最近版本的 Airflow 2.x 一起使用。详细信息因提供程序而异,如果对特定版本的特定提供程序有限制,限制了所使用的 Airflow 版本,则这些限制将作为依赖项限制包含在提供程序包中。
每个社区提供程序都有相应的额外内容,可以在安装 airflow 时使用,以便将提供程序与 Apache Airflow
一起安装 - 例如,您可以使用以下额外内容安装 airflow:apache-airflow[google,amazon]
(使用正确的约束 - 请参阅 Airflow™ 的安装),您将安装适当版本的 apache-airflow-providers-amazon
和 apache-airflow-providers-google
包以及 Apache Airflow
。
一些社区提供程序也具有跨提供程序的依赖关系。这些不是必需的依赖关系,它们可能只是启用某些功能(例如,传输操作器通常会在不同的提供程序之间创建依赖关系。同样,这里的一般方法是提供程序向后兼容,包括跨依赖关系。任何重大更改和对其他提供程序包的特定版本的要求都会自动记录在每个提供程序的发行说明中。
注意
对于 Airflow 1.10,我们还提供了 apache-airflow-backport-providers
包,可以与这些版本一起安装。这些包与 2.0 版本的提供程序相同,但会自动向后移植以适用于 Airflow 1.10。backport 提供程序的最后一个版本于 2021 年 3 月 17 日发布,并且将不再发布 backport 提供程序,因为 Airflow 1.10 已于 2021 年 6 月 17 日结束生命周期。
如果您想为 Apache Airflow
做出贡献,您可以在 https://github.com/apache/airflow/blob/main/airflow/providers/MANAGING_PROVIDERS_LIFECYCLE.rst
中查看如何构建和扩展社区管理的提供程序。