google-cloud-platform - 哪些是用于将对象复制到 Cloud Storage 存储分区的凭据
问题描述
我需要将一个对象(文件)复制到名为destination-bucket1
.
管理员仅向命名service-account1
的服务帐户提供了写入权限destination-bucket1
,并且没有个人帐户对destination-bucket1
. service-account1
此外,现有策略不允许为该服务帐户 ( ) 创建密钥。
我正在通过名为instance1
的 SSH 访问 Compute Engine VM 实例,该实例位于相同的service-account1
,因此instance1
可以访问destination-bucket1
via service-account1
。
如果我gsutil cp file1.bin gs://destination-bucket1
使用 Cloud SDK 凭据运行命令,我会使用自己的凭据来访问destination-bucket1
. 这就是为什么这个操作应该失败 - 因为访问被拒绝。
问题是,如果我通过 SSH 执行以下命令instance1
gsutil cp file1.bin gs://destination-bucket1
我应该使用instance1
服务帐户service-account1
的凭据还是我自己的凭据?
解决方案
您必须使用有权写入存储桶的帐户的凭据。
如果您自己的帐户有权写入存储桶并且您想使用它,您可以使用以下命令从 VM 登录您的帐户gcloud auth login
为了在使用自己的默认服务帐户的计算引擎中使用 gsutil cp 命令,您需要:
通过控制台访问您的实例,停止它,按编辑,向下滚动以访问范围并将存储范围设置为读写或完全访问。
然后转到您的存储桶并编辑您的权限,您可以根据需要将 Compute Engine 的服务帐户设置为存储桶所有者、读取器...。
转到 API 和服务并启用 Storage Transfer API
然后通过在您的实例中运行以下命令从您的虚拟机中删除旧的 gsutil 权限:
sudo rm -r ~/.gsutil
现在您应该可以使用 gsutil 命令了
推荐阅读
- java - 如何将随机生成的数字实现为 setter 或 getter 中的变量?
- talend - 具有日期数据类型的 Talend 上下文变量
- java - 如何在不立即保存的情况下将文件发送给客户端
- xslt - 将标签放在 xslt 中两个常量单词之间的空格中
- flutter - 如何将 Flutter 应用程序连接到本地数据库并检索数据以制作动态视图?
- python - 当我在 statsmodels 包下拟合动态因子模型时,出现“不支持对象数组”的错误
- sql - VBA 代码在调试模式下按预期运行,但在运行时模式下不会复制更新的数据
- arrays - 如何将活动目录数据导入数组并将其导出到单个 CSV 文件中?
- jena - 如何使用耶拿 fuseki 推理器计算三倍数?
- asp.net-core - 无法实现数据库模型关系