Cloud Composer 1 | Cloud Composer 2
Apache Airflow 具有命令行界面 (CLI),可用于执行任务,例如触发和管理 DAG、获取有关 DAG 运行和任务的信息、添加和删除连接和用户。
CLI 语法版本简介
Cloud Composer 1 中的 Airflow 为 CLI 命令提供两种不同的语法:
Airflow 1.10 CLI 语法,适用于采用 Airflow 1.10 的 Cloud Composer 环境。
Airflow 2 CLI 语法,适用于采用 Airflow 2 的 Cloud Composer 环境。
支持的 Airflow CLI 命令
如需查看支持的 Airflow CLI 命令的完整列表,请参阅 gcloud composer environments run
参考文档。
须知事项
您必须具有足够的权限才能将
gcloud
命令行工具与 Cloud Composer 搭配使用并运行 Airflow CLI 命令。如需了解详情,请参阅访问权限控制。在 Cloud Composer 2.4.0 之前的版本中,您需要访问环境集群的控制平面才能运行 Airflow CLI 命令。
运行 Airflow CLI 命令
要在您的环境中运行 Airflow CLI 命令,请使用 gcloud
:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- 将
SUBCOMMAND
替换为受支持的 Airflow CLI 命令之一。 - 将
SUBCOMMAND_ARGUMENTS
替换为 Airflow CLI 命令的参数。
子命令参数分隔符
使用 --
分隔指定的 Airflow CLI 命令的参数:
Airflow 2
对于 Airflow 2 CLI 语法:
- 将复合 CLI 命令指定为子命令。
- 在
--
分隔符后面指定复合命令的任何参数,作为子命令参数。
gcloud composer environments run example-environment \
dags list -- --output=json
Airflow 1
对于 Airflow 1.10 CLI 语法:
- 将 CLI 命令指定为子命令。
- 在
--
分隔符后面指定所有参数。
gcloud composer environments run example-environment \
list_dags -- --report
默认位置
大多数 gcloud composer
命令需要位置信息。您可以使用 --location
标志指定位置,也可以设置默认位置。
示例
例如,如需在 Cloud Composer 环境中触发名为 sample_quickstart
且 ID 为 5077
的 DAG,请使用以下命令:
Airflow 2
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Airflow 1
gcloud composer environments run example-environment \
--location us-central1 trigger_dag -- sample_quickstart \
--run_id=5077
在专用 IP 环境中运行命令
如需在专用 IP 环境中运行 Airflow CLI 命令,请在可访问 GKE 集群的控制平面端点的机器上运行这些命令。您的选项可能会因专用集群配置而有所不同。
如果您环境的集群已停用公共端点访问权限,则必须从同一 VPC 网络中的虚拟机运行 Airflow CLI 命令。如需启用此路径,请在您的 VPC 网络中创建虚拟机。
如果您的环境的集群启用了公共端点访问权限,您还可以通过来自公共 IP 地址(添加到已获授权的网络)的机器运行 Airflow CLI 命令。如需启用从机器访问的权限,请将机器的外部地址添加到环境的已获授权的网络列表。
问题排查
未连接到集群控制平面
运行 gcloud composer environments run
或 kubectl
命令时,您可能会遇到以下错误:
Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"
症状:此错误消息表明运行这些命令的计算机未连接到网络。
解决方案:遵循在专用 IP 环境中运行命令部分中提供的准则,或者按照 kubectl
命令超时部分中的说明操作。