如何在存储在 DAG 文件夹中的 python 脚本中获取作曲家气流的 运行 DAG 列表?

How to get the list of running DAGs of composer airflow in a python script stored in DAG folder?

全部,

我们有几个 JSON 个带有 DAG 信息的文件。我已经创建了一个 python 脚本来读取那些 JSON 文件来为 Composer airflow 动态生成 DAG。现在我面临的挑战是在我的 python 脚本中获取 运行 DAG 列表并从我的本地系统触发单个 DAG。

在我的本地,我设置了 SSH 私钥,因此我可以使用以下命令在 composer airflow 中获取 DAG 列表 运行。

gcloud -q composer environments run "$ENVIRONMENT" --location "$REGION" list_dags

我可以使用气流服务器 URL 使用 POST/GET 请求,但在触发它时遇到身份验证错误。

curl -X POST http://<airflow servername>api/experimental/dags/airflow_monitoring/dag_runs -H 'Cache-Control: no-cache' -H 'Content-Type: application/json' -H 'Content-Length: 0'

有人可以帮我解决以下问题吗?

  1. 如何在 composer airflow 的 DAG 文件夹中的 python 脚本中获取 运行 DAG 的列表?
  2. 我无法使用 composer 环境变量覆盖 "webserver-authenticate" 气流配置变量,因为此变量已被阻止。如果我无法覆盖配置变量,如何启用身份验证?
  3. 有没有办法通过提供通用 credentials/individual 凭据或从任何人的本地系统以其他方式启动 DAG?我想我可以通过使用 Jenkins 作业来完成这项任务,但我想知道它是否可以从 terminal/commandline.
  4. 开始

感谢您的帮助

此致

Composer 是来自 Google 的托管服务,根据 Architecture,Airflow Web 服务器在租户项目中是隔离的。为了能够访问,您必须通过 Identity-Aware Proxy 处理身份验证。这可能有点难以实现,因为您无权访问租户项目的设置。您可以使用 Owner 帐户从 Web 浏览器进行身份验证以访问 Airflow Web 服务器并使用 Airflow API.

但是如果您想尝试在脚本中执行此操作,则必须创建一个 JWT token。但是这个选项存在一些问题,因为您无权访问租户项目并且您需要正确设置 IAP 和您的脚本才能创建令牌。

连接服务器的更可靠方法是设置您自己的 Web Server

此外,如果您想要获得 运行 DAG,您也可以尝试使用 logs。这样你可能会得到一个解决方法。

关于DAG的执行,可以查看如何触发DAGhere