使用公共接口与外部服务和应用程序集成

2025年6月13日 | 阅读 4 分钟

引言

Apache Airflow 是一个强大的平台,用于编排工作流并与外部服务和应用程序集成。 其可扩展的架构使开发人员能够有效地构建、扩展和维护工作流。 Airflow 的公共接口在提供此集成所需的工具和组件方面发挥着至关重要的作用。 下面,我们探讨公共接口的关键要素,包括执行器、密钥后端、身份验证机制、连接、日志记录等。 此外,我们将讨论哪些不被视为公共接口的一部分。

执行器

执行器是 Apache Airflow 的核心组件,决定了如何以及在何处执行任务。 它们与底层基础设施对接,以高效地分配和管理任务。 Airflow 提供了几种内置执行器,例如

  • SequentialExecutor: 顺序运行任务,通常用于调试或测试。
  • LocalExecutor: 使用多进程并行地在本地执行任务。
  • CeleryExecutor: 使用 Celery 将任务分发到集群中。
  • KubernetesExecutor: 在 Kubernetes 集群上动态调度任务。

将执行器与外部服务集成

可以自定义或扩展执行器以与外部服务交互。 例如,KubernetesExecutor 可以与 GKE、AKS 或 EKS 等云原生 Kubernetes 服务集成,从而提供可扩展且高效的执行环境。 正确配置执行器对于实现最佳性能和可靠性至关重要。

密钥后端

密钥后端管理敏感信息,例如 API 密钥、密码和工作流所需的其他凭据。 通过集中和保护这些密钥,Airflow 可确保敏感数据得到保护。

可用的密钥后端

Airflow 支持多种内置密钥后端

  • Airflow.Secrets.environment_variables: 从环境变量中检索密钥。
  • Airflow.Secrets.megastore: 获取存储在 Airflow 元数据数据库中的密钥。
  • Airflow.Secrets.hashicorp_vault: 与 HashiCorp Vault 集成以实现强大的密钥管理。
  • AWS Secrets Manager: 管理 AWS 云环境中的密钥。
  • Azure Key Vault: 集中管理 Azure 中的密钥。

实施自定义密钥后端

开发人员可以通过实现 BaseSecretsBackend 接口来创建自定义密钥后端。 这种灵活性允许与任何密钥管理解决方案集成。

Airflow.secrets 模块

airflow.secrets 模块为密钥管理提供基础框架。 它定义了安全有效地检索密钥所需的方法。 使用此模块,工作流可以动态获取密钥,从而避免将敏感信息硬编码到 DAG 中。

示例

身份验证管理器

身份验证管理器处理 Airflow 中的用户身份验证,确保只有授权用户才能访问该平台。 身份验证对于保护工作流和敏感数据至关重要。

身份验证后端

Airflow 支持各种身份验证后端,包括

  • 基本身份验证: 适用于较小的部署。
  • LDAP 身份验证: 与公司 LDAP 服务器集成以进行集中用户管理。
  • OAuth: 使用 Google、GitHub 或 Okta 等提供商提供单点登录 (SSO) 功能。
  • Kerberos: 确保企业环境中的安全身份验证。

可以实现自定义身份验证后端以与专有或不太常见的身份验证系统集成。

连接

连接定义了 Airflow 和外部服务或应用程序之间的接口。 它们封装了连接参数,例如主机、端口、用户名、密码和用于其他配置的额外字段。

管理连接

可以通过 Airflow UI、CLI 或使用 airflow.Models.Connection 类以编程方式管理连接。

示例

连接通常与密钥后端一起使用以动态检索敏感凭据。

额外链接

额外链接允许开发人员在 Airflow UI 中将自定义链接添加到任务实例。 这些链接可以提供对与任务相关的日志、仪表板或外部资源的快速访问。

实施额外链接

要实施额外链接,请继承 BaseOperatorLink 并定义链接逻辑

日志记录和监控

日志记录和监控对于诊断问题和确保工作流的可靠性至关重要。 Airflow 提供对以下各项的内置支持

  • 基于文件的日志记录
  • Elasticsearch 日志记录
  • 远程日志记录到 S3、GCS 或 Azure Blob 存储

装饰器

装饰器简化了 Airflow 任务的创建和配置。 它们增强了可读性并减少了 DAG 定义中的样板代码。

Airflow.decorators 模块

airflow.Decorators 模块包括 @task 和 @dag 等工具,使开发人员能够以声明方式定义任务和 DAG。

示例

电子邮件通知

Airflow 的电子邮件通知系统会向用户发出有关任务失败、重试或成功的警报。 可以在全局或任务级别配置电子邮件通知。

配置

在 airflow.cfg 文件中设置电子邮件通知

通知

除了电子邮件之外,Airflow 还支持通过回调或第三方集成进行自定义通知。 例如,可以通过实施自定义通知挂钩将消息发送到 Slack、Microsoft Teams 或 PagerDuty。

示例

集群策略

集群策略在 Airflow 部署中强制执行对 DAG 和任务的约束和准则。 它们有助于标准化跨团队的 DAG 行为并提高可维护性。

示例策略

血缘关系

血缘关系跟踪提供了跨工作流的数据流的可见性。 Airflow 的血缘关系集成允许用户捕获有关数据转换和移动的元数据。

实施血缘关系

使用 LineageBackend 接口创建自定义血缘关系集成


下一个主题null