问题描述
最终,我想做的是有一个Python脚本,该脚本可以在创建HTTP请求时动态地运行。就像这样:App 1运行并发出一个Webhook,Python脚本立即捕获该Webhook并执行其所有操作。
我看到您可以在GCP中使用Composer和Airflow来做到这一点。
但是在这些指令https://cloud.google.com/composer/docs/how-to/using/triggering-with-gcf之后,我遇到了几个问题:
-
在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”
是否有更好的方法来做我想做的事情(即动态运行Python脚本)?
解决方法
出现Gaia id not found for email <project-id>@appspot.gserviceaccount.com
错误的原因是未在项目中启用所有必需的API。请按照以下步骤操作:
- 创建或选择要使用的Google Cloud Platform项目。
- 启用Cloud Composer,Google Cloud Functions和Cloud Identity以及Google Identity and Access Management(IAM)API。您可以在
Menu
->Products
->Marketplace
中找到它,然后键入相应API的名称。 - 授予对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的工作流程。