Cloud Composer + Airflow:设置DAW以在HTTP上触发或者我应该使用Cloud Functions吗?

问题描述

最终,我想做的是有一个Python脚本,该脚本可以在创建HTTP请求时动态地运行。就像这样:App 1运行并发出一个Webhook,Python脚本立即捕获该Webhook并执行其所有操作。

我看到您可以在GCP中使用Composer和Airflow来做到这一点。

但是在这些指令https://cloud.google.com/composer/docs/how-to/using/triggering-with-gcf之后,我遇到了几个问题:

  1. 在Cloud Shell中运行此操作以授予Blob签名权限:

    gcloud iam服务帐户add-iam-policy-binding
    your-project-id@appspot.gserviceaccount.com
    --member = serviceAccount:your-project-id@appspot.gserviceaccount.com
    --role = roles / iam.serviceAccountTokenCreator

当我输入项目ID时,我会得到一个“找不到针对您的project-id@appspot.gserviceaccount.com的Gaia ID”

  1. 当我运行airflow_uri = environment_data ['config'] ['airflowUri']位时,我在'config'上遇到关键错误

是否有更好的方法来做我想做的事情(即动态运行Python脚本)?

解决方法

出现Gaia id not found for email <project-id>@appspot.gserviceaccount.com错误的原因是未在项目中启用所有必需的API。请按照以下步骤操作:

  1. 创建或选择要使用的Google Cloud Platform项目。
  2. 启用Cloud Composer,Google Cloud Functions和Cloud Identity以及Google Identity and Access Management(IAM)API。您可以在Menu-> Products-> Marketplace中找到它,然后键入相应API的名称。
  3. 授予对Cloud Functions Service帐户的Blob签名权限。为了使GCF向保护气流Web服务器的代理Cloud IAP进行身份验证,您需要向Appspot服务帐户GCF授予服务帐户令牌创建者角色。为此,请在Cloud Shell中运行以下命令,将项目名称替换为<your-project-id>
gcloud iam service-accounts add-iam-policy-binding \
<your-project-id>@appspot.gserviceaccount.com \
--member=serviceAccount:<your-project-id>@appspot.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

我测试了该方案,首先没有启用API,并且检索到与您相同的错误。启用API后,错误消失并且IAM策略已正确更新。

Codelabs tutorial已有很好的描述,它显示了使用Google Cloud Functions触发DAG的工作流程。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...