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

Cloud Composer + Airflow: Setting up DAWs to trigger on HTTP (or should I use Cloud Functions?)

最终,我想要做的是拥有一个 Python 脚本,每当创建 HTTP 请求时,该脚本都会动态地 运行s 。就像:App 1 运行s 并发送一个 webhook,Python 脚本立即捕获 webhook 并执行它所做的一切。

我看到您可以在 GCP 中使用 Composer 和 Airflow 执行此操作。

但是按照这些说明我遇到了几个问题https://cloud.google.com/composer/docs/how-to/using/triggering-with-gcf:

  1. 运行 在云端 Shell 授予 blob 签名权限:

    gcloud iam service-accounts add-iam-policy-binding
    你的项目 ID@appspot.gserviceaccount.com
    --member=serviceAccount:your-project-id@appspot.gserviceaccount.com
    --role=roles/iam.serviceAccountTokenCreator

当我输入我的项目 ID 时,我收到“找不到您的项目 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. 创建或select Google 您希望使用的云平台项目。
  2. 启用 Cloud Composer、Google Cloud Functions 和 Cloud Identity 以及 Google Identity and Access Management (IAM) APIs。您可以在 Menu -> Products -> Marketplace 中找到它并键入相应的 API.
  3. 的名称
  4. 授予 Cloud Functions 服务帐户的 blob 签名权限。为了让 GCF 向保护 Airflow 网络服务器的代理 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

我测试了这个场景,首先没有启用 APIs,我发现了和你一样的错误。启用 APIs 后,错误消失,IAM 策略已正确更新。

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