【发布时间】:2015-10-29 13:25:58
【问题描述】:
在 GCE 上运行了一个实例,并且在同一个项目中有一个 GCS 存储桶。但我无法向其写入数据。如何将数据从 VM 实例写入存储桶?
【问题讨论】:
标签: google-cloud-storage google-compute-engine service-accounts
在 GCE 上运行了一个实例,并且在同一个项目中有一个 GCS 存储桶。但我无法向其写入数据。如何将数据从 VM 实例写入存储桶?
【问题讨论】:
标签: google-cloud-storage google-compute-engine service-accounts
更新:截至 2016 年 12 月 15 日,setServiceAccount 功能现在处于测试版:
如果您想以不同的身份运行,或者您确定该实例需要一组不同的范围来调用所需的 API,您可以更改现有实例的服务帐号和/或访问范围。例如,您可以更改访问范围以授予对新 API 的访问权限,或更改实例以使其作为您创建的服务帐户而不是 Compute Engine 默认服务帐户运行。
要更改实例的服务帐号和访问范围,必须暂时停止该实例。要停止您的实例,请阅读Stopping an instance 的文档。更改服务帐号或访问范围后,记得restart the instance。
documentation 提供了有关如何使用 Google Cloud Console、gcloud CLI 工具以及 API 来使用此功能的说明。这是使用gcloud 的示例;请参阅docs 了解更多信息。
gcloud beta compute instances set-scopes [INSTANCE_NAME] \ --service-account [SERVICE_ACCOUNT_EMAIL] \ [--no-scopes | --scopes [SCOPES,...]]
上一个答案(2016 年 12 月 15 日之前有效):
您无法更改正在运行的虚拟机实例的范围。您可以:
create a new instance(可能重用当前实例的磁盘)在创建时指定正确的范围,例如:
gcloud compute instances create [...] --scopes storage-rw
如果您想在虚拟机内部手动使用gsutil,您可以在虚拟机内部运行gsutil config,并按照提示进行身份验证
如果您计划通过 Google API 使用自动化工具,请使用service account
【讨论】:
【讨论】: