Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页面介绍了如何为受管 Airflow 环境安装 Python 软件包。
Managed Airflow 中的软件包简介
本部分介绍 PyPI 软件包在 Managed Airflow 中的运作方式。
Managed Airflow 映像中的预安装 PyPI 软件包和自定义 PyPI 软件包
Managed Airflow 映像包含预安装的 PyPI 软件包和自定义 PyPI 软件包。
预安装的 PyPI 软件包是指包含在环境的 Managed Airflow 映像中的软件包。每个 Managed Airflow 映像都包含特定于您的 Managed Airflow 和 Airflow 版本的 PyPI 软件包。
自定义 PyPI 软件包是指除了预安装的软件包之外,您还可以在环境中安装的软件包。
用于管理 Managed Airflow 环境的 PyPI 软件包的选项
| 选项 | 使用条件 |
|---|---|
| 从 PyPI 安装 | 在环境中安装软件包的默认方式 |
| 从具有公共 IP 地址的代码库进行安装 | 相应软件包托管在 PyPI 以外的软件包代码库中。 此代码库具有公共 IP 地址 |
| 从 Artifact Registry 代码库安装 | 软件包托管在 Artifact Registry 代码库中 |
| 从项目网络中的代码库安装 | 您的环境无法访问公共互联网。软件包托管在项目网络的软件包代码库中。 |
| 安装为本地 Python 库 |
在 PyPI 中找不到相应软件包,并且该库没有任何外部依赖项,例如 dist-packages。 |
| 安装插件 | 该软件包提供插件特有的功能,例如修改 Airflow 网页界面。 |
| PythonVirtualenvOperator | 您不希望所有 Airflow 工作器都安装该软件包,或者该依赖项与预安装的软件包相冲突。该软件包可在 PyPI 中找到,并且没有外部依赖项。 |
| KubernetesPodOperator 和 GKE Operator |
您所需的外部依赖项无法通过 pip 安装(例如 dist-packages),或者这些外部依赖项位于内部 pip 服务器上。此选项需要更多设置和维护工作。仅当其他选项不起作用时,才考虑此选项。 |
准备工作
您必须具有可以触发环境更新操作的角色。此外,环境的服务账号必须具有拥有足够权限来执行更新操作的角色。
如果您的环境受 VPC Service Controls 边界的保护,则在安装 PyPI 依赖项之前,您必须授予其他用户身份对服务边界保护的服务的访问权限,并支持私有 PyPI 代码库。
要求必须遵循 PEP-508 中指定的格式:每项要求均以小写形式指定,并且包含软件包名称(您还可以选择添加 extras 和版本说明符)。
PyPI 依赖项更新会在 Artifact Registry 中生成 Docker 映像。
如果更新因某个依赖项冲突而失败,那么您的环境将继续使用其现有依赖项运行。如果操作成功,您可以开始在 DAG 中使用新安装的 Python 依赖项。
PythonVirtualenvOperator 不使用环境
pip.conf文件中的配置。如果您想使用特定依赖项(包括从自定义索引安装这些依赖项),请在requirements参数中以字符串列表的形式传递要求。如需详细了解此格式,请参阅 pip 文档中的要求文件格式。
查看 PyPI 软件包列表
您可以多种格式获取环境的软件包列表。
查看预安装的软件包
如需查看环境的预安装软件包列表,请参阅环境的 Managed Airflow 映像的软件包列表。
查看所有软件包
如需查看环境中的所有软件包(包括预安装的软件包和自定义软件包),请执行以下操作:
gcloud
以下 gcloud CLI 命令会返回您环境中的 Airflow 工作器的 python -m pip list 命令的结果。您可以使用 --tree 实参来获取 python -m pipdeptree --warn 命令的结果。
gcloud beta composer environments list-packages \
ENVIRONMENT_NAME \
--location LOCATION
将
ENVIRONMENT_NAME替换为环境的名称。LOCATION替换为环境所在的区域。
查看自定义 PyPI 软件包
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
前往 PyPI 软件包标签页。
gcloud
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.softwareConfig.pypiPackages)"
替换:
ENVIRONMENT_NAME替换为环境的名称。LOCATION替换为环境所在的区域。
在 Managed Airflow 环境中安装自定义软件包
本部分介绍了在环境中安装自定义软件包的不同方法。
从 PyPI 安装软件包
如果软件包没有外部依赖项或与预安装的软件包冲突,则可以从 Python Package Index 安装该软件包。