google-cloud-platform - 我被授予存储权限的服务帐户没有 storage.objects.list 访问 Google Cloud Storage 存储桶的权限
问题描述
我在谷歌云上的虚拟机中使用 Ubuntu。我有一个将文件备份到存储桶的 .sh 脚本。当我尝试运行脚本时,它会抛出一个错误:
AccessDeniedException: 403 blank@blank.iam.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.
我授予服务帐户管理员存储权限。该帐户已激活,一切正常。我该如何解决?
解决方案
由于您正在从 Ubuntu VM 执行脚本,并且 Ubuntu VM 通常具有只读访问范围。这可能会阻止将备份文件上传到 GCS 存储桶。
要更改实例的服务帐户和访问范围,必须暂时停止该实例。要停止您的实例,请阅读停止实例的文档。更改服务帐户或访问范围后,请记住重新启动实例。使用以下方法之一更改已停止实例的服务帐户或访问范围。
您还可以使用 gcloud 命令更改访问范围。
gcloud compute instances set-service-account [INSTANCE_NAME] \
[--service-account [SERVICE_ACCOUNT_EMAIL] | --no-service-account] \
[--no-scopes | --scopes [SCOPES,...]]
一旦您的实例关闭,您可以将存储的访问范围设置为完整,我认为这对您有用,因为您已将存储管理员角色分配给服务帐户。
推荐阅读
- tensorflow - Keras 错误:AttributeError:模块“tensorflow”没有属性“get_default_graph”
- python - 使用 pygrib 写入插值 grib2 数据会导致 grib 文件不可用
- git - 如何挑选作者所做的所有提交?
- requirejs - PDF.js 使用 RequireJS 呈现不正确的字符
- regex - 使用正则表达式匹配模式,如
狗 猫 - bucket - 有没有办法只提取元数据和 grib 中的特定范围?
- java - Bean 属性 'sakilaDao' 不可写或具有无效的 setter 方法。setter 的参数类型是否与 getter 的返回类型匹配?
- typescript - 如何从 nodejs 服务器的 react-native-webview 获取数据?
- python - discord.py 自定义嵌入命令没有响应
- c++ - 如何将文件读入元组向量?