如何从不同的 GCP 项目触发 Airflow dag?
How to trigger an Airflow dag from different GCP project?
我有两个独立的 DAG,比方说 DAG_A 和 DAG_B,每个都有多个任务
这两个 DAG 在不同的 GCP 项目中,假设分别为 projct-1 和 project-2。
我想做的是创建第 3 个 DAG,我们称之为 DAG_C
DAG_C 将成为 project-1 的一部分,并将用于编排 DAG_A 和 DAG_B.
DAG_C 应该从触发 DAG_A 开始,然后在 task_2成功应该触发DAG_B
请看这张简化问题的图片:
Overview of the architecture
问题是:使用 TriggerDagRunOperator 是否可行,因为我看不到任何更改 GCP 项目的选项该运营商的 ID ?
此外,实现“假设 TriggerDagRunOperator 在那种情况下不起作用”的最佳方法是什么?
无法使用 TriggerDagRunOperator
执行此操作,因为操作员只能看到它所在的 Airflow 实例的范围。
您唯一的选择是使用 Airflow Rest API。
在 DAG_C
中,trigger_B
任务需要是一个 PythonOperator
,它使用 project_2
的其余 API 进行身份验证,然后使用 Trigger new DagRun endpoint to trigger DAG_B
. Note that Airflow provides official Python client 作为API 所以你可以用它来完成这个任务。
我有两个独立的 DAG,比方说 DAG_A 和 DAG_B,每个都有多个任务
这两个 DAG 在不同的 GCP 项目中,假设分别为 projct-1 和 project-2。
我想做的是创建第 3 个 DAG,我们称之为 DAG_C
DAG_C 将成为 project-1 的一部分,并将用于编排 DAG_A 和 DAG_B.
DAG_C 应该从触发 DAG_A 开始,然后在 task_2成功应该触发DAG_B
请看这张简化问题的图片: Overview of the architecture
问题是:使用 TriggerDagRunOperator 是否可行,因为我看不到任何更改 GCP 项目的选项该运营商的 ID ?
此外,实现“假设 TriggerDagRunOperator 在那种情况下不起作用”的最佳方法是什么?
无法使用 TriggerDagRunOperator
执行此操作,因为操作员只能看到它所在的 Airflow 实例的范围。
您唯一的选择是使用 Airflow Rest API。
在 DAG_C
中,trigger_B
任务需要是一个 PythonOperator
,它使用 project_2
的其余 API 进行身份验证,然后使用 Trigger new DagRun endpoint to trigger DAG_B
. Note that Airflow provides official Python client 作为API 所以你可以用它来完成这个任务。