

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

# 故障排除：创建和更新 Amazon MWAA 环境
<a name="t-create-update-environment"></a>

本页主题包含您在创建和更新 Amazon MWAA 环境时可能遇到的错误以及如何解决这些错误。

**Contents**
+ [更新 `requirements.txt`](#troubleshooting-reqs)
  + [我指定了 `requirements.txt` 的新版本，更新环境花了 20 多分钟](#t-requirements)
+ [插件](#troubleshooting-plugins)
  + [Amazon MWAA 是否支持实现自定义 UI？](#custom-ui)
+ [创建存储桶](#troubleshooting-create-bucket)
  + [我无法选择 S3 阻止公共访问设置的选项](#t-create-bucket)
+ [创建环境。](#troubleshooting-create-environment)
  + [我尝试创建环境，但它一直处于 `Creating` 状态](#t-stuck-failure)
  + [我尝试创建环境，但它的状态显示为 `Create failed`](#t-create-environ-failed)
  + [我尝试选择 VPC 但收到 `Network Failure` 错误](#t-network-failure)
  + [我尝试创建环境但收到服务、分区或资源“必须传递”错误](#t-service-partition)
  + [我尝试创建环境，它的状态显示为 `Available`，但是当我尝试访问 Airflow UI 时，会显示 `Empty Reply from Server` 或 `502 Bad Gateway` 错误](#t-create-environ-empty-reply)
  + [我尝试创建一个环境，我的用户名是一堆随机的字符名称](#t-create-environ-random-un)
+ [Update environment](#troubleshooting-update-environment)
  + [我尝试更改环境类，但更新失败了](#t-rollback-billing-failure)
+ [访问环境](#troubleshooting-access-environment)
  + [我无法访问 Apache Airflow UI](#t-no-access-airflow-ui)

## 更新 `requirements.txt`
<a name="troubleshooting-reqs"></a>

以下主题描述了您在更新 `requirements.txt` 时可能收到的错误。

### 我指定了 `requirements.txt` 的新版本，更新环境花了 20 多分钟
<a name="t-requirements"></a>

如果环境安装 `requirements.txt` 文件的新版本花费的时间超过二十分钟，则环境更新失败，Amazon MWAA 正在回滚到容器镜像的最后一个稳定版本。

1. 检查程序包版本。我们建议您始终为 `requirements.txt` 中的 Python 依赖项指定特定版本 (`==`) 或最高版本 (`<=`) 。

1. 查看 Apache Airflow 日志。如果您启用了 Apache Airflow 日志，请在 CloudWatch 控制台的[日志组页面](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups)上验证日志组是否已成功创建。如果您收到空白日志，最常见的原因是执行角色中缺少写入日志的 CloudWatch 或 Amazon S3 的权限。要了解更多信息，请参阅 [执行角色](mwaa-create-role.md)。

1. 检查 Apache Airflow 配置选项。如果您使用的是 Secrets Manager，请验证您指定为 Apache Airflow 配置选项的键值对是否配置正确。要了解更多信息，请参阅 [使用密钥配置 Apache Airflow 连接 AWS Secrets Manager](connections-secrets-manager.md)。

1. 检查 VPC 网络配置。要了解更多信息，请参阅 [我尝试创建环境，但它一直处于 `Creating` 状态](#t-stuck-failure)。

1. 检查执行角色权限。执行角色是 AWS Identity and Access Management (IAM) 角色，其权限策略允许 Amazon MWAA 代表您调用其他 AWS 服务（例如 Amazon S3、CloudWatch、Amazon SQS、Amazon ECR）的资源。还需要允许访问[由客户托管的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)或 [AWS 自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。要了解更多信息，请参阅 [执行角色](mwaa-create-role.md)。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

## 插件
<a name="troubleshooting-plugins"></a>

以下主题描述了您在配置或更新 Apache Airflow 插件时可能遇到的问题。

### Amazon MWAA 是否支持实现自定义 UI？
<a name="custom-ui"></a>

从 Apache Airflow v2.2.2 开始，Amazon MWAA 支持在 Apache Airflow Web 服务器上安装插件和实现自定义 UI。如果 Amazon MWAA 环境运行的是 Apache Airflow v2.0.2 或更早版本，则您将无法实现自定义 UI。

有关版本管理和升级现有环境的更多信息，请参阅 [Amazon MWAA 上的 Apache Airflow 版本](airflow-versions.md)。

## 创建存储桶
<a name="troubleshooting-create-bucket"></a>

以下主题描述了您在创建 Amazon S3 存储桶时可能收到的错误。

### 我无法选择 S3 阻止公共访问设置的选项
<a name="t-create-bucket"></a>

Amazon MWAA 环境的[执行角色](mwaa-create-role.md)需要获得对 Amazon S3 存储桶执行 `GetBucketPublicAccessBlock` 操作的权限，以验证存储桶已阻止公共访问。我们建议您完成以下步骤：

1. 按照步骤将 [JSON 策略附加到执行角色](mwaa-create-role.md)。

1. 附加以下 JSON 策略：

   ```
   {
     "Effect":"Allow",
     "Action":[
       "s3:GetObject*",
       "s3:GetBucket*",
       "s3:List*"
     ],
     "Resource":[
       "arn:aws:s3:::amzn-s3-demo-bucket",
       "arn:aws:s3:::amzn-s3-demo-bucket/*"
     ]
   }
   ```

   将 *amzn-s3-demo-bucket* 中的示例占位符替换为您的 Amazon S3 存储桶名称。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

## 创建环境。
<a name="troubleshooting-create-environment"></a>

以下主题描述了您在创建环境时可能收到的错误。

### 我尝试创建环境，但它一直处于 `Creating` 状态
<a name="t-stuck-failure"></a>

我们建议您完成以下步骤：

1. 使用*公有路由*检查 VPC 网络。如果您使用的是可访问互联网的 Amazon VPC，请验证以下内容：

   1. Amazon VPC 已配置为允许 Amazon MWAA 环境使用的不同 AWS 资源之间的网络流量，如 [关于在 Amazon MWAA 上联网](networking-about.md) 中所定义。例如，VPC 安全组必须允许自引用规则中的所有流量，或者可以选择指定 HTTPS 端口范围 443 和 TCP 端口范围 5432 的端口范围。

1. 使用*私有路由*检查 VPC 网络。如果您使用的是不可访问互联网的 Amazon VPC，请验证以下内容：

   1. Amazon VPC 已配置为允许 Amazon MWAA 环境使用的不同 AWS 资源之间的网络流量，如 [关于在 Amazon MWAA 上联网](networking-about.md) 中所定义。例如，两个私有子网**不得**有通往 NAT 网关（或 NAT 实例）的路由表，**也不能**有互联网网关。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

### 我尝试创建环境，但它的状态显示为 `Create failed`
<a name="t-create-environ-failed"></a>

我们建议您完成以下步骤：

1. 检查 VPC 网络配置。要了解更多信息，请参阅 [我尝试创建环境，但它一直处于 `Creating` 状态](#t-stuck-failure)。

1. 检查用户权限 在创建环境之前，Amazon MWAA 会根据用户的凭证进行试运行。AWS 账户 账户可能无权在 AWS Identity and Access Management (IAM) 中为环境创建某些资源。例如，如果您选择**私有网络** Apache Airflow 访问模式，则 AWS 账户 必须已获得管理员的授权，访问适用于环境的 [AmazonMWAAFullConsoleAccess](access-policies.md#console-full-access) 访问控制策略，该策略允许您的账户创建 VPC 端点。

1. 检查执行角色权限。执行角色是 AWS Identity and Access Management (IAM) 角色，其权限策略允许 Amazon MWAA 代表您调用其他 AWS 服务（例如 Amazon S3、CloudWatch、Amazon SQS、Amazon ECR）的资源。还需要允许访问[由客户托管的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)或 [AWS 自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。要了解更多信息，请参阅 [执行角色](mwaa-create-role.md)。

1. 查看 Apache Airflow 日志。如果您启用了 Apache Airflow 日志，请在 CloudWatch 控制台的[日志组页面](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups)上验证日志组是否已成功创建。如果您收到空白日志，最常见的原因是执行角色中缺少写入日志的 CloudWatch 或 Amazon S3 的权限。要了解更多信息，请参阅 [执行角色](mwaa-create-role.md)。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

1. 如果您使用的是*无法*访问互联网的 Amazon VPC，请确保您已创建一个 Amazon S3 网关端点，并授予 Amazon ECR 访问 Amazon S3 所需的最低权限。要了解有关创建 Amazon S3 网关端点的更多信息，请参阅以下内容：
   + [创建没有互联网访问权限的 Amazon VPC 网络](vpc-create.md#vpc-create-template-private-only)
   + 在*《Amazon Elastic Container Registry 用户指南》*中的[创建 Amazon S3 网关端点](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-s3-gateway)。

### 我尝试选择 VPC 但收到 `Network Failure` 错误
<a name="t-network-failure"></a>

我们建议您完成以下步骤：
+ 如果您在创建环境时尝试选择 Amazon VPC 时看到 `Network Failure` 错误，请关闭所有正在运行的浏览器内代理，然后重试。

### 我尝试创建环境但收到服务、分区或资源“必须传递”错误
<a name="t-service-partition"></a>

我们建议您完成以下步骤：
+ 您之所以收到此错误，可能是因为您为 Amazon S3 存储桶指定的 URI 的 URI 末尾包含一个“/”。我们建议删除路径中的“/”。该值必须为以下格式：

  ```
  s3://amzn-s3-demo-bucket
  ```

### 我尝试创建环境，它的状态显示为 `Available`，但是当我尝试访问 Airflow UI 时，会显示 `Empty Reply from Server` 或 `502 Bad Gateway` 错误
<a name="t-create-environ-empty-reply"></a>

我们建议您完成以下步骤：

1. 检查 VPC 安全组配置。要了解更多信息，请参阅 [我尝试创建环境，但它一直处于 `Creating` 状态](#t-stuck-failure)。

1. 确认您在 `requirements.txt` 中列出的任何 Apache Airflow 程序包都对应于您在 Amazon MWAA 上运行的 Apache Airflow 版本。要了解更多信息，请参阅 [安装 Python 依赖项](working-dags-dependencies.md)。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

### 我尝试创建一个环境，我的用户名是一堆随机的字符名称
<a name="t-create-environ-random-un"></a>
+ Apache Airflow 的用户名最大长度为 64 个字符。如果 AWS Identity and Access Management (IAM) 角色超过此长度，则使用哈希算法来缩短该长度，同时保持其唯一性。

## Update environment
<a name="troubleshooting-update-environment"></a>

以下主题描述了您在更新环境时可能收到的错误。

### 我尝试更改环境类，但更新失败了
<a name="t-rollback-billing-failure"></a>

如果您将环境更新为其他环境类（例如将 `mw1.medium` 更改为 `mw1.small`），并且更新环境的请求失败，则环境状态将变为 `UPDATE_FAILED` 状态，环境将回滚到之前的稳定版本并根据环境的先前稳定版本进行计费。

我们建议您完成以下步骤：

1. 使用 GitHub 上的 [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) 在本地测试 DAG、自定义插件和 Python 依赖项。

1. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置，请参阅 GitHub AWS 支持工具中的[验证环境](https://github.com/awslabs/aws-support-tools/tree/master/MWAA)脚本。

## 访问环境
<a name="troubleshooting-access-environment"></a>

以下主题描述了您在访问环境时可能收到的错误。

### 我无法访问 Apache Airflow UI
<a name="t-no-access-airflow-ui"></a>

我们建议您完成以下步骤：

1. 检查用户权限 您可能未被授予可用来访问 Apache Airflow UI 的权限策略的访问权限。要了解更多信息，请参阅 [访问 Amazon MWAA 环境](access-policies.md)。

1. 检查网络访问。这可能是因为您选择了**私有网络**访问模式。如果 Apache Airflow UI 的 URL 采用以下格式 `387fbcn-8dh4-9hfj-0dnd-834jhdfb-vpce.c10.us-west-2.airflow.amazonaws.com`，则表示您在 Apache Airflow Web 服务器上使用*私有路由*。您可以将 Apache Airflow 访问模式更新为**公有网络**访问模式，也可以创建一种机制来访问 Apache Airflow *Web 服务器*的 VPC 端点。要了解更多信息，请参阅 [在 Amazon MWAA 上管理对服务特定 Amazon VPC 端点的访问](vpc-vpe-access.md)。