Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow 具有一个 REST API 接口,可用于执行诸如以下任务:获取有关 DAG 运行和任务的信息、更新 DAG、获取 Airflow 配置、添加和删除连接以及列出用户。
如需查看将 Airflow REST API 与 Cloud Run 函数搭配使用的示例,请参阅使用 Cloud Run 函数触发 DAG。
Airflow REST API 版本
- Airflow 2 使用稳定的 REST API。
- Airflow 已弃用实验性 REST API。
配置稳定的 Airflow REST API
Airflow 2 中默认启用稳定的 REST API。 Cloud Composer 使用自己的 API 身份验证后端。
授权以 Airflow 提供的标准方式工作。当新用户通过 API 授权时,该用户的账号默认获得 Op
角色。
您可以通过替换以下 Airflow 配置选项来启用或停用稳定的 REST API 或更改默认用户角色:
部分 | 键 | 值 | 备注 |
---|---|---|---|
api
|
(Airflow 2.2.5 及更低版本)auth_backend (Airflow 2.3.0 及更高版本) auth_backends
|
airflow.composer.api.backend.composer_auth
|
如需停用稳定的 REST API,请更改为 airflow.api.auth.backend.deny_all |
api
|
composer_auth_user_registration_role
|
Op
|
您可以指定任何其他角色。 |
使用 Web 服务器访问控制功能允许对 Airflow REST API 进行 API 调用
调用 Airflow REST API 所用的方法不同,调用方方法可以使用 IPv4 或 IPv6 地址。请务必使用网站服务器访问控制取消屏蔽指向 Airflow REST API 的 IP 流量。
如果您不确定将从哪些 IP 地址发送对 Airflow REST API 的调用,请使用默认配置选项 All IP addresses have access (default)
。
调用 Airflow REST API
本部分提供了一个示例 Python 脚本,该脚本可用于使用稳定的 Airflow REST API 来触发 DAG。
将以下示例的内容放入名为 composer2_airflow_rest_api.py
的文件中,然后设置以下变量:
dag_id
:DAG 的名称,如 DAG 源文件中所定义。dag_config
:DAG 运行作业的配置。web_server_url
:您的 Airflow Web 服务器网址。 格式为https://<web-server-id>.composer.googleusercontent.com
。
使用服务账号访问 Airflow REST API
Airflow 数据库将电子邮件字段的长度限制为 64 个字符。服务账号有时包含长度超过 64 个字符的电子邮件地址。以常规方式无法为此类服务账号创建 Airflow 用户。如果此类服务账号没有 Airflow 用户,则访问 Airflow REST API 会导致 HTTP 错误 401 和 403。
要解决此问题,您可以为服务账号预先注册一个 Airflow 用户。为此,请使用 accounts.google.com:NUMERIC_USER_ID
作为用户名,并使用任意唯一的字符串作为电子邮件。
如需获取服务账号的
NUMERIC_USER_ID
,请运行以下命令:gcloud iam service-accounts describe \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --format="value(oauth2ClientId)"
替换:
- 将
SA_NAME
替换为服务账号名称。 - 将
PROJECT_ID
替换为项目 ID。
- 将
为该服务账号创建具有
Op
角色的 Airflow 用户:Airflow 界面
依次前往安全 > 列出用户,然后点击添加新记录。您的 Airflow 用户必须具有
Admin
角色,才能打开此页面。指定
accounts.google.com:NUMERIC_USER_ID
作为用户名。将NUMERIC_USER_ID
替换为上一步中获得的用户 ID。将唯一标识符指定为电子邮件。您可以使用任意的唯一字符串。
指定用户的角色。例如
Op
。确保选中有效复选框。
指定用户的名字和姓氏。您可以使用任何字符串。
点击保存。
gcloud
运行以下 Airflow CLI 命令:
gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users create -- \ -u accounts.google.com:NUMERIC_USER_ID \ -e UNIQUE_ID \ -f UNIQUE_ID \ -l - -r Op --use-random-password
替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。NUMERIC_USER_ID
替换为在上一步中获取的用户 ID。UNIQUE_ID
替换为 Airflow 用户的标识符。您可以使用任意的唯一字符串。
为服务账号创建 Airflow 用户后,以该服务账号身份进行身份验证的调用方会被识别为预注册用户,并登录到 Airflow。
扩缩 Airflow REST API 组件
Airflow REST API 和 Airflow 界面端点在 Airflow 网络服务器中运行。如果您大量使用 REST API,请根据预期负载考虑增加 Airflow Web 服务器可用的 CPU 和内存量。