在 GCP Compute 服务器上使用 GCE 元数据服务器通过服务帐户使用 Drive API

Use Drive API through a service account using GCE Metadata server at GCP Compute server

已使用具有这些云端硬盘文件访问权限的服务帐户通过云端硬盘 API 成功访问文件,方法是使用带有 .json 凭据的常规身份验证。

现在,我们要删除 .json 凭据的使用并依赖 GCE 元数据服务器,如此处所述https://github.com/googleapis/google-api-nodejs-client#:~:text=When%20running%20in%20GCP%2C%20service%20authorize%20is%20automatically%20provided%20via%20the%20GCE%20Metadata%20server。但是我一直收到 Insufficient Permission: Request had insufficient authentication scopes. 错误,即使我设置范围的方式与我对 .json 凭证所做的相同,请求成功。

我使用的 Node.js 代码是:

const google = require('@googleapis/drive') // v2.0.2

const auth = new google.auth.GoogleAuth({ scopes: ['https://www.googleapis.com/auth/drive'] })
const drive = google.drive({ version: 'v3', auth })

await drive.files.create(...)

是否可以使用 GCE 元数据令牌访问驱动器 API?

要访问云端硬盘,必须满足 2 个条件:

  1. 必须授予服务帐户访问云端硬盘的权限
  2. VM 必须是使用 --scopes https://www.googleapis.com/auth/drive
  3. 创建的

我怀疑你错过了 (2)。请注意,Allow full access to all Cloud APIs 不包括 Drive,因为 Drive 不是 Google Cloud API。