【问题标题】:How to get the list of running DAGs of composer airflow in a python script stored in DAG folder?如何在存储在 DAG 文件夹中的 python 脚本中获取正在运行的作曲家气流的 DAG 列表?
【发布时间】:2020-04-11 12:05:23
【问题描述】:

全部,

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

在我的本地,我已经设置了私有 SSH 密钥,因此我可以使用以下命令获取在 composer 气流中运行的 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气流的DAG文件夹中的python脚本中获取正在运行的DAG列表?
  2. 我无法使用 composer 环境变量覆盖“webserver-authenticate”气流配置变量,因为该变量被阻止。如果无法覆盖配置变量,如何启用身份验证?
  3. 有没有办法通过提供通用凭证/个人凭证或其他方式从任何人的本地系统启动 DAG?我想我可以通过使用 Jenkins 作业来完成这项任务,但我想知道它是否可以从终端/命令行完成。

感谢您的帮助

最好的问候

【问题讨论】:

    标签: google-cloud-platform airflow airflow-scheduler google-cloud-composer


    【解决方案1】:

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

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

    访问服务器的更可靠的选择是设置您自己的Web Server

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

    至于 DAG 的执行,你可以查看如何触发 DAG here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 2019-01-29
      • 2016-02-04
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多