首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决"HttpError:匿名调用方没有storage.objects.get访问GoogleCloudStorageObject.401“错误?

如何解决"HttpError:匿名调用方没有storage.objects.get访问GoogleCloudStorageObject.401“错误?
EN

Stack Overflow用户
提问于 2022-03-16 23:09:03
回答 1查看 3.1K关注 0票数 1

问题:我正在尝试使用google笔记本在一个存储在我项目的云存储桶中的.gz JSON文件中读取,我一直收到这个错误:

代码语言:javascript
运行
复制
HttpError: Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object., 401

我的代码:

代码语言:javascript
运行
复制
fs = gcsfs.GCSFileSystem(project='my-project')
with fs.open('bucket/path.json.gz') as f:
    gz = gzip.GzipFile(fileobj=f) 
    file_as_string = gz.read()
    json_a = json.loads(file_as_string)

--我尝试过所有这些身份验证方法,但仍然得到相同的401错误:

代码语言:javascript
运行
复制
!gcloud auth login
!gcloud auth list
!gcloud projects list
!gcloud config set project 'myproject-id'
代码语言:javascript
运行
复制
from google.colab import auth
auth.authenticate_user()
代码语言:javascript
运行
复制
!gcloud config set account 'my GCP email'
代码语言:javascript
运行
复制
!gcloud auth activate-service-account
代码语言:javascript
运行
复制
!gcloud auth application-default login
代码语言:javascript
运行
复制
!gsutil config
代码语言:javascript
运行
复制
!gcloud config set pass_credentials_to_gsutil false
代码语言:javascript
运行
复制
!gsutil config -a

我还将我的GCP权限设置为:

  • 编辑器
  • 所有者
  • 仓储管理
  • 存储对象管理
  • 存储对象创建者
  • 存储对象查看器
  • 储存转移管理
EN

回答 1

Stack Overflow用户

发布于 2022-03-17 00:08:05

你的问题还不完全清楚,但:

  1. gcloud和Google都使用谷歌的身份验证平台,但它们并不共享状态。你通常(!)不能使用gcloud登录,也不能期望使用SDK的代码也能通过身份验证
  2. @john正确地指出,在gcloud和使用Google的代码之间共享状态的一种方法(经常令人困惑)是使用gcloud auth application-default-login。但是,这只是因为gcloud在本地写入其状态,并且在同一主机上以相同用户的身份运行时,使用Google编写的代码将能够访问此状态。我想(?)这将不适用于基于浏览器的collab。
  3. 我不熟悉gcsfs.GCSFileSystem,但它是而不是Google的。除非它的开发人员特别周到,否则它将无法利用Google使用auth.authenticate_user()完成的身份验证。

所以..。

我觉得你应该:

  1. 确保您的用户帐户(you@gmail.com或其他任何帐户)具有roles/storage.objectAdmin (或任何允许storage.objects.get预定义角色 )。
  2. 使用google.collab.authauth.authenticate_user()获取浏览器登录用户(即you@gmail.com)的凭据。
  3. 使用Google库,例如google-cloud-storage来访问GCS对象。Google库可以利用上一步获得的凭据。

更新

这是一个示例

备注:它使用的是API,而不是Client,但它们在功能上是等价的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71505271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档