【发布时间】:2021-05-05 20:41:53
【问题描述】:
我正在尝试让 Google Cloud Functions 从存储桶中的文件中打印一些内容。
我将文件存储在一个存储桶中,一个经过身份验证的服务帐户 Storage Admin、Cloud Run Admin、Service Account User 和 Cloud Functions Admin 以及以下 python 脚本。
def from_storage(event, context):
import json
from google.cloud import storage
client = storage.Client(project='my-project')
try:
bucket = client.get_bucket('my-storage')
except Exception as e:
print('Bucket not found.')
print(e)
try:
blob = bucket.blob('Hello_World.json')
data = json.load(blob.download_as_string())
return data
except Exception as e:
print('Error loading file:')
print(e)
我尝试使用以下代码进行部署:
gcloud functions deploy from_storage --runtime python39 --triger-http --allow-unauthenticated
我收到一个错误,即部署服务帐户(似乎是自动创建的服务帐户)没有storage.objects.get 权限:
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: could not resolve storage source: googleapi: Error 403: 488395598433@cloudbuild.gserviceaccount.com does not have storage.objects.get access to the Google Cloud Storage object., forbidden
我觉得这很奇怪,因为我在我的 IAM 中看不到这个服务帐户,也无法在 Cloud Functions 中访问它的权限。任何帮助将不胜感激!
【问题讨论】:
-
如果重新启用 Cloud Build API 后您仍然看不到它的服务帐户,请通过“IAM & Admin”->“IAM”页面手动添加它,授予它 Cloud Build 服务帐户角色。
-
重新启用就可以了。我之前已经启用了 Cloud Build API,知道为什么没有出现相应的服务帐户吗?
-
我也遇到了这个错误。 2021 年 4 月 20 日
标签: python google-cloud-platform google-cloud-functions google-iam