托管式 Airflow(第 3 代) | 托管式 Airflow(第 2 代) | 托管式 Airflow(旧版第 1 代)
Apache Airflow 具有命令行界面 (CLI),可用于执行任务,例如触发和管理 DAG、获取有关 DAG 运行和任务的信息、添加和删除连接和用户。
支持的 Airflow CLI 命令
Airflow 使用 Airflow CLI 语法,该语法在 Airflow 文档中进行了说明。
托管式 Airflow(第 3 代)支持以下 Airflow CLI 命令:
(Airflow 2 和 3)
gcloud composer environments run命令 会为您的环境运行 Airflow CLI 命令。某些命令会被屏蔽,无法运行。如需查看支持的 Airflow CLI 命令的列表,请参阅该 命令的参考文档。(Airflow 3)
airflowctl命令行工具支持部分 Airflow CLI 命令,并使用 Airflow REST API 运行这些命令。托管式 Airflow 支持airflowctl中的所有可用命令。请确保用户的 Airflow 账号具有 可以运行特定 命令的 Airflow 角色。
准备工作
如需通过 Google Cloud CLI 执行 Airflow CLI 命令,请执行以下操作:
您的 Google 账号必须具有 权限 才能使用 Google Cloud CLI 和 Managed Airflow 并运行 Airflow CLI 命令。
通过 Google Cloud CLI 执行的 Airflow CLI 命令会消耗
environments.executeAirflowCommand配额。
如需通过
airflowctl 命令行工具(在 Airflow 3 中)执行 Airflow CLI 命令,请执行以下操作:
您的 Google 账号必须具有
composer.environments.get权限。此权限由可以 查看托管式 Airflow 环境的角色提供。airflowctl命令行工具不需要 运行 Airflow CLI 命令的权限。通过
airflowctl执行的 Airflow CLI 命令不会消耗environments.executeAirflowCommand配额。
使用 gcloud CLI 运行 Airflow CLI 命令
如需在您的环境中运行 Airflow CLI 命令,请使用 gcloud CLI:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
替换以下内容:
ENVIRONMENT_NAME:您的环境的名称。LOCATION:环境所在的区域。SUBCOMMAND:受支持的 Airflow CLI 命令之一。SUBCOMMAND_ARGUMENTS:Airflow CLI 命令的参数。
子命令参数分隔符
使用 -- 分隔指定的 Airflow CLI 命令的参数:
- 将复合 CLI 命令指定为子命令。
- 在
--分隔符后面指定复合命令的任何参数,作为子命令参数。
示例:
gcloud composer environments run example-environment \
dags list -- --output=json
默认位置
大多数 gcloud composer 命令需要位置信息。您可以使用
位置和 --location 标志指定位置,也可以
设置默认位置。
例如,如需在 Managed Airflow 环境中触发名为 sample_quickstart 且 ID 为 5077 的 DAG,请使用以下命令:
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
使用 airflowctl 运行 Airflow CLI 命令
airflowctl 命令行工具是 Airflow 提供的一种命令行
实用程序,用于运行 Airflow CLI 命令。它支持部分 Airflow CLI 命令,并使用 Airflow REST API 运行这些命令。托管式 Airflow 支持 airflowctl 中的所有可用命令。
在 Managed Airflow 中,使用 airflowctl 进行授权和身份验证的方式如下:
由于
airflowctl使用 Airflow REST API,请确保与您的 Google 账号或服务帐号关联的 Airflow 用户账号具有可以运行命令的 Airflow 角色。例如,某些命令只能由具有Admin角色的 Airflow 用户执行。airflowctl使用的 API 令牌由gcloud auth application-default print-access-token命令提供。 默认情况下,令牌的有效期为 1 小时。您可以使用为此命令提供的--lifetime实参更改此有效期。
如需使用 airflowctl 进行身份验证,请运行以下命令:
airflowctl auth login \
--api-url WEB_SERVER_URL \
--api-token $(gcloud auth application-default print-access-token)
替换以下内容:
示例:
airflowctl auth login \
--api-url https://example-dot-us-central1.composer.googleusercontent.com \
--api-token $(gcloud auth application-default print-access-token)
使用 airflowctl 进行身份验证后,您可以运行 Airflow CLI 命令:
airflowctl dags list
通过 Cloud Composer API 运行 Airflow CLI 命令
在托管式 Airflow(第 3 代)中,您可以通过 Cloud Composer API 运行 Airflow CLI 命令。
执行一项命令
构建 environments.executeAirflowCommand API 请求:
{
"environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"command": "AIRFLOW_COMMAND",
"subcommand": "AIRFLOW_SUBCOMMAND",
"parameters": [
"SUBCOMMAND_PARAMETER"
]
}
替换以下内容:
PROJECT_ID:项目 ID。LOCATION:环境所在的区域。ENVIRONMENT_NAME:您的环境的名称。AIRFLOW_COMMAND:您要执行的 Airflow CLI 命令,例如dags。AIRFLOW_SUBCOMMAND:您要执行的 Airflow CLI 命令的子命令,例如list。- (可选)
SUBCOMMAND_PARAMETER:子命令的参数。如果您要使用多个参数,请向列表中添加更多项。
示例:
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:executeAirflowCommand
{
"environment": "projects/example-project/locations/us-central1/environments/example-environment",
"command": "dags",
"subcommand": "list",
"parameters": [
"-o json",
"--verbose"
]
}
轮询命令状态
通过 Cloud Composer API 执行 Airflow CLI 命令后,请发出
PollAirflowCommand请求并检查
exitInfo中的字段是否存在错误和状态代码,以检查
命令是否已成功完成。output 字段包含日志行。
如需获取命令执行状态并提取日志,请提供 executionId,
pod 和 podNamespace 值,这些值由 ExecuteAirflowCommandRequest 返回:
示例:
// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
"executionId": "a117da94-355d-4ad4-839e-ac39ccb0bf48",
"pod": "airflow-webserver-66d96b858f-tn96b",
"podNamespace": "airflow-2-10-2-build-13-226523e4",
"nextLineNumber": 1
}