我尝试部署一个存储触发的Cloud Function,尽管此过程通常对于相同组织中的许多项目以及类似的设置都可以正常工作,但是从昨天开始我就遇到了麻烦。
我可以在多个组织的所有GCP项目中观察到以下模式:
类别A 如果昨天之前至少有一个存储触发功能已部署到项目中,我可以再次部署相同功能或新功能到这个项目,没问题。
$API_PROJECT_ID@gs-project-accounts.iam.gserviceaccount.com
类别B 如果昨天之前没有将存储触发的功能部署到项目中,那么我无法部署存储触发的功能,无论我是否通过Cloud Build部署功能,或者如果我通过GCP控制台创建简单的存储桶功能,即使我只是按原样使用UI建议的示例代码并链接到项目中的默认存储桶也是如此。
503 Backend Error
在这两个类别之间的设置中,我找不到其他任何显着差异,尤其是IAM和ACL,启用的API,并且我已经确保该功能始终与存储区在同一项目中创建触发资源。
gcloud functions deploy
$是缩回名称
gcloud functions deploy $FUNCTION_NAME --region=us-central1 --source=https://source.developers.google.com/projects/$PROJECT_ID/repos/$REPO_NAME/moveable-aliases/$BRANCH_NAME/paths/$FUNCTION_NAME/src --trigger-resource=$API_PROJECT_ID-input --trigger-event=google.storage.object.finalize --timeout=540 --runtime=python37 --entry-point=main --memory=128MB --project=$API_PROJECT_ID --retry
对于属于B类的项目,将显示此错误。
ERROR: (gcloud.functions.deploy) OperationError: code=13, message=Failed to configure trigger GCS Bucket: $API_PROJECT_ID-input
在A类项目中执行相同的操作,按预期成功。
在Create function页上,
Cloud Storage
作为 Trigger $API_PROJECT_ID.appspot.com
对于所有类别B的项目,部署将失败,但对于类别A的项目,部署将成功。
UI中的部署状态消息显示以下错误:
Deployment failure:
Failed to configure trigger GCS Bucket: $API_PROJECT_ID
然后我开始比较设置,并注意到在GCP控制台的“云存储”>“设置”下,只有类别A 的项目才具有云存储服务帐户。 类别B 的项目没有Cloud Storage服务帐户。因此,我尝试从API检索帐户:
https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get
您可能会猜到,我只会为类别A 中的项目获得200 OK
和相应的Cloud Storage服务帐户名,而对于类别B中的所有项目,我都会得到503
/ strong>我将看到此错误响应,代码为{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 503,
"message": "Backend Error"
}
}
:
$API_PROJECT_ID-input
从昨天开始,我已经为许多不同的项目尝试过几次,没有任何改变。
我已遵循以下指示: https://cloud.google.com/storage/docs/getting-service-account使用此页面上的API资源管理器:https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get
我不确定503错误,缺少服务帐户和部署失败(代码13)的问题是否相关。但是IIRC,GCF的存储触发器实际上基于Pub / Sub,并且需要使用服务帐户,如GCP控制台中 Storage> Settings
下的帮助文本所述:每个项目都有一个关联的Cloud Storage服务帐户。这用于执行某些后台操作:接收PubSub通知以及对KMS加密对象进行加密/解密。
我还在这里阅读了有关此服务帐户的建议:https://cloud.google.com/storage/docs/projects#service-accounts
我还尝试了以下解决方法:
$API_PROJECT_ID.appspot.com
,然后在没有预定义的Acl的情况下再次部署$API_PROJECT_ID-input
Storage Object Creator
存储桶的IAM中)答案 0 :(得分:0)
我已经开了一个案子,后来GCP通知我这是一个普遍的问题,只影响了不到1%的项目。
截至2019年1月11日(星期五),我们已收到有关Google Cloud Pub / Sub问题的报告。我们将在2019年1月11日(星期五)美国/太平洋地区提供更多信息。
有关背景信息:Cloud Functions的存储桶触发器使用Cloud Pub / Sub。