跳至内容

如何在我的 Amazon MWAA 环境中安装 Python 库?

2 分钟阅读
0

我想在我的 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 环境中安装 Python 库。

简短描述

Amazon MWAA 提供公共网络和私有网络 Web 服务器访问模式。

要在带有私有 Web 服务器的 Amazon MWAA 环境中安装 Python 依赖项,请使用 Python wheels .whl

要在 Amazon MWAA 环境中安装 Python 库,请使用 requirements.txtplugins.zip。当您使用 requirements.txt 时,pip 会默认安装 Python 包索引 (PyPI) 中列出的软件包。如果您将自定义库或包含已编译构件的软件包安装为 .whl 文件,请使用 plugins.zip 文件。在安装自定义 Amazon MWAA 操作、钩子、传感器或接口时,必须使用 plugins.zip 文件。该插件会导出环境变量、身份验证和配置文件,例如 .crt 和 .yaml。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

在开始之前,请务必完成先决条件

设置您的 Amazon MWAA 本地环境

完成以下步骤:

  1. 使用 AWS CLI 构建 Docker 映像,然后设置 Amazon MWAA 本地环境。

    **注意:**Amazon MWAA 存储库提供 AWS CLI 实用程序,并在本地复制 Amazon MWAA 环境。有关详细信息,请参阅 GitHub 网站上的 aws-mwaa-local-runner

  2. 将 Python 库和依赖项添加到 requirements.txt 文件中。
    **注意:**下载插件后,请确保 requirements.txt 文件包含限制条件。

  3. 使用以下脚本测试 requirements.txt 文件:

    #aws-mwaa-local-runner % ./mwaa-local-env test-requirements

    预期输出:

    Installing requirements.txtCollecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz  
    Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)  
        100% |████████████████████████████████| 3.6MB 365kB/s   
    ...  
    ...  
    ...  
    Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch  
      Running setup.py install for aws-batch ... done  
    Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

有关详细信息,请参阅使用 PyPi.org 需求文件格式安装 Python 依赖项

从 requirements.txt 文件构建 .whl 文件

完成以下步骤:

  1. 对于软件包要求,请运行以下 local-runner 命令:

    #aws-mwaa-local-runner % ./mwaa-local-env package-requirements

    注意:该命令将所有 .whl 文件下载到 aws-mwaa-local-runner/plugin 文件夹中。运行 package-requirements 命令后, plugins.zip、新的 packaged_requirements.txtconstraints.txt 文件可在应用程序的 requirement/ 目录中找到。

  2. 下载 plugins.zip、新的 packaged_requirements.txtconstraints.txt 文件。

  3. 修改新的 packaged_requirements.txt 文件,使其指向 /usr/local/airflow/dags/constraints.txt 而不是公共约束。

上传 constraints.txt 文件

您可以将 contraints.txt 文件上传到您的 Amazon Simple Storage Service (Amazon S3) 存储桶 dag/ 目录,也可以在 plugins 文件中包含 constraints.txt 文件。如果您将 contraints.txt 文件上传到您的 Amazon S3 存储桶 dag/ 目录,则 Amazon S3 会修改 requirements.txt 文件以进行部署。但是,如果您将 constraints.txt 文件包含在 plugins 文件中,请确保 packaged_requirements.txt 文件指向 /usr/local/airflow/dags/constraints.txt 而不是公共约束。

如果您将 constraints.txt 文件上传到插件,请使用以下命令:

#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt

创建一个新的 requirements.txt 文件,该文件指向 plugins.zip 文件中打包的 .whl 文件

完成以下步骤:

  1. 修改新的 packaged_requirements.txt 文件。如果您已将文件上传到 Amazon S3 dags 目录,请将以下示例中的 {OPTION} 替换为 **dags。**或者,如果您已将文件添加到 plugins.zip 文件中,请将 {OPTION} 替换为 plugins

    --find-links /usr/local/airflow/plugins  
    --no-index  
    --constraint "/usr/local/airflow/{OPTION}/constraints.txt"   
    ....snip.....
  2. 将 plugins.zip 文件和 requirements.txt 文件上传到您的 Amazon MWAA 集群的 Amazon S3 存储桶。

  3. 更新环境。

对包安装问题进行故障排除

使用 aws-mwaa-local-runner 来测试 DAG、自定义插件和 Python 依赖项。从 Amazon MWAA Worker 或调度器日志组查看日志文件

**重要事项:**在安装包或 plugins.zip 文件之前,请使用 Amazon MWAA CLI 实用程序测试 Python 依赖项和 plugins.zip 文件

相关信息

管理 Python 依赖项选项二: Python Wheel (.whl)

插件