

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 故障診斷：建立和更新 Amazon MWAA 環境
<a name="t-create-update-environment"></a>

本頁面上的主題包含您在建立和更新 Amazon Managed Workflows for Apache Airflow 環境時可能遇到的錯誤，以及如何解決這些錯誤。

**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)
+ [更新環境](#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>

如果您的環境需要超過 20 分鐘才能安裝新版本的`requirements.txt`檔案，則環境更新會失敗，而 Amazon MWAA 會轉返至容器映像的最後一個穩定版本。

1. 檢查套件版本。建議您一律為 中的 Python 相依性指定特定版本 (`==`) 或最大版本 (`<=`)`requirements.txt`。

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 組態選項的鍵值對已正確設定。若要進一步了解，請參閱 [使用 AWS Secrets Manager 秘密設定 Apache Airflow 連線](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 2.0.2 版或更新版本，您將無法實作自訂 UI。

如需版本管理和升級現有環境的詳細資訊，請參閱 [Amazon Managed Workflows for Apache Airflow 的 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}}/*"
     ]
   }
   ```

   使用 Amazon S3{{3 儲存貯體名稱取代 amzn-s3-demo-bucket}} 中的範例預留位置。

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>

建議下列步驟：
+ 如果您在建立環境`Network Failure`時嘗試選取 Amazon VPC 時發生錯誤，請關閉任何執行中的瀏覽器內代理程式，然後再試一次。

### 我嘗試建立環境並收到服務、分割區或資源「必須傳遞」錯誤
<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. 確認您在 中列出的任何 Apache Airflow 套件`requirements.txt`對應至您在 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) 角色超過此長度，則會使用雜湊演算法來減少它，同時保持唯一。

## 更新環境
<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)，在本機測試您的 DAGs、自訂外掛程式和 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)。