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

问题描述 投票:0回答:1

全部,

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

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

感谢您的帮助

最佳问候

google-cloud-platform airflow airflow-scheduler google-cloud-composer
1个回答
0
投票

Composer是Google的一项托管服务,根据Architecture,Airflow Web Server被隔离在一个租户项目中。为了能够访问,您必须通过身份识别代理处理身份验证。由于您无权访问租户项目的设置,因此实现起来可能会有些困难。您可以使用所有者帐户从Web浏览器进行身份验证,以访问Airflow Web Server并使用Airflow API。

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

到达服务器的更可靠的选择是设置自己的Web Server

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

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

© www.soinside.com 2019 - 2024. All rights reserved.