故障排除:创建和更新 Amazon MWAA 环境 - Amazon Managed Workflows for Apache Airflow

故障排除:创建和更新 Amazon MWAA 环境

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

更新 requirements.txt

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

我指定了 requirements.txt 的新版本,更新环境花了 20 多分钟

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

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

  2. 查看 Apache Airflow 日志。如果您启用了 Apache Airflow 日志,请在 CloudWatch 控制台的日志组页面上验证日志组是否已成功创建。如果您看到空白日志,最常见的原因是执行角色中缺少写入日志的 CloudWatch 或 Amazon S3 的权限。要了解更多信息,请参阅 执行角色

  3. 检查 Apache Airflow 配置选项。如果您使用的是 Secrets Manager,请验证您指定为 Apache Airflow 配置选项的键值对是否配置正确。要了解更多信息,请参阅 使用 AWS Secrets Manager 密钥配置 Apache Airflow 连接

  4. 检查 VPC 网络配置。要了解更多信息,请参阅 我尝试创建环境,但它一直处于“正在创建”状态

  5. 检查执行角色权限。执行角色是 AWS Identity and Access Management (IAM) 角色,其权限策略允许 Amazon MWAA 代表您调用其他 AWS 服务(例如 Amazon S3、CloudWatch、Amazon SQS、Amazon ECR)的资源。还需要允许访问由客户托管的密钥AWS 自有密钥。要了解更多信息,请参阅 执行角色

  6. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

插件

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

Amazon MWAA 是否支持实现自定义 UI?

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

有关版本管理和升级现有环境的更多信息,请参阅 Amazon MWAA 上的 Apache Airflow 版本

我可以通过插件在 Amazon MWAA 本地运行器上实现自定义 UI 更改,但是当我尝试在 Amazon MWAA 上执行同样的操作时,我看不到自己的更改,也看不到任何错误。为什么会发生这种情况?

Amazon MWAA 本地运行器将所有 Apache Airflow 组件捆绑到一个镜像中,允许您应用自定义 UI 插件更改。

创建存储桶

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

我无法选择 S3 阻止公共访问设置的选项

Amazon MWAA 环境的执行角色需要获得对 Amazon S3 存储桶执行 GetBucketPublicAccessBlock 操作的权限,以验证存储桶已阻止公共访问。我们建议您完成以下步骤:

  1. 按照步骤将 JSON 策略附加到执行角色

  2. 附加以下 JSON 策略:

    { "Effect":"Allow", "Action":[ "s3:GetObject*", "s3:GetBucket*", "s3:List*" ], "Resource":[ "arn:aws:s3:::YOUR_S3_BUCKET_NAME", "arn:aws:s3:::YOUR_S3_BUCKET_NAME/*" ] }

    YOUR_S3_BUCKET_NAME 中的示例占位符替换为 Amazon S3 存储桶名称,例如my-mwaa-unique-s3-bucket-name

  3. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

创建环境。

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

我尝试创建环境,但它一直处于“正在创建”状态

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

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

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

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

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

  3. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

我尝试创建环境,但它的状态显示为“创建失败”

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

  1. 检查 VPC 网络配置。要了解更多信息,请参阅 我尝试创建环境,但它一直处于“正在创建”状态

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

  3. 检查执行角色权限。执行角色是 AWS Identity and Access Management (IAM) 角色,其权限策略允许 Amazon MWAA 代表您调用其他 AWS 服务(例如 Amazon S3、CloudWatch、Amazon SQS、Amazon ECR)的资源。还需要允许访问由客户托管的密钥AWS 自有密钥。要了解更多信息,请参阅 执行角色

  4. 查看 Apache Airflow 日志。如果您启用了 Apache Airflow 日志,请在 CloudWatch 控制台的日志组页面上验证日志组是否已成功创建。如果您看到空白日志,最常见的原因是执行角色中缺少写入日志的 CloudWatch 或 Amazon S3 的权限。要了解更多信息,请参阅 执行角色

  5. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

  6. 如果您使用的是无法访问互联网的 Amazon VPC,请确保您已创建一个 Amazon S3 网关端点,并授予 Amazon ECR 访问 Amazon S3 所需的最低权限。要了解有关创建 Amazon S3 网关端点,请参阅以下内容:

我尝试选择 VPC 但收到“网络故障”错误

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

  • 如果您在创建环境时尝试选择 Amazon VPC 时看到“网络故障”错误,请关闭所有正在运行的浏览器内代理,然后重试。

我尝试创建环境但收到服务、分区或资源“必须传递”错误

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

  • 您之所以收到此错误,可能是因为您为 Amazon S3 存储桶指定的 URI 的 URI 末尾包含一个“/”。我们建议删除路径中的“/”。该值应采用以下格式:

    s3://your-bucket-name

我尝试创建环境,它的状态显示为“可用”,但是当我尝试访问 Airflow UI 时,会显示“来自服务器的空回复”或“502 无效网关”错误

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

  1. 检查 VPC 安全组配置。要了解更多信息,请参阅 我尝试创建环境,但它一直处于“正在创建”状态

  2. 确认您在 requirements.txt 中列出的任何 Apache Airflow 程序包都对应于您在 Amazon MWAA 上运行的 Apache Airflow 版本。要了解更多信息,请参阅 安装 Python 依赖项

  3. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

我尝试创建一个环境,我的用户名是一堆随机的字符名称

  • Apache Airflow 的用户名最大长度为 64 个字符。如果 AWS Identity and Access Management (IAM) 角色超过此长度,则使用哈希算法来缩短该长度,同时保持其唯一性。

Update environment

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

我尝试更改环境类,但更新失败了

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

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

  1. 使用 GitHub 上的 aws-mwaa-local-runner 在本地测试 DAG、自定义插件和 Python 依赖项。

  2. 要运行故障排除脚本来检查 Amazon MWAA 环境的 Amazon VPC 网络设置和配置,请参阅 GitHub AWS 支持工具中的验证环境脚本。

访问环境

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

我无法访问 Apache Airflow UI

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

  1. 检查用户权限 您可能未被授予允许您查看 Apache Airflow UI 的权限策略的访问权限。要了解更多信息,请参阅 访问 Amazon MWAA 环境

  2. 检查网络访问。这可能是因为您选择了私有网络访问模式。如果 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 端点的访问”。