我正在尝试手动执行我需要的步骤来自动化过程,以了解它是如何工作的,并确保我直接获得所有命令。但是当我尝试使用命令执行此操作时:
gsutil cp file_name gs://bucket_name/
我收到以下错误:
AccessDeniedException: 403 Insufficient OAuth2 scope to perform this operation.
这应该是一件非常简单的事情,但我无法做对。我习惯在AWS中这样做,但我无法在Google Cloud中做同样的事情。谁知道如何克服它?
答案 0 :(得分:1)
看起来您用于尝试此副本的帐户无权将对象写入bucket-name
存储区。
如果您在GCE VM上执行此操作并使用其默认服务帐户,请确保在创建VM时选择了正确的访问范围 - 默认范围包括对GCS的只读访问权限。您可以通过登录VM并使用curl
查询GCE元数据服务器来检查:
$ curl -H 'Metadata-Flavor: Google' "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/scopes"
[...]
https://www.googleapis.com/auth/devstorage.read_only
[...]
答案 1 :(得分:1)
我和我的一个朋友谈过,他帮助我解决了这个问题,这就是解决方案:
我的GCE VM拥有Google云端存储的只读权限。我在网上发现,您只能在创建GCE VM时更改此状态,为了克服这个问题,我需要创建一个新的并删除此VM。这样可行,但我不想放弃我在当前VM中所做的一切。
另一个对我有用的解决方案是创建服务帐户(Google云平台> IAM& admin>服务帐户)。您只需要为其提供所需的服务帐户名称,然后选择“提供新的私钥”。然后你应该好好去。之后,我可以将文件从GCE VM复制到存储,并执行我需要的所有其他操作。
答案 2 :(得分:1)
嘿@Marcus Vinicius Melo,
我是项目负责人,仍然面临同样的问题。安装gcs python软件包后,它解决了。尝试pip安装google-cloud-storage
答案 3 :(得分:0)
嘿,@ Marcus Vinicius Melo,您只需要在GCP中启用Storage Transfer API,然后gsutil将GCE存储到桶即可。
答案 4 :(得分:0)
此错误与读取/写入权限无关,但与分配给您的计算实例的范围有关。换句话说,您需要授予它使用GCP资源的权限,接下来要做的是对特定对象的读/写权限。
以前必须重新创建实例,但是现在足以停止然后在命令下运行,例如使用云外壳程序
gcloud compute instances set-service-account myinstance \
--service-account 192893587797-compute@developer.gserviceaccount.com \
--scopes cloud-platform
当然要替换myinstance
和192893587797-compute@developer.gserviceaccount.com
并分别使用您自己的compute instance
和service account name
。
答案 5 :(得分:0)
这是我解决此问题的方式,可能对这里的新用户有所帮助:
不删除现有VM的逐步过程:
sudo gsutil cp FILE_PATH gs://<BUCKET>