在 Amazon MWAA 上使用 Apache Airflow 配置选项 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon MWAA 上使用 Apache Airflow 配置选项

Apache Airflow 配置选项可以作为环境变量附加到 Amazon MWAA 环境中。您可以从建议的下拉列表中进行选择,也可以在 Amazon MWAA 控制台上为 Apache Airflow 版本指定自定义配置选项。本页介绍可用的 Apache Airflow 配置选项,以及如何使用这些选项来覆盖环境中的 Apache Airflow 配置设置。

先决条件

在完成本页上的步骤之前,您需要具备以下条件。

  • 权限-您的 Amazon 账户必须已获得管理员授予访问您环境的 AmazonmWAA FullConsoleAccess 访问控制策略的权限。此外,您的执行角色必须允许您的 Amazon MWAA 环境访问您的环境所使用的 Amazon 资源。

  • 访问权限-如果您需要访问公共存储库才能直接在 Web 服务器上安装依赖项,则必须将环境配置为具有公共网络 Web 服务器访问权限。有关更多信息,请参阅 Apache Airflow 访问模式

  • Amazon S3 配置 — 用于存储 DAG 的 Amazon S3 存储桶、在 plugins.zip 中的自定义插件和在 requirements.txt 中的 Python 依赖项必须配置为已阻止公共访问已启用版本控制

工作方式

创建环境时,Amazon MWAA 会将您在亚马逊 MWAA 控制台的 A irflow 配置选项中指定的配置设置作为环境变量附加到环境容器中 Amazon Fargate 。如果您在 airflow.cfg 中使用同名设置,则您在 Amazon MWAA 控制台上指定的选项将覆盖 airflow.cfg 中的值。

虽然我们不会在 Amazon MWAA 环境的 Apache Airflow UI 中公开 airflow.cfg,但您可以直接在 Amazon MWAA 控制台上更改 Apache Airflow 配置选项,然后继续使用 airflow.cfg 中的所有其他设置。

在 Apache Airflow v2 中使用配置选项加载插件

默认情况下,在 Apache Airflow v2 中,使用 core.lazy_load_plugins : True 设置将插件配置为“延迟”加载。如果您在 Apache Airflow v2 中使用自定义插件,则必须添加 core.lazy_load_plugins : False 为 Apache Airflow 配置选项,以便在每个 Airflow 流程开始时加载插件,才能覆盖默认设置。

配置选项概述

当您在 Amazon MWAA 控制台上添加配置时,Amazon MWAA 会将该配置作为环境变量写入。

  • 列出的选项。您可以在下拉列表中从适用于 Apache Airflow 的版本中选择一项配置设置。例如 dag_concurrency : 16。配置设置将环境的 Fargate 容器转化为 AIRFLOW__CORE__DAG_CONCURRENCY : 16

  • 自定义选项。您还可以指定未在下拉列表中列出的 Apache Airflow 版本的 Airflow 配置选项。例如 foo.user : YOUR_USER_NAME。配置设置将环境的 Fargate 容器转化为 AIRFLOW__FOO__USER : YOUR_USER_NAME

Apache Airflow 配置选项

下图显示了您可以在 Amazon MWAA 控制台上自定义 Apache Airflow 配置选项的位置。


          此图显示了您可以在 Amazon MWAA 控制台上自定义 Apache Airflow 配置选项的位置。

Apache Airflow 参考

有关 Apache Airflow 支持的配置选项列表,请参阅《Apache Airflow 参考指南》中的配置参考。要查看您在 Amazon MWAA 上运行的 Apache Airflow 版本的选项,请从下拉列表中选择版本。

使用 Amazon MWAA 控制台

以下过程将指导您完成将 Airflow 配置选项添加到环境中的步骤。

  1. 在 Amazon MWAA 控制台上打开环境页面

  2. 选择环境。

  3. 选择编辑

  4. 选择下一步

  5. Airflow 配置选项窗格中选择添加自定义配置。

  6. 从下拉列表中选择配置并输入值,或者键入自定义配置并输入值。

  7. 为每个您想要添加的配置选择添加自定义配置选项

  8. 选择保存

配置参考

下一节包含 Amazon MWAA 控制台下拉列表中可用的 Apache Airflow 配置列表。

电子邮件配置

以下列表显示了 Amazon MWAA 上可用的 Airflow 电子邮件通知配置选项。

我们建议对 SMTP 流量使用端口 587。默认情况下,会 Amazon 阻止所有 Amazon EC2 实例的端口 25 上的出站 SMTP 流量。要在端口 25 上发送出站流量,可请求移除此限制

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2

email.email_backend

Apache Airflow 实用工具用于在 email_backend 中发送电子邮件通知。

airflow.utils.email.send_email_smtp

v2

smtp.smtp_host

smtp_host 中用作电子邮件地址的出站服务器的名称。

localhost

v2

smtp.smtp_starttls

smtp_startttls 中,传输层安全性协议(TLS)用于加密互联网上的电子邮件。

False

v2

smtp.smtp_sll

安全套接字层(SSL)用于连接 smtp_ssl 中的服务器和电子邮件客户端。

True

v2

smtp.smtp_port

smtp_port 中为服务器指定的传输控制协议(TCP)端口。

587

v2

smtp.smtp_mail_from

smtp_mail_from 中的出站电子邮件地址。

myemail@domain.com

任务配置数

以下列表显示了 Amazon MWAA 上的 Airflow 任务下拉列表中可用的配置。

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2

core.default_task_ret

default_task_retries 中重试 Apache Airflow 任务的次数。

3

v2

core.parallelism

可以在整个环境中并行运行的最大任务实例数(并行)。

40

计划程序配置数

以下列表显示了 Amazon MWAA 下拉列表中可用的 Apache Airflow 计划程序的配置。

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2

scheduler.catchup_by_default

告诉计划程序创建 DAG 运行以“赶上”在 catchup_by_default 中的特定时间间隔。

False

v2

scheduler.scheduler_zombie_task_task_

告诉计划程序是否将任务实例标记为失败并在 scheduler_zombie_task_treshold 中重新安排任务。

300

工作线程配置数

以下列表显示了 Amazon MWAA 下拉列表中可用的 Airflow 工作线程配置。

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2

celery.worker_autoscale

worker_autoscale 中使用 Celery Executor 在任何工作线程上同时运行的最大和最小任务数。值必须按以下顺序以逗号分隔:max_concurrency,min_concurrency

16,12

Web 服务器配置数

以下列表显示了 Amazon MWAA 下拉列表中可用的 Airflow Web 服务器配置。

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2

网络服务器.default_ui_timezone

default_ui_timezone 中的默认 Apache Airflow UI 的日期时间设置。

注意

设置 default_ui_timezone 选项不会更改 DAG 计划运行的时区。要更改 DAG 的时区,您可以使用自定义插件。有关更多信息,请参阅 在 Amazon MWAA 上更改 DAG 的时区

America/New_York

触发器配置

以下列表显示了在 Amazon MWAA 上可用的 Apache Airflow 触发器的配置。

Apache Airflow v2
Airflow 版本 Airflow 配置选项 描述 示例值

v2.7

mwaa.triggerer_enabled

用于在 Amazon MWAA 上激活和停用触发器。默认情况下,该值设置为 True。如果设置为 False,Amazon MWAA 将不会在计划程序上启动任何触发器进程。

True

v2.7

triggerer.default_capacity

定义每个触发器可以并行运行的触发器数量。在 Amazon MWAA 上,此容量是按每个触发器和每个计划程序设置的,因为这两个组件并排运行。1000对于小型、中型和大型实例60125每个调度程序的默认值分别设置为、、、、,xlarge 和 2xlarge 实例。250 500

125

示例和示例代码

示例 DAG

您可以使用以下 DAG 来打印 email_backend Apache Airflow 配置选项。要运行以响应 Amazon MWAA 事件,请将代码复制到 Amazon S3 存储桶上环境的 DAG 文件夹。

from airflow.decorators import dag from datetime import datetime def print_var(**kargs): email_backend = kwargs['conf'].get(section='email', key='email_backend') print("email_backend") return email_backend @dag( dag_id="print_env_variable_example", schedule_interval=None, start_date=datetime(yyyy, m, d), catchup=False, ) def print_variable_dag(): email_backend_test = PythonOperator( task_id="email_backend_test", python_callable=print_var, provide_context=True print_variable_test = print_variable_dag()

示例电子邮件通知设置

以下 Apache Airflow 配置选项可用于使用应用程序密码的 Gmail.com 电子邮件帐户。有关更多信息,请参阅《Gmail 帮助参考指南》中的使用应用程序密码登录


          此图显示了如何使用 MWAA 控制台上的 Apache Airflow 配置选项配置 gmail.com 电子邮件帐户。

接下来做什么?

  • 要了解如何将 DAG 文件夹上传到 Amazon S3 存储桶,请参阅 添加或更新 DAG