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:
运行 在云端 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”
- 当我 运行 airflow_uri = environment_data['config']['airflowUri'] 位时,我在 'config'.
有没有更好的方法来做我想做的事情(即 运行 Python 动态脚本)?
得到的原因:Gaia id not found for email <project-id>@appspot.gserviceaccount.com
错误是没有在您的项目中启用所有需要的 API。请按照以下步骤操作:
- 创建或select Google 您希望使用的云平台项目。
- 启用 Cloud Composer、Google Cloud Functions 和 Cloud Identity 以及 Google Identity and Access Management (IAM) APIs。您可以在
Menu
-> Products
-> Marketplace
中找到它并键入相应的 API. 的名称
- 授予 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 的工作流程。
最终,我想要做的是拥有一个 Python 脚本,每当创建 HTTP 请求时,该脚本都会动态地 运行s 。就像:App 1 运行s 并发送一个 webhook,Python 脚本立即捕获 webhook 并执行它所做的一切。
我看到您可以在 GCP 中使用 Composer 和 Airflow 执行此操作。
但是按照这些说明我遇到了几个问题https://cloud.google.com/composer/docs/how-to/using/triggering-with-gcf:
运行 在云端 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”
- 当我 运行 airflow_uri = environment_data['config']['airflowUri'] 位时,我在 'config'.
有没有更好的方法来做我想做的事情(即 运行 Python 动态脚本)?
得到的原因:Gaia id not found for email <project-id>@appspot.gserviceaccount.com
错误是没有在您的项目中启用所有需要的 API。请按照以下步骤操作:
- 创建或select Google 您希望使用的云平台项目。
- 启用 Cloud Composer、Google Cloud Functions 和 Cloud Identity 以及 Google Identity and Access Management (IAM) APIs。您可以在
Menu
->Products
->Marketplace
中找到它并键入相应的 API. 的名称
- 授予 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 的工作流程。