

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

# 探索 Amazon MWAA 网络架构
<a name="mwaa-architecture"></a>

下一节介绍构成 Amazon MWAA 环境的主要组件，以及每个环境为管理其资源、保护数据安全以及为工作流程提供监控和可见性而集成的一组 AWS 服务。

**Topics**
+ [Amazon MWAA 组件](#architecture-components)
+ [连接](#networking-requirements)

## Amazon MWAA 组件
<a name="architecture-components"></a>

 Amazon MWAA 环境由以下四个主要组件组成：

1.  **计划程序**— 解析和监控所有 DAG，并在满足 DAG 的依赖项时对任务进行排队，以便执行。Amazon MWAA 将计划程序部署为至少有 2 个计划程序的 AWS Fargate 集群。根据工作负载，您可以将计划程序数量增加到五个。有关 Amazon MWAA 环境类的更多信息，请参阅 [Amazon MWAA 环境类](https://docs.aws.amazon.com/mwaa/latest/userguide/environment-class.html)。

1.  **工作线程**— 运行计划任务的一个或多个 Fargate 任务。环境中的工作线程数量由您指定的*最小*和*最大*数量之间的范围决定。当排队和正在运行的任务数量超过现有工作线程的处理能力时，Amazon MWAA 会开始自动扩缩工作线程。当正在运行且排队的任务总和为零超过两分钟时，Amazon MWAA 会将工作线程数量缩减到最低。有关 Amazon MWAA 如何处理自动扩缩工作线程的更多信息，请参阅 [Amazon MWAA 自动扩缩](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-autoscaling.html)。

1.  **Web 服务器**— 运行 Apache Airflow Web UI。您可以将 Web 服务器配置为[私有或公有](https://docs.aws.amazon.com/mwaa/latest/userguide/vpc-vpe-access.html#vpc-vpe-about)网络访问权限。在这两种情况下，Apache Airflow 用户的访问权限都由您在 AWS Identity and Access Management (IAM) 中定义的访问控制策略控制。有关为环境配置 IAM 访问策略的更多信息，请参阅[访问 Amazon MWAA 环境](https://docs.aws.amazon.com/mwaa/latest/userguide/access-policies.html)。

1.  **数据库**— 存储有关 Apache Airflow 环境和工作流程的元数据，包括 DAG 运行历史记录。该数据库是由 AWS 托管的单租户 Aurora PostgreSQL 数据库，可通过私有保护的 Amazon VPC 端点从计划程序和工作线程的 Fargate 容器访问。

 每个 Amazon MWAA 环境还与一组 AWS 服务交互以处理各种任务，包括存储和访问 DAG 和任务依赖项、保护静态数据以及记录和监控环境。下图演示了 Amazon MWAA 环境的不同组件。

![\[此图显示了 Amazon MWAA 环境的架构。\]](http://docs.aws.amazon.com/zh_cn/mwaa/latest/migrationguide/images/mwaa-architecture.png)


**注意**  
 服务 Amazon VPC 不是共享 VPC。Amazon MWAA 会为您创建的每个环境创建一个 AWS 自有的 VPC。
+  **Amazon S3**— Amazon MWAA 将所有工作流程资源（例如 DAG、要求和插件文件）存储在 Amazon S3 存储桶中。有关创建存储桶作为创建环境的一部分以及上传 Amazon MWAA 资源的更多信息，请参阅*《Amazon MWAA 用户指南》*中的[为 Amazon MWAA 创建 Amazon S3 存储桶](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-s3-bucket.html)。
+  **Amazon SQS** — Amazon MWAA 使用 Amazon SQS 将工作流程任务与 [Celery 执行程序](https://airflow.apache.org/docs/apache-airflow/stable/executor/celery.html)一起排队。
+  **Amazon ECR** — Amazon ECR 托管所有 Apache Airflow 镜像。Amazon MWAA 仅支持 AWS 托管 Apache Airflow 镜像。
+  **AWS KMS**— Amazon MWAA 使用 AWS KMS 来确保静态数据安全。默认情况下，Amazon MWAA 使用 [AWS 托管的 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)，但您可以将环境配置为使用您自己的[由客户托管](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)的 AWS KMS 密钥。有关使用您自己的由客户托管的 AWS KMS 密钥的更多信息，请参阅*《Amazon MWAA 用户指南》*中的[用于数据加密的由客户托管的密钥](https://docs.aws.amazon.com/mwaa/latest/userguide/custom-keys-certs.html)。
+  **CloudWatch**— Amazon MWAA 与 CloudWatch 集成，并向 CloudWatch 提供 Apache Airflow 日志和环境指标，允许您监控 Amazon MWAA 资源并排查问题。

## 连接
<a name="networking-requirements"></a>

 Amazon MWAA 环境需要访问与其集成的所有 AWS 服务。Amazon MWAA [执行角色](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html)控制如何授予 Amazon MWAA 代表您连接其他 AWS 服务的访问权限。要实现网络连接，您可以为 Amazon VPC 提供公共互联网访问权限，也可以创建 Amazon VPC 端点。有关为环境配置 Amazon VPC 端点 (AWS PrivateLink) 的更多信息，请参阅*《Amazon MWAA 用户指南》*中的[在 Amazon MWAA 上管理对 VPC 端点的访问](https://docs.aws.amazon.com/mwaa/latest/userguide/vpc-vpe-access.html)。

 Amazon MWAA 在计划程序和工作线程上安装要求。如果您的要求来自公共 [PyPI](https://pypi.org/) 存储库，则环境需要连接到互联网才能下载所需的库。对于私有环境，您可以使用私有 PyPI 存储库，也可以将这些库捆绑成 [`.whl` 文件](https://docs.aws.amazon.com/mwaa/latest/userguide/best-practices-dependencies.html)作为环境的自定义插件。

 当您在[私有模式下](https://docs.aws.amazon.com/mwaa/latest/userguide/vpc-vpe-access.html#vpc-vpe-about-private)配置 Apache Airflow 时，Amazon VPC 只能通过Amazon VPC 端点访问 Apache Airflow UI。

 有关联网的更多信息，请参阅*《Amazon VPC 用户指南》*中的[联网](https://docs.aws.amazon.com/mwaa/latest/userguide/networking.html)。