大佬教程收集整理的这篇文章主要介绍了Cloud Build 服务帐号无权访问 storage.objects.get,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 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 中访问其权限。任何帮助将不胜感激!
我猜 488395598433@cloudbuild.gserviceaccount.com
- 是一个 Cloud Build 服务帐户,其中前缀(数字)是运行 Cloud Build 的项目的编号。您能检查一下 Cloud Build API 是否已启用吗?并且 Cloud Build 服务帐户具有相关权限,好吗?
在运行时,默认情况下,云函数在 PROjeCT_ID@appspot.gserviceaccount.com
服务帐户下运行,其中 PROjeCT_ID
是项目的 ID,该云函数在其中部署(并且应该运行)。这是 App ENGIne 默认服务帐户。
可以(并推荐)根据最小权限原则创建专用服务帐户。在这种情况下,您可以使用相应的参数部署云函数(不在您的示例中)。
据我对您的特定示例的最佳理解,将使用默认的 App ENGIne 服务帐户。
无论哪种情况,云函数运行时服务帐户都应具有相关权限(IAM 权限/角色)以使用 API 和资源(在任何项目中)。
请问云函数运行时服务账号是否有访问云存储桶的相关权限?请记住,云功能可能部署在一个项目中,而存储桶可能在另一个项目中。
在您的帖子中,您提到您有一个“经过身份验证的服务帐户”,具有某些权限。如果您使用默认的 App ENGIne 帐户部署服务帐户,那么该服务帐户的用途是什么?可能我错过了什么。 “为了使用非默认服务帐户部署函数,部署者必须对正在部署的服务帐户具有 iam.serviceAccounts.actAs
权限。” - 来自 Permissions required to use non-default identities 如果您是这种情况 - 请您也检查一下好吗?
如果您在其他服务帐户中看不到“xxxxxxxxxxxx@cloudbuild.gserviceaccount.com”。因此,我认为在激活 Cloud Build API 时出了点问题。您能否先禁用 Cloud Build API,然后重新启用它,看看是否能解决问题?
如果在重新启用 Cloud Build API 后仍然看不到其服务帐户,请通过“IAM & Admin”->“IAM”页面手动添加它,授予其 Cloud Build 服务帐户角色。
> ,参考:
Configure Access for Cloud Build service Account 和此 link 解释了自动创建的 Cloud Build 服务帐户开始时的权限(在自动创建时授予)。
根据我的经验以及我猜测的幕后情况,我收到了这个错误,您可能也遇到了,因为您是第一次使用 Cloud Build 服务。所以我在第一次运行脚本时遇到了错误,但是在后续运行中错误消失了。这意味着在服务器上授予权限需要时间。
以上是大佬教程为你收集整理的Cloud Build 服务帐号无权访问 storage.objects.get全部内容,希望文章能够帮你解决Cloud Build 服务帐号无权访问 storage.objects.get所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。