本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本页描述了您在使用 Amazon MWAA 时可能遇到的常见问题。
目录
支持的版本
Amazon MWAA 对 Apache Airflow v2 支持什么?
要了解 Amazon MWAA 支持的内容,请参阅 Amazon MWAA 上的 Apache Airflow 版本。
为什么不支持旧版本的 Apache Airflow?
由于较旧版本存在安全问题,我们仅支持最新的(截至发布时的)Apache Airflow 版本,即 Apache Airflow v1.10.12。
我应使用何种版本的 Python 版本?
Amazon MWAA 上支持以下 Apache Airflow 版本。
注意
-
从 Apache Airflow v2.2.2 开始,Amazon MWAA 支持直接在 Apache Airflow 网络服务器上安装 Python 要求、提供程序包和自定义插件。
-
从 Apache Airflow v2.7.2 开始,要求文件必须包含一条
--constraint
语句。如果您未提供约束条件,Amazon MWAA 将为您指定一个约束条件,以确保您的要求中列出的程序包与您正在使用的 Apache Airflow 版本兼容。有关在需求文件中设置约束条件的更多信息,请参阅安装 Python 依赖项。
Apache Airflow 版本 | Apache Airflow 指南 | Apache Airflow 约束条件 | Python 版本 |
---|---|---|---|
有关迁移自管理的 Apache Airflow 部署或迁移现有 Amazon MWAA 环境的更多信息,包括备份元数据数据库的说明,请参阅Amazon MWAA 迁移指南。
Amazon MWAA 使用 pip
的什么版本?
对于运行 Apache Airflow v1.10.12 的环境,Amazon MWAA 会安装 21.1.2 版 pip
。
注意
Amazon MWAA 不会升级 Apache Airflow v1.10.12 环境的 pip
。
对于运行 Apache Airflow v2 及更高版本的环境,Amazon MWAA 安装版本 21.3.1 版 pip
。
使用案例
我应该什么时候使用 AWS Step Functions vs. 亚马逊 MWAA?
-
您可以使用 Step Functions 来处理个人客户订单,因为 Step Functions 可以扩展以满足对一个订单或一百万个订单的需求。
-
如果您运行的是夜间工作流程来处理前一天的订单,则可以使用 Step Functions 或 Amazon MWAA。Amazon MWAA 允许您使用开源选项,将工作流程从您正在使用的 AWS 资源中抽象出来。
环境通知
每个环境有多少任务存储空间可用?
任务存储空间限制为 20 GB,由 Amazon ECS Fargate 1.4 指定。RAM 量由您指定的环境类决定。有关环境类的更多信息,请参阅 配置 Amazon MWAA 环境类。
Amazon MWAA 环境使用的默认操作系统是什么?
Amazon MWAA 环境是在运行 2.6 及更早版本的 Amazon Linux 2 的实例上创建的,以及在运行 2.7 及更高版本的 Amazon Linux 2023 的实例上创建的。
我能否为我的 Amazon MWAA 环境使用自定义镜像?
不支持自定义镜像。Amazon MWAA 使用基于 Amazon Linux AMI 构建的镜像。对于您添加到环境的 Amazon S3 存储桶中的 requirements.txt 文件中指定的要求,Amazon MWAA 通过运行 pip3 -r install
来安装额外要求。
Amazon MWAA 是否符合 HIPAA 标准?
Amazon MWAA 符合《健康保险流通与责任法案(HIPAA)》
Amazon MWAA 是否支持竞价型实例?
亚马逊 MWAA 目前不支持 Apache Airflow 的按需亚马逊 EC2 竞价型实例类型。但是,亚马逊 MWAA 环境可以在亚马逊 EMR 和亚马逊等平台上触发竞价型实例。 EC2
Amazon MWAA 是否支持自定义域?
要使用自定义域作为 Amazon MWAA 主机名,请执行以下操作之一:
-
对于具有公共 Web 服务器访问权限的 Amazon MWAA 部署,您可以使用带有 CloudFront Lambda @Edge 的亚马逊将流量引导到您的环境,并将自定义域名映射到。 CloudFront有关更多信息以及为公共环境设置自定义域的示例,请参阅 Amazon MWAA 示例存储库中的公有 Web 服务器的 Amazon MWAA 自定义域
示例。 GitHub -
有关具有私有 Web 服务器访问权限的 Amazon MWAA 部署,请参阅为 Apache Airflow Web 服务器设置自定义域。
我能否通过 SSH 进入我的环境?
虽然 Amazon MWAA 环境不支持 SSH,但可以使用 DAG 通过使用 BashOperator
来运行 bash 命令。例如:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
with DAG(dag_id="any_bash_command_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
cli_command = BashOperator(
task_id="bash_command",
bash_command="{{ dag_run.conf['command'] }}"
)
要在 Apache Airflow UI 中触发 DAG,请使用:
{ "command" : "your bash command"}
为什么 VPC 安全组需要自引用规则?
通过创建自引用规则,您可以将源限制为 VPC 中的同一安全组,而不将其对所有网络开放。要了解更多信息,请参阅 Amazon MWAA 上的 VPC 安全。
我能否在 IAM 中向不同的群组隐藏环境?
您可以通过在中指定环境名称来限制访问权限 AWS Identity and Access Management,但是, AWS 控制台中不提供可见性筛选,如果用户可以看到一个环境,他们就可以看到所有环境。
我能否在 Apache Airflow 工作线程上存储临时数据?
Apache Airflow 运算符可以在工作线程上存储临时数据。Apache Airflow 工作线程可以访问环境的 Fargate 容器上的 /tmp
中的临时文件。
注意
根据 Amazon ECS Fargate 1.4,任务总存储空间限制在 20 GB 以内。无法保证后续任务将在同一 Fargate 容器实例上运行,该实例可能会使用不同的 /tmp
文件夹。
我能否指定超过 25 个 Apache Airflow 工作线程?
是。尽管您可以在 Amazon MWAA 控制台上指定最多 25 个 Apache Airflow 工作线程,但您可以通过请求增加配额在环境中配置多达 50 个 Apache Airflow 工作线程。有关更多信息,请参阅 Requesting a quota increase(请求增加限额)。
Amazon MWAA 是否支持共享亚马逊 VPCs 或共享子网?
Amazon MWAA 不支持共享的亚马逊 VPCs 或共享子网。您在创建环境时选择的 Amazon VPC 应由尝试创建环境的账户拥有。但是,您可以将流量从 Amazon MWAA 账户中的 Amazon VPC 路由到共享 VPC。有关更多信息以及要查看将流量路由到共享 Amazon VPC 的示例,请参阅《Amazon VPC 中转网关指南》中的集中出站路由到互联网。
我能否创建或集成自定义 Amazon SQS 队列来管理 Apache Airflow 中的任务执行和工作流程编排?
不可以,您不能在 Amazon MWAA 中创建、修改或使用自定义 Amazon SQS 队列。这是因为亚马逊 MWAA 会自动为每个亚马逊 MWAA 环境预配置和管理自己的亚马逊 SQS 队列。
Metrics
使用哪些指标来确定是否扩展工作线程?
Amazon MWAA 会监控QueuedTasks并RunningTasks进入, CloudWatch 以确定是否在您的环境中扩展 Apache Airflow W or kers。要了解更多信息,请参阅 Amazon MWAA 的监控和指标。
我可以在中创建自定义指标 CloudWatch吗?
不在 CloudWatch 主机上。但是,您可以创建在中写入自定义指标的 DAG CloudWatch。有关更多信息,请参阅 使用 DAG 在中写入自定义指标 CloudWatch。
DAGs、操作员、连接和其他问题
我能否使用 PythonVirtualenvOperator
?
Amazon MWAA 未明确支持 PythonVirtualenvOperator
,但您可以创建一个使用 PythonVirtualenvOperator
的自定义插件。有关代码示例,请参阅 为 Apache Airflow 创建自定义插件 PythonVirtualenvOperator。
Amazon MWAA 需要多长时间才能识别新的 DAG 文件?
DAGs 会定期从 Amazon S3 存储桶同步到您的环境。如果您添加新的 DAG 文件,Amazon MWAA 大约需要 300 秒才能开始使用新文件。如果您更新现有的 DAG,Amazon MWAA 大约需要 30 秒才能识别更新。
这些值分别对应于 Apache Airflow DAGs 配置选项和 DAGs,分别对应于 Apache Airflow 配置选项dag_dir_list_interval
min_file_process_interval
为什么 Apache Airflow 没有采集我的 DAG 文件?
以下是此问题的可能解决方案:
-
检查执行角色是否具有对 Amazon S3 存储桶的足够权限。要了解更多信息,请参阅 Amazon MWAA 执行角色。
-
检查 Amazon S3 存储桶是否已配置阻止公共访问并启用版本控制。要了解更多信息,请参阅 为 Amazon MWAA 创建 Amazon S3 存储桶。。
-
验证 DAG 文件本身。例如,请确保每个 DAG 都有一个唯一的 DAG ID。
我能否从环境中移除 plugins.zip
或 requirements.txt
?
目前,没有办法在添加 plugins.zip 或 requirements.txt 后将其从环境中删除,但我们正在努力解决这个问题。在此期间,变通方法是分别指向空文本或 zip 文件。要了解更多信息,请参阅 删除 Amazon S3 上的文件。
为什么我在 Apache Airflow v2.0.2 管理员插件菜单中看不到我的插件?
出于安全原因,Amazon MWAA 上的 Apache Airflow Web 服务器的网络出口流量有限,并且不会直接在 2.0.2 版本环境的 Apache Airflow Web 服务器上安装插件或 Python 依赖项。显示的插件允许亚马逊 MWAA 在 (IAM) 中 AWS Identity and Access Management 对你的 Apache Airflow 用户进行身份验证。
为了能够直接在 Web 服务器上安装插件和 Python 依赖项,我们建议使用 Apache Airflow v2.2 及更高版本创建一个新环境。Amazon MWAA 直接在 Apache Airflow v2.2 及更高版本的 Web 服务器上安装 Python 依赖项和自定义插件。
我可以使用 AWS 数据库迁移服务 (DMS) 运算符吗?
Amazon MWAA 支持 DMS 运算符
当我使用 AWS 凭证访问 Airflow REST API 时,我能否将限制限制提高到每秒 10 笔以上的交易 (TPS)?
是的,可以。要提高节流限制,请联系 AWS 客户支持