

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

# Amazon MWAA 的教程
<a name="tutorials"></a>

本指南包括使用和配置适用于 Apache Airflow 的亚马逊托管工作流程环境的 step-by-step教程。

**Topics**
+ [教程：使用 AWS Client VPN 配置私有网络访问权限](tutorials-private-network-vpn-client.md)
+ [教程：使用 Linux 堡垒主机配置私有网络访问权限](tutorials-private-network-bastion.md)
+ [教程：限制 Amazon MWAA 用户访问其中的一个子集 DAGs](limit-access-to-dags.md)
+ [教程：在 Amazon MWAA 上自动管理您自己的环境端点](tutorials-customer-managed-endpoints.md)

# 教程：使用 AWS Client VPN 配置私有网络访问权限
<a name="tutorials-private-network-vpn-client"></a>

本教程将引导您完成为 Amazon MWAA 环境创建从计算机到 Apache Airflow Web 服务器的 VPN 隧道的步骤。要通过 VPN 隧道连接到互联网，您首先需要创建一个 AWS Client VPN 端点。设置完成后，客户端 VPN 端点将充当 VPN 服务器，允许计算机与 VPC 中的资源进行安全连接。然后，您将使用[桌面版 AWS Client VPN](https://aws.amazon.com/vpn/client-vpn-download/) 从电脑连接到客户端 VPN。

**Topics**
+ [私有网络](#private-network-vpn-onconsole)
+ [使用案例](#private-network-vpn-usecases)
+ [开始前的准备工作](#private-network-vpn-prereqs)
+ [目标](#private-network-vpn-objectives)
+ [（可选）步骤 1：确定 VPC、CIDR 规则和 VPC 安全](#private-network-vpn-optional)
+ [步骤 2：创建服务器证书和客户端证书](#private-network-vpn-certs)
+ [步骤 3：将 CloudFormation 模板保存到本地](#private-network-vpn-template)
+ [步骤 4：创建客户端 VPN CloudFormation 堆栈](#private-network-vpn-create)
+ [步骤 5：将子网关联到客户端 VPN](#private-network-vpn-associate)
+ [步骤 6：为客户端 VPN 添加授权入口规则](#private-network-vpn-autho)
+ [步骤 7：下载客户端 VPN 端点配置文件](#private-network-vpn-download)
+ [步骤 8：连接到 AWS Client VPN](#private-network-vpn-connect)
+ [接下来做什么？](#create-vpc-vpn-next-up)

## 私有网络
<a name="private-network-vpn-onconsole"></a>

本教程假设您已为 Apache Airflow Web 服务器选择了**私有网络**访问模式。

![\[此图显示了带有私有 Web 服务器的 Amazon MWAA 环境的架构。\]](http://docs.aws.amazon.com/zh_cn/mwaa/latest/userguide/images/mwaa-private-web-server.png)


私有网络访问模式将访问 Apache Airflow UI 的权限限制为* Amazon VPC 中*已获准访问[环境 IAM 策略](access-policies.md)的用户。

创建具有私有 Web 服务器访问权限的环境时，必须将所有依赖项打包到 Python Wheel 档案 (`.whl`) 中，然后在 `requirements.txt` 中引用 `.whl`。有关使用 Wheel 打包和安装依赖项的说明，请参阅[使用 Python Wheel 管理依赖项](best-practices-dependencies.md#best-practices-dependencies-python-wheels)。

下图描述了在 Amazon MWAA 控制台上哪里可以找到**私有网络**选项。

![\[此图描述了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。\]](http://docs.aws.amazon.com/zh_cn/mwaa/latest/userguide/images/mwaa-console-private-network.png)


## 使用案例
<a name="private-network-vpn-usecases"></a>

您可以在创建 Amazon MWAA 环境之前或之后使用本教程。您必须使用与您的环境相同的 Amazon VPC、VPC 安全组和私有子网。如果您在创建 Amazon MWAA 环境后使用本教程，则在完成这些步骤后，您可以返回 Amazon MWAA 控制台并将 Apache Airflow Web 服务器访问模式更改为**私有网络**。

## 开始前的准备工作
<a name="private-network-vpn-prereqs"></a>

1. 检查用户权限。请确保您在 AWS Identity and Access Management (IAM) 中的账户拥有足够的权限来创建和管理 VPC 资源。

1. 使用 Amazon MWAA VPC。本教程假设您正在将客户端 VPN 关联到现有 VPC。Amazon VPC 必须与 Amazon MWAA 环境位于同一 AWS 区域，并且有两个私有子网。如果您尚未创建 Amazon VPC，请使用 CloudFormation 模板，如 [选项三：创建*不可*访问互联网的 Amazon VPC 网络](vpc-create.md#vpc-create-template-private-only) 所示。

## 目标
<a name="private-network-vpn-objectives"></a>

在本教程中，您将执行以下操作：

1. 使用现有 Amazon VPC 的 CloudFormation 模板创建 AWS Client VPN 端点。

1. 生成服务器和客户端证书和密钥，然后将服务器证书和密钥上传到与 Amazon MWAA 环境同一 AWS 区域 的 AWS Certificate Manager。

1. 为客户端 VPN 下载并修改客户端 VPN 端点配置文件，然后使用该文件创建 VPN 配置文件，以便使用桌面版客户端 VPN 进行连接。

## （可选）步骤 1：确定 VPC、CIDR 规则和 VPC 安全
<a name="private-network-vpn-optional"></a>

下一节介绍如何为 Amazon VPC、VPC 安全组查找 ID，以及在后续步骤中识别创建客户端 VPN 所需的 CIDR 规则的方法。

### 确定 CIDR 规则
<a name="private-network-vpn-cidr"></a>

下一节介绍如何识别 CIDR 规则，您需要使用这些规则来创建客户端 VPN。

**识别客户端 VPN 的 CIDR**

1. 在 Amazon VPC 控制台，打开[ Amazon VPC 页面](https://console.aws.amazon.com/vpc/home#/vpcs:)。

1. 使用导航栏中的区域选择器选择与 Amazon MWAA 环境相同的 AWS 区域。

1. 选择 Amazon VPC。

1. 假设私有子网的 CIDR 是：
   + 私有子网 1：10.192.10.0`/24`
   + 私有子网 2：10.192.11.0`/24`

   如果 Amazon VPC 的 CIDR 是 10.192.0.0`/16`，那么您为客户端 VPN 指定的**客户端 IPv4 CIDR** 将是 10.192.0.0`/22`。

1. 保存此 CIDR 值以及 VPC ID 的值以供后续步骤使用。

### 识别 VPC 和安全组
<a name="private-network-vpn-sec"></a>

下一节介绍如何查找创建客户端 VPC 所需的 Amazon VPC 和安全组的 ID。

**注意**  
您可能正在使用多个安全组。在后续步骤中，您需要指定所有 VPC 的安全组。

**识别安全组**

1. 在 Amazon VPC 控制台打开[安全组页面](https://console.aws.amazon.com/vpc/home#/securityGroups:)。

1. 在导航栏中，使用区域选择器来选择 AWS 区域。

1. 在 **VPC ID** 中搜索 Amazon VPC，然后识别与 VPC 关联的安全组。

1. 保存安全组和 VPC 的 ID，以供后续步骤使用。

## 步骤 2：创建服务器证书和客户端证书
<a name="private-network-vpn-certs"></a>

客户端 VPN 端点仅支持 1024 位和 2048 位 RSA 密钥大小。下一节介绍如何使用 OpenVPN easy-rsa 生成服务器和客户端证书和密钥，然后使用 AWS Command Line Interface (AWS CLI) 将证书上传到 ACM。

**创建客户端证书**

1. 按照以下快速步骤，通过在[客户端身份验证和授权：相互身份验证](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/client-authentication.html#mutual)中的 AWS CLI 创建证书并将其上传到 ACM。

1. 在这些步骤中，在上传服务器和客户端证书时，您**必须**在 AWS CLI 命令中指定与 Amazon MWAA 环境相同的 AWS 区域。以下是有关如何在这些命令中指定区域的一些示例：

   1.   
**Example 服务器证书的区域**  

      ```
      aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt --region us-west-2
      ```

   1.   
**Example 客户端证书的区域**  

      ```
      aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt --region us-west-2
      ```

   1. 完成这些步骤后，保存在服务器证书和客户端证书 ARN 的 AWS CLI 响应中返回的值。您将在 CloudFormation 模板中指定这些 ARN 来创建客户端 VPN。

1. 在这些步骤中，客户端证书和私钥将保存到计算机中。以下是有关在哪里可以找到这些凭证的示例：

   1.   
**Example 在 macOS 上**  

      在 macOS 上，内容保存在 `/Users/your-user/custom_folder`。如果您列出此目录的所有 (`ls -a`) 内容，则会看到类似以下的内容：

      ```
      .
      ..
      ca.crt
      client1.domain.tld.crt
      client1.domain.tld.key
      server.crt
      server.key
      ```

   1. 完成这些步骤后，保存内容或在 `client1.domain.tld.crt` 中记下客户端证书的位置，以及在 `client1.domain.tld.key` 中记下私钥的位置。您将把这些值添加到客户端 VPN 的配置文件中。

## 步骤 3：将 CloudFormation 模板保存到本地
<a name="private-network-vpn-template"></a>

下一节包含创建客户端 VPN 的 CloudFormation 模板。您必须指定与 Amazon MWAA 环境相同的 Amazon VPC、VPC 安全组和私有子网。
+ 复制以下模板的内容并将其作为 `mwaa_vpn_client.yaml` 保存在本地中。您也可以使用[下载模板](./samples/mwaa_vpn_client.zip)。

  替换以下值：
  + **YOUR\$1CLIENT\$1ROOT\$1CERTIFICATE\$1ARN**— 在 `ClientRootCertificateChainArn` 中的 **client1.domain.tld** 证书的 ARN。
  + **YOUR\$1SERVER\$1CERTIFICATE\$1ARN**— 在 `ServerCertificateArn` 中的**服务器**证书的 ARN。
  + 在 `ClientCidrBlock` 中的客户端 IPv4 CIDR 规则。提供 `10.192.0.0/22` 的 CIDR 规则。
  + Amazon VPC ID，如 `VpcId` 所示。提供 `vpc-010101010101` 的 VPC。
  + VPC 安全组 ID，如 `SecurityGroupIds` 所示。提供了 `sg-0101010101` 的安全组。

  ```
  AWSTemplateFormatVersion: 2010-09-09
  Description: This template deploys a VPN Client Endpoint.
  Resources:
    ClientVpnEndpoint:
      Type: 'AWS::EC2::ClientVpnEndpoint'
      Properties:
        AuthenticationOptions:
          - Type: "certificate-authentication"
            MutualAuthentication:
              ClientRootCertificateChainArn: "YOUR_CLIENT_ROOT_CERTIFICATE_ARN"
        ClientCidrBlock: 10.192.0.0/22
        ClientConnectOptions:
          Enabled: false
        ConnectionLogOptions:
          Enabled: false
        Description: "MWAA Client VPN"
        DnsServers: []
        SecurityGroupIds:
          - sg-0101010101
        SelfServicePortal: ''
        ServerCertificateArn: "YOUR_SERVER_CERTIFICATE_ARN"
        SplitTunnel: true
        TagSpecifications:
          - ResourceType: "client-vpn-endpoint"
            Tags:
            - Key: Name
              Value: MWAA-Client-VPN
        TransportProtocol: udp
        VpcId: vpc-010101010101
        VpnPort: 443
  ```

**注意**  
如果您在环境中使用多个安全组，则可以按以下格式指定多个安全组：  

```
SecurityGroupIds:
 - sg-0112233445566778b
 - sg-0223344556677889f
```

## 步骤 4：创建客户端 VPN CloudFormation 堆栈
<a name="private-network-vpn-create"></a>

**创建 AWS Client VPN**

1. 打开 [AWS CloudFormation 管理控制台](https://console.aws.amazon.com/cloudformation/home#)。

1. 选择**模板已准备就绪**，然后选择**上传模板文件**。

1. 选择**选择文件**，然后选择 `mwaa_vpn_client.yaml` 文件。

1. 选择**下一步**、**下一步**。

1. 选择堆栈，然后选择**创建堆栈**。

## 步骤 5：将子网关联到客户端 VPN
<a name="private-network-vpn-associate"></a>

**要将私有子网关联到 AWS Client VPN，请执行以下操作**

1. 打开 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/home#)。

1. 选择**客户端 VPN 端点**页面。

1. 选择客户端 VPN，然后选择**关联**选项卡、**关联**。

1. 在下拉列表中选择以下内容：
   + Amazon VPC，如 **VPC** 所示。
   + 在**选择要关联的子网**中的一个私有子网。

1. 选择**关联**。

**注意**  
VPC 和子网关联到客户端 VPN 需要几分钟时间。

## 步骤 6：为客户端 VPN 添加授权入口规则
<a name="private-network-vpn-autho"></a>

您需要使用 VPC 的 CIDR 规则向客户端 VPN 添加授权入口规则。如果您想授权来自 Active Directory 组或基于 SAML 的身份提供者 (IdP) 中的特定用户或组，请参阅*《客户端 VPN 指南》*中的[授权规则](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-working-rules.html)。

**要将 CIDR 添加到 AWS Client VPN，请执行以下操作**

1. 打开 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/home#)。

1. 选择**客户端 VPN 端点**页面。

1. 选择客户端 VPN，然后选择**授权**选项卡、**授权入口**。

1. 指定以下内容：
   + 要在**目标网络中启用** Amazon VPC 的 CIDR 规则。例如：

     ```
     10.192.0.0/16
     ```
   + 在**授予访问权限**中，选择**允许所有用户访问**。
   + 在**描述**中，输入一个描述性名称。

1. 选择**添加授权规则**。

**注意**  
根据 Amazon VPC 的联网组件，您可能还需要将此授权入口规则添加到网络访问控制列表 (NACL) 中。

## 步骤 7：下载客户端 VPN 端点配置文件
<a name="private-network-vpn-download"></a>

**下载配置文件**

1. 按照以下快速步骤在[下载客户端 VPN 端点配置文件](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html#cvpn-getting-started-config)中下载客户端 VPN 配置文件。

1. 在这些步骤中，系统会要求您在客户端 VPN 端点 DNS 名称前面加一个字符串。示例如下：

   1.   
**Example 端点 DNS 名称**  

     如果客户端 VPN 端点 DNS 名称为：

     ```
     remote cvpn-endpoint-0909091212aaee1.prod.clientvpn.us-west-1.amazonaws.com 443
     ```

     您可以添加一个字符串来识别客户端 VPN 端点，如下所示：

     ```
     remote mwaavpn.cvpn-endpoint-0909091212aaee1.prod.clientvpn.us-west-1.amazonaws.com 443
     ```

1. 在这些步骤中，系统会要求您在一组新 `<cert></cert>` 标签之间添加客户端证书的内容，而在一组新 `<key></key>` 标签之间添加私有密钥的内容。示例如下：

   1. 打开命令提示符并将目录更改为客户端证书和私钥的位置。

   1.   
**Example macOS client1.domain.tld.crt**  

      要在 macOS 上显示 `client1.domain.tld.crt` 文件内容，您可以使用 `cat client1.domain.tld.crt`。

      从终端复制值并粘贴在 `downloaded-client-config.ovpn` 中，如下所示：

      ```
      ZZZ1111dddaBBB
      -----END CERTIFICATE-----
      </ca>
      <cert>
      -----BEGIN CERTIFICATE-----
      YOUR client1.domain.tld.crt
      -----END CERTIFICATE-----                
      </cert>
      ```

   1.   
**Example macOS client1.domain.tld.key**  

      要显示 `client1.domain.tld.key` 文件内容，您可以使用 `cat client1.domain.tld.key`。

      从终端复制值并粘贴在 `downloaded-client-config.ovpn` 中，如下所示：

      ```
      ZZZ1111dddaBBB
      -----END CERTIFICATE-----
      </ca>
      <cert>
      -----BEGIN CERTIFICATE-----
      YOUR client1.domain.tld.crt
      -----END CERTIFICATE-----                
      </cert>
      <key>
      -----BEGIN CERTIFICATE-----
      YOUR client1.domain.tld.key
      -----END CERTIFICATE-----                
      </key>
      ```

## 步骤 8：连接到 AWS Client VPN
<a name="private-network-vpn-connect"></a>

AWS Client VPN 的客户端是免费提供的。您可以将计算机直接连接到 AWS Client VPN，以获得端到端的 VPN 体验。

**连接到客户端 VPN**

1. 下载并安装[桌面版 AWS Client VPN](https://aws.amazon.com/vpn/client-vpn-download/)。

1. 打开 AWS Client VPN。

1. 在 VPN 客户端菜单中选择**文件**、**托管配置文件**。

1. 选择**添加配置文件**，然后选择 `downloaded-client-config.ovpn`。

1. 在**显示名称**中输入描述性名称。

1. 选择**添加配置文件**，**完成**。

1. 选择**连接**。

连接到客户端 VPN 后，您需要断开与其他 VPN 的连接才能访问 Amazon VPC 中的任何资源。

**注意**  
您可能需要退出客户端，然后重新开始，然后才能建立连接。

## 接下来做什么？
<a name="create-vpc-vpn-next-up"></a>
+ 要了解如何创建 Amazon MWAA 环境，请参阅 [开始使用 Amazon MWAA](get-started.md)。您必须在客户端 VPN 所在的 AWS 区域 中创建环境，并使用与客户端 VPN 相同的 VPC、私有子网和安全组。

# 教程：使用 Linux 堡垒主机配置私有网络访问权限
<a name="tutorials-private-network-bastion"></a>

本教程将引导您完成为 Amazon MWAA 环境创建从计算机到 Apache Airflow Web 服务器的 SSH 隧道的步骤。本教程假设您已经创建了 Amazon MWAA 环境。设置完成后，Linux 堡垒主机将充当跳转服务器，允许计算机与 VPC 中的资源进行安全连接。然后，您将使用 SOCKS 代理管理附加组件来控制浏览器中的代理设置，以访问 Apache Airflow UI。

**Topics**
+ [私有网络](#private-network-lb-onconsole)
+ [使用案例](#private-network-lb-usecases)
+ [开始前的准备工作](#private-network-lb-prereqs)
+ [目标](#private-network-lb-objectives)
+ [步骤 1：创建堡垒机实例](#private-network-lb-create-bastion)
+ [步骤 2：创建 SSH 隧道](#private-network-lb-create-test)
+ [步骤 3：将堡垒机安全组配置为入站规则](#private-network-lb-create-sgsource)
+ [步骤 4：复制 Apache Airflow URL](#private-network-lb-view-env)
+ [步骤 5：配置代理设置](#private-network-lb-browser-extension)
+ [步骤 6：打开 Apache Airflow UI](#private-network-lb-open)
+ [接下来做什么？](#bastion-next-up)

## 私有网络
<a name="private-network-lb-onconsole"></a>

本教程假设您已为 Apache Airflow Web 服务器选择了**私有网络**访问模式。

![\[此图显示了带有私有 Web 服务器的 Amazon MWAA 环境的架构。\]](http://docs.aws.amazon.com/zh_cn/mwaa/latest/userguide/images/mwaa-private-web-server.png)


私有网络访问模式将访问 Apache Airflow UI 的权限限制为* Amazon VPC 中*已获准访问[环境 IAM 策略](access-policies.md)的用户。

创建具有私有 Web 服务器访问权限的环境时，必须将所有依赖项打包到 Python Wheel 档案 (`.whl`) 中，然后在 `requirements.txt` 中引用 `.whl`。有关使用 Wheel 打包和安装依赖项的说明，请参阅[使用 Python Wheel 管理依赖项](best-practices-dependencies.md#best-practices-dependencies-python-wheels)。

下图描述了在 Amazon MWAA 控制台上哪里可以找到**私有网络**选项。

![\[此图描述了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。\]](http://docs.aws.amazon.com/zh_cn/mwaa/latest/userguide/images/mwaa-console-private-network.png)


## 使用案例
<a name="private-network-lb-usecases"></a>

您可以在创建 Amazon MWAA 环境后使用本教程。您必须使用与环境相同的 Amazon VPC、VPC 安全组和公有子网。

## 开始前的准备工作
<a name="private-network-lb-prereqs"></a>

1. 检查用户权限。请确保您在 AWS Identity and Access Management (IAM) 中的账户拥有足够的权限来创建和管理 VPC 资源。

1. 使用 Amazon MWAA VPC。本教程假定您将堡垒主机关联到 VPC。Amazon VPC 必须与 Amazon MWAA 环境位于同一区域，并且拥有两个私有子网，如 [创建 VPC 网络](vpc-create.md) 中所定义。

1. 创建 SSH 密钥。您需要在与 Amazon MWAA 环境相同的区域创建 Amazon EC2 SSH 密钥（**.pem**）才能连接到虚拟服务器。如果您没有 SSH 密钥，请参阅*《Amazon EC2 用户指南》*中的[创建或导入密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#prepare-key-pair)。

## 目标
<a name="private-network-lb-objectives"></a>

在本教程中，您将执行以下操作：

1. 使用[现有 VPC 的CloudFormation模板](https://fwd.aws/vWMxm)创建 Linux 堡垒主机实例。

1. 使用端口 `22` 上的入口规则授权进入堡垒机实例安全组的入站流量。

1. 授权从 Amazon MWAA 环境的安全组流向堡垒机实例的安全组的入站流量。

1. 创建通往堡垒机实例的 SSH 隧道。

1. 安装并配置 Firefox 浏览器的 FoxyProxy 插件，以访问 Apache Airflow UI。

## 步骤 1：创建堡垒机实例
<a name="private-network-lb-create-bastion"></a>

下一节介绍在 CloudFormation 控制台上使用[现有 VPC 的 CloudFormation 模板](https://fwd.aws/vWMxm)创建 Linux 堡垒机实例的步骤。

**创建 Linux 堡垒主机**

1. 在 CloudFormation 控制台上打开[部署快速入门](https://fwd.aws/Jwzqv)页面。

1. 使用导航栏中的区域选择器选择与 Amazon MWAA 环境相同的 AWS 区域。

1. 选择**下一步**。

1. 在**堆栈名称**文本字段中输入名称，例如 `mwaa-linux-bastion`。

1. 在**参数**、**网络配置**窗格上，选择以下选项：

   1. 选择 Amazon MWAA 环境的 **VPC ID**。

   1. 选择 Amazon MWAA 环境的**公有子网 1 ID**。

   1. 选择 Amazon MWAA 环境的**公有子网 2 ID**。

   1. 在**允许的堡垒机外部**访问 CIDR 中输入尽可能窄的地址范围（例如，内部 CIDR 范围）。
**注意**  
识别范围的最简单方法是使用与公有子网相同的 CIDR 范围。例如，在 [创建 VPC 网络](vpc-create.md) 页面上的 CloudFormation 模板中，公有子网为 `10.192.10.0/24` 和 `10.192.11.0/24`。

1. 在** Amazon EC2 配置**窗格上，选择以下选项：

   1. 在**密钥对名称**的下拉列表中选择 SSH 密钥。

   1. 在**堡垒主机名**中输入名称。

   1. 对于 **TCP 转发**，选择 **true**。
**警告**  
在此步骤中，必须将 TCP 转发设置为 **true**。否则，您将无法在下一步创建 SSH 隧道。

1. 选择**下一步**、**下一步**。

1. 选择堆栈，然后选择**创建堆栈**。

要了解有关 Linux 堡垒主机架构的更多信息，请参阅 [AWS 云上的 Linux 堡垒主机：架构](https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html)。

## 步骤 2：创建 SSH 隧道
<a name="private-network-lb-create-test"></a>

以下步骤介绍如何创建通往 Linux 堡垒机的 SSH 隧道。SSH 隧道接收从本地 IP 地址发送到 Linux 堡垒机的请求，这就是为何在前述步骤中将 Linux 堡垒机的 TCP 转发设置为 `true`。

------
#### [ macOS/Linux ]

**使用命令行创建隧道**

1. 打开 Amazon EC2 控制台的[实例](https://console.aws.amazon.com/ec2/v2/home#/Instances:)页面。

1. 选择一个实例。

1. 复制**公有 IPv4 DNS**下的 IP 地址。例如 `ec2-4-82-142-1.compute-1.amazonaws.com`。

1. 在命令提示符下，导航到存储 SSH 密钥的目录。

1. 运行以下命令以使用 SSH 连接堡垒机实例。将示例值替换为 `mykeypair.pem` 中的 SSH 密钥名称。

   ```
   ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS
   ```

------
#### [ Windows (PuTTY) ]

**使用 PuTTTY 创建隧道**

1. 打开 Amazon EC2 控制台的[实例](https://console.aws.amazon.com/ec2/v2/home#/Instances:)页面。

1. 选择一个实例。

1. 复制**公有 IPv4 DNS**下的 IP 地址。例如 `ec2-4-82-142-1.compute-1.amazonaws.com`。

1. 打开 [Putty](https://www.putty.org/)，选择**会话**。

1. 在**主机名称**中将主机名输入为 ec2-user@*YOUR\$1PUBLIC\$1IPV4\$1DNS*，将**端口**输入为 `22`。

1. 展开 **SSH** 选项卡，选择**身份验证**。在**用于身份验证的私钥文件**中，选择本地“ppk”文件。

1. 在 SSH 下，选择**隧道**选项卡，然后选择*动态*和*自动*选项。

1. 在**源端口**中，添加 `8157` 端口（或任何其他未使用的端口），然后将**目标**端口留空。选择**添加**。

1. 选择**会话**选项卡并输入会话名称。例如 `SSH Tunnel`。

1. 选择**保存**，**打开**。
**注意**  
您可能需要为公有密钥输入密码短语。

------

**注意**  
如果您收到 `Permission denied (publickey)` 错误，我们建议您使用 [awsSupport-TroubleshotsSH 工具，然后选择**运行此自动化（控制台）**来排查](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-awssupport-troubleshootssh.html) SSH 设置故障。

## 步骤 3：将堡垒机安全组配置为入站规则
<a name="private-network-lb-create-sgsource"></a>

通过与这些服务器关联的特殊维护安全组，允许从服务器访问服务器和定期访问互联网。以下步骤介绍如何将堡垒机安全组配置为某环境的 VPC 安全组的入站流量来源。

1. 在 Amazon MWAA 控制台上打开[环境页面](https://console.aws.amazon.com/mwaa/home#/environments)。

1. 选择环境。

1. 在**联网**窗格上，选择 **VPC 安全组**。

1. 选择**编辑入站规则**。

1. 选择**添加规则**。

1. 在**源**下拉列表中选择 VPC 安全组 ID。

1. 将其余选项留空，或将其设置为默认值。

1. 选择**保存规则**。

## 步骤 4：复制 Apache Airflow URL
<a name="private-network-lb-view-env"></a>

以下步骤介绍如何打开 Amazon MWAA 控制台并将 URL 复制到 Apache Airflow UI。

1. 在 Amazon MWAA 控制台上打开[环境页面](https://console.aws.amazon.com/mwaa/home#/environments)。

1. 选择环境。

1. 在 **Airflow UI**中复制 URL 以执行后续步骤。

## 步骤 5：配置代理设置
<a name="private-network-lb-browser-extension"></a>

如果您使用带有动态端口转发的 SSH 隧道，则必须使用 SOCKS 代理管理附加组件来控制浏览器中的代理设置。例如，您可以使用 Chromium 的 `--proxy-server` 功能来启动浏览器会话，或者在 Mozilla FireFox 浏览器中使用 FoxyProxy 扩展程序。

### 选项一：使用本地端口转发设置 SSH 隧道
<a name="private-network-lb-browser-extension-portforwarding"></a>

如果您不想使用 SOCKS 代理，您可以使用本地端口转发设置 SSH 隧道。以下示例命令通过转发本地端口 8157 上的流量来访问 Amazon *EC2 资源管理器* Web 界面。

1. 打开新的命令提示符窗口。

1. 输入以下命令以打开 SSH 隧道。

   ```
   ssh -i mykeypair.pem -N -L 8157:YOUR_VPC_ENDPOINT_ID-vpce.us-east-1.airflow.amazonaws.com:443 ubuntu@YOUR_PUBLIC_IPV4_DNS.us-east-1.compute.amazonaws.com
   ```

   `-L` 代表使用本地端口转发，由此，您就能指定一个本地端口，用于将数据转发到节点的本地 Web 服务器上标识的远程端口。

1. 在浏览器中输入 `http://localhost:8157/`。
**注意**  
您可能需要使用 `https://localhost:8157/`。

### 选项二：使用命令行配置代理
<a name="private-network-lb-browser-extension-foxyp"></a>

您可以使用大多数 Web 浏览器，通过命令行或配置参数来配置代理。例如，使用 Chromium，您可以在 Chromium 中通过以下命令启动浏览器：

```
chromium --proxy-server="socks5://localhost:8157"
```

这将启动浏览器会话，该会话使用您在前述步骤中创建的 SSH 隧道来代理其请求。您可以按如下方式打开 Amazon MWAA 私有环境 URL（使用 *https://*）：

```
https://YOUR_VPC_ENDPOINT_ID-vpce.us-east-1.airflow.amazonaws.com/home.
```

### 选项三：在 Mozilla Firefox 上使用 FoxyProxy 的代理
<a name="private-network-lb-browser-extension-foxyp"></a>

以下示例演示了 Mozilla Firefox 的 FoxyProxy Standard（版本 7.5.1）配置。FoxyProxy 提供了一套代理管理工具。该工具使您可以使用与 Apache Airflow UI 所使用的域对应模式相匹配的 URL 代理服务器。

1. 在 FireFox 中，打开 [FoxyProxy Standard](https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/) 扩展页面。

1. 选择**添加到 Firefox**。

1. 选择**添加**。

1. 在浏览器工具栏中选择 FoxyProxy 图标，然后选择**选项**。

1. 复制以下代码并在本地另存为 `mwaa-proxy.json`。将 *YOUR\$1HOST\$1NAME* 中的示例值替换为 **Apache Airflow URL**。

   ```
   {
     "e0b7kh1606694837384": {
       "type": 3,
       "color": "#66cc66",
       "title": "airflow",
       "active": true,
       "address": "localhost",
       "port": 8157,
       "proxyDNS": false,
       "username": "",
       "password": "",
       "whitePatterns": [
         {
           "title": "airflow-ui",
           "pattern": "YOUR_HOST_NAME",
           "type": 1,
           "protocols": 1,
           "active": true
         }
       ],
       "blackPatterns": [],
       "pacURL": "",
       "index": -1
     },
     "k20d21508277536715": {
       "active": true,
       "title": "Default",
       "notes": "These are the settings that are used when no patterns match a URL.",
       "color": "#0055E5",
       "type": 5,
       "whitePatterns": [
         {
           "title": "all URLs",
           "active": true,
           "pattern": "*",
           "type": 1,
           "protocols": 1
         }
       ],
       "blackPatterns": [],
         "index": 9007199254740991
     },
     "logging": {
       "active": true,
       "maxSize": 500
     },
     "mode": "patterns",
     "browserVersion": "82.0.3",
     "foxyProxyVersion": "7.5.1",
     "foxyProxyEdition": "standard"
   }
   ```

1. 在**从 FoxyProxy 6.0\$1 导入设置**窗格上，选择**导入设置**，然后选择 `mwaa-proxy.json` 文件。

1. 选择**确定**。

## 步骤 6：打开 Apache Airflow UI
<a name="private-network-lb-open"></a>

以下步骤介绍如何打开 Apache Airflow UI。

1. 在 Amazon MWAA 控制台上打开[环境页面](https://console.aws.amazon.com/mwaa/home#/environments)。

1. 选择**打开 Airflow UI**。

## 接下来做什么？
<a name="bastion-next-up"></a>
+ 要了解如何在 baol 通往堡垒主机的 SSH 隧道上运行 Airflow CLI 命令，请参阅 [Apache Airflow CLI 命令参考](airflow-cli-command-reference.md)。
+ 要了解如何将 DAG 代码上传到 Amazon S3 存储桶，请参阅 [添加或更新 DAG](configuring-dag-folder.md)。

# 教程：限制 Amazon MWAA 用户访问其中的一个子集 DAGs
<a name="limit-access-to-dags"></a>

Amazon MWAA 通过将 IAM 主体映射到一个或多个 Apache Airflow 的[默认角色](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html#default-roles)来管理对环境的访问权限。使用以下教程限制个人 Amazon MWAA 用户只能访问特定的 DAG 或一组并与之交互。 DAGs

**注意**  
只要可以担任 IAM 角色，就可以使用联合访问完成本教程中的步骤。

**Topics**
+ [先决条件](#limit-access-to-dags-prerequisites)
+ [步骤 1：使用默认 `Public` Apache Airflow 角色向 IAM 主体提供 Amazon MWAA Web 服务器访问权限。](#limit-access-to-dags-apply-public-access)
+ [步骤 2：创建新的 Apache Airflow 自定义角色](#limit-access-to-dags-create-new-airflow-role)
+ [步骤 3：将您创建的角色分配给 Amazon MWAA 用户](#limit-access-to-dags-assign-role)
+ [后续步骤](#limit-access-to-dags-next-up)
+ [相关资源](#limit-access-to-dags-related-resources)

## 先决条件
<a name="limit-access-to-dags-prerequisites"></a>

要完成本教程中的步骤，您需要做好以下准备：
+ 具有多个 [Amazon MWAA 环境 DAGs](get-started.md)
+ `Admin`具有[AdministratorAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AdministratorAccess$jsonEditor)权限的 IAM 委托人和可以限制 DAG 访问权限的 IAM 用户作为委托人。`MWAAUser`有关管理员角色的更多信息，请参阅*《IAM 用户指南》*中的[管理员任务函数](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。
**注意**  
请勿将权限策略直接附加到 IAM 用户。我们建议设置用户可以代入的 IAM 角色来临时访问 Amazon MWAA 资源。
+ AWS Command Line Interface 已安装@@ [版本 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install)。

## 步骤 1：使用默认 `Public` Apache Airflow 角色向 IAM 主体提供 Amazon MWAA Web 服务器访问权限。
<a name="limit-access-to-dags-apply-public-access"></a>

**要授予权限，请使用 AWS 管理控制台**

1. 使用`Admin`角色登录您的 AWS 账户 ，然后打开 [IAM 控制台](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**用户**，然后从用户表中选择 Amazon MWAA IAM 用户。

1. 在用户详细信息页面的**摘要**下，选择**权限**选项卡，然后选择**权限策略**以展开卡片并选择**添加权限**。

1. 在**设置权限**部分中，选择**直接附加现有策略**，然后选择**创建策略**。

1. 在**创建策略**页面上，选择 **JSON**，然后将以下 JSON 权限策略复制并粘贴到策略编辑器中。该策略向具有默认 `Public` Apache Airflow 角色的用户授予 Web 服务器访问权限。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "airflow:CreateWebLoginToken",
               "Resource": [
               "arn:aws:airflow:us-east-1:111122223333:role/YOUR_ENVIRONMENT_NAME/Public"
               ]
           }
       ]
   }
   ```

------

## 步骤 2：创建新的 Apache Airflow 自定义角色
<a name="limit-access-to-dags-create-new-airflow-role"></a>

**使用 Apache Airflow UI 创建新角色**

1. 使用管理员 IAM 角色，打开[ Amazon MWAA 控制台](https://console.aws.amazon.com/mwaa/home)并启动环境的 Apache Airflow UI。

1. 在顶部的导航窗格中，将鼠标悬停在**安全**上以打开下拉列表，然后选择**列出角色**以访问默认的 Apache Airflow 角色。

1. 从角色列表中选择**用户**，然后在页面顶部选择**操作**以打开下拉列表。选择**复制角色**，然后确认**确定**
**注意**  
复制**操作**或**查看者**角色以分别授予或多或少的访问权限。

1. 在表格中找到您创建的新角色，然后选择**编辑记录**。

1. 在**切换角色**页面上，执行以下操作：
   + 对于**名称**，在文本字段中输入角色的新名称。例如 **Restricted**。
   + 要查看**权限**列表，请移除`can read on DAGs`和`can edit on DAGs`，然后为 DAGs 要提供访问权限的集合添加读写权限。例如，对于 DAG `example_dag.py`，添加 **`can read on DAG:example_dag`** 和 **`can edit on DAG:example_dag`**。

   选择**保存**。现在，您有了新的角色，该角色将访问权限限制为 Amazon MWAA 环境中 DAGs 可用的部分内容。您可以将此角色分配给任何现有的 Apache Airflow 用户。

## 步骤 3：将您创建的角色分配给 Amazon MWAA 用户
<a name="limit-access-to-dags-assign-role"></a>

**分配新角色**

1. 使用 `MWAAUser` 的访问凭证，运行以下 CLI 命令来检索环境的 Web 服务器 URL。

   ```
   aws mwaa get-environment --name YOUR_ENVIRONMENT_NAME | jq '.Environment.WebserverUrl'
   ```

   如果成功，您将看到以下输出内容：

   ```
   "ab1b2345-678a-90a1-a2aa-34a567a8a901.c13.us-west-2.airflow.amazonaws.com"
   ```

1. `MWAAUser`登录后 AWS 管理控制台，打开新的浏览器窗口并访问以下内容 URl。将 `Webserver-URL` 替换为您的信息。

   ```
   https://<Webserver-URL>/home
   ```

   如果成功，您将收到一个 `Forbidden` 错误页面，因为 `MWAAUser` 尚未获得访问 Apache Airflow UI 的权限。

1. `Admin`登录后 AWS 管理控制台，再次打开亚马逊 MWAA 控制台并启动环境的 Apache Airflow 用户界面。

1. 在 UI 控制面板中，展开**安全**下拉列表，这次选择**列出用户**。

1. 在用户表中，找到新的 Apache Airflow 用户并选择**编辑记录**。用户的名字将按以下模式匹配 IAM 用户名：`user/mwaa-user`。

1. 在**编辑用户**页面的**角色**部分，添加您创建的新自定义角色，然后选择**保存**。
**注意**  
**姓氏**字段是必填字段，但空格可以满足要求。

   IAM `Public` 委托人授予访问 Apache Airflow 用户界面的`MWAAUser`权限，而新角色则提供获取用户界面所需的额外权限。 DAGs

**重要**  
使用 Apache Airflow UI 添加的 5 个未经 IAM 授权的默认角色（例如 `Admin`）中的任何一个都将在用户下次登录时移除。

## 后续步骤
<a name="limit-access-to-dags-next-up"></a>
+ 要了解有关管理 Amazon MWAA 环境访问权限的更多信息，并获得可供环境用户使用的 JSON IAM 策略示例，请参阅 [访问 Amazon MWAA 环境](access-policies.md)。

## 相关资源
<a name="limit-access-to-dags-related-resources"></a>
+ [访问控制](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html)（Apache Airflow 文档）— 在 Apache Airflow 文档网站上了解有关默认 Apache Airflow 角色的更多信息。

# 教程：在 Amazon MWAA 上自动管理您自己的环境端点
<a name="tutorials-customer-managed-endpoints"></a>

如果您使用 [AWS Organizations](https://docs.aws.amazon.com/) 管理共享资源的多个 AWS 账户，则可借助 Amazon MWAA 来创建和管理自己的 Amazon VPC 端点。这意味着您可以使用更严格的安全策略，仅允许访问您的环境所需的资源。

在共享 Amazon VPC 中创建环境时，拥有主要 Amazon VPC 的账户（*所有者*）将与属于同一组织的其他账户（*参与者*）共享 Amazon MWAA 所需的两个私有子网。然后，共享这些子网的参与者账户可以查看、创建、修改和删除共享 VPC 中的环境。

在共享的存在其他策略限制的 Amazon VPC 中创建环境时，Amazon MWAA 将首先创建服务 VPC 资源，然后进入 [https://docs.aws.amazon.com/mwaa/latest/API/API_Environment.html#mwaa-Type-Environment-Status](https://docs.aws.amazon.com/mwaa/latest/API/API_Environment.html#mwaa-Type-Environment-Status) 状态最长 72 小时。

当环境状态从 `CREATING` 变为 `PENDING` 时，Amazon MWAA 会发送一条 Amazon EventBridge 状态变更通知。这让所有者账户能够根据端点服务信息，从 Amazon MWAA 控制台或 API 或通过编程方式创建所需的端点。在下例中，我们将使用一个 Lambda 函数和一条侦听 Amazon MWAA 状态变更通知的 EventBridge 规则，创建新的 Amazon VPC 端点。

在此例中，我们将在与环境相同的 Amazon VPC 中创建新的端点。要设置共享 Amazon VPC，请在所有者账户中创建 EventBridge 规则和 Lambda 函数，并在参与者账户中创建 Amazon MWAA 环境。

**Topics**
+ [先决条件](#tutorials-customer-managed-endpoints-prerequisites)
+ [创建 Amazon VPC](#tutorials-customer-managed-endpoints-create-vpc)
+ [创建 Lambda 函数](#tutorials-customer-managed-endpoints-create-lambda-function)
+ [创建 EventBridge 规则](#tutorials-customer-managed-endpoints-create-eb-rule)
+ [创建 Amazon MWAA 环境](#tutorials-customer-managed-endpoints-create-mwaa)

## 先决条件
<a name="tutorials-customer-managed-endpoints-prerequisites"></a>

要完成本教程的步骤，您需要做好以下准备：
+ ...

## 创建 Amazon VPC
<a name="tutorials-customer-managed-endpoints-create-vpc"></a>

使用以下 CloudFormation 模板和 AWS CLI 命令创建一个新 Amazon VPC。该模板会设置 Amazon VPC 资源并修改端点策略以限制对特定队列的访问。

1. 下载 CloudFormation [模板](samples/cfn-vpc-private-network.zip)，然后解压缩 `.yml` 文件。

1. 在新的命令提示符窗口中，导航到保存模板的文件夹，然后使用 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) 创建堆栈。`--template-body` 标志用于指定模板的路径。

   ```
   aws cloudformation create-stack --stack-name stack-name --template-body file://cfn-vpc-private-network.yml
   ```

在下一部分中，您将创建 Lambda 函数。

## 创建 Lambda 函数
<a name="tutorials-customer-managed-endpoints-create-lambda-function"></a>

使用以下 Python 代码和 IAM JSON 策略创建新的 Lambda 函数和执行角色。该函数将为一个私有 Apache Airflow Web 服务器和 Amazon SQS 队列创建 Amazon VPC 端点。在扩展环境时，Amazon MWAA 会使用 Amazon SQS 在多个 Worker 节点之间进行 Celery 任务排队。

1. 下载 Python [函数代码](./samples/mwaa-lambda-shared-vpc.zip)。

1. 下载 IAM [权限策略](./samples/lambda-mwaa-shared-vpce-policy.zip)，然后解压缩该文件。

1. 打开命令提示符，然后导航到保存 JSON 权限策略的文件夹。使用 IAM [https://docs.aws.amazon.com/](https://docs.aws.amazon.com/) 命令创建该新角色。

   ```
   aws iam create-role --role-name function-role \
   						--assume-role-policy-document file://lambda-mwaa-vpce-policy.json
   ```

   记下 AWS CLI 响应中的角色 ARN。在下一步中，我们将使用新角色的 ARN 将其指定为函数的执行角色。

1. 导航到保存函数代码的文件夹，然后使用 [https://docs.aws.amazon.com/](https://docs.aws.amazon.com/) 命令创建新函数。

   ```
   aws lambda create-function --function-name mwaa-vpce-lambda \
   --zip-file file://mwaa-lambda-shared-vpc.zip --runtime python3.8 --role arn:aws:iam::123456789012:role/function-role --handler lambda_handler
   ```

   记下 AWS CLI 响应中的函数 ARN。在下一步中，我们将指定该 ARN，以将该函数配置为新 EventBridge 规则的目标。

在下一部分中，您将创建 EventBridge 规则，此规则在环境进入 `PENDING` 状态时调用该函数。

## 创建 EventBridge 规则
<a name="tutorials-customer-managed-endpoints-create-eb-rule"></a>

完成以下步骤，创建一条用于侦听 Amazon MWAA 通知并以您的新 Lambda 函数为目标的新规则。

1. 使用 EventBridge `put-rule` 命令创建新的 EventBridge 规则。

   ```
   aws events put-rule --name "mwaa-lambda-rule" \
   --event-pattern "{\"source\":[\"aws.airflow\"],\"detail-type\":[\"MWAA Environment Status Change\"]}"
   ```

   事件模式用于侦听 Amazon MWAA 每次在环境状态发生变化时发送的通知。

   ```
   {
   					"source": ["aws.airflow"],
   					"detail-type": ["MWAA Environment Status Change"]
   					}
   ```

1. 使用 `put-targets` 命令将该 Lambda 函数添加为新规则的目标。

   ```
   aws events put-targets --rule "mwaa-lambda-rule" \
   --targets "Id"="1","Arn"="arn:aws:lambda:us-east-1:123456789012:function:mwaa-vpce-lambda"
   ```

您已准备就绪，可以使用客户管理型 Amazon VPC 端点创建新的 Amazon MWAA 环境。

## 创建 Amazon MWAA 环境
<a name="tutorials-customer-managed-endpoints-create-mwaa"></a>

通过 Amazon MWAA 控制台使用客户管理型 Amazon VPC 端点创建新的 Amazon MWAA 环境。

1. 打开 [Amazon MWAA](https://console.aws.amazon.com/mwaa/home/) 控制台并选择**创建环境**。

1. 对于**名称**，输入一个唯一名称。

1. 对于 **Airflow 版本**，请选择最新版本。

1. 选择要用于该环境的 **Amazon S3 存储桶**和 **DAG 文件夹**（例如 `dags/`），然后选择**下一步**。

1. 在**配置高级设置**页面上，执行以下操作：

   1. 对于**虚拟私有云**，选择您在[上一步](#tutorials-customer-managed-endpoints-create-vpc)中创建的 Amazon VPC。

   1. 对于 **Web 服务器访问**，请选择**公共网络（可访问互联网）**。

   1. 对于**安全组**，请选择您使用 CloudFormation 创建的安全组。由于之前步骤中 AWS PrivateLink 端点的安全组是自引用的，因此必须为您的环境选择同一安全组。

   1. 对于**端点管理**，请选择**客户管理型端点**。

1. 请保留其余的默认设置，然后选择**下一步**。

1. 检查您的选择，然后选择**创建环境**。

**提示**  
有关设置新环境的更多信息，请参阅 [Amazon MWAA 入门](get-started.md)。

环境处于 `PENDING` 状态时，Amazon MWAA 会发送与为您的规则设置的事件模式相匹配的通知。该规则会调用您的 Lambda 函数。该函数将解析通知事件并获取 Web 服务器和 Amazon SQS 队列所需的端点信息，然后在您的 Amazon VPC 中创建端点。

当端点可用时，Amazon MWAA 会继续创建环境。准备就绪后，环境状态将变为 `AVAILABLE`，您可以使用 Amazon MWAA 控制台访问 Apache Airflow Web 服务器。