全部,
我们有几个带有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'
有人可以帮我解决以下问题吗?
感谢您的帮助
最佳问候
Composer是Google的一项托管服务,根据Architecture,Airflow Web Server被隔离在一个租户项目中。为了能够访问,您必须通过身份识别代理处理身份验证。由于您无权访问租户项目的设置,因此实现起来可能会有些困难。您可以使用所有者帐户从Web浏览器进行身份验证,以访问Airflow Web Server并使用Airflow API。
但是,如果要尝试在脚本内部执行此操作,则必须创建JWT token。但是,此选项存在问题,因为您无权访问租户项目,并且需要正确设置IAP和脚本才能创建令牌。
到达服务器的更可靠的选择是设置自己的Web Server
此外,如果要获取正在运行的DAG,也可以尝试使用logs。这样,您可能会找到解决方法。
关于DAG的执行,您可以查看如何触发DAG here。