与 Developer Device Platform 共享 Cloud Storage 存储桶

与许多 Google Cloud 服务一样,Developer Device Platform 也有专门的服务代理。本页介绍了 DDP 服务代理的工作原理、功能以及如何与其共享资源。

权限

首次为项目使用 DDP 时,系统会创建一个服务代理类型的服务账号,其名称为:service-PROJECT_ID@gcp-sa-devicerun.

启用 Device Run API (devicerun.googleapis.com) 时,Google Cloud 会自动预配服务代理,并在项目级层为其分配 roles/devicerun.serviceAgent 角色。

此服务代理会被授予在启动 Developer Device Platform 的 Google Cloud 项目中执行操作的权限。服务代理使用自己的凭据(而非您的凭据)来执行以下操作:

  • 读取和写入 Cloud Storage 存储桶和对象
  • 将 Cloud Storage 输入文件下载到内部系统
  • 将文件从内部系统上传到 Cloud Storage 输出存储桶

这意味着,您可能拥有对某个 Cloud Storage 存储桶和文件的访问权限,但该存储桶归与 DDP 中使用的 Google Cloud 项目不同的项目所有。您还可以针对各个存储桶设置额外的访问权限控制。

因此,Developer Device Platform 服务代理可能无法访问这些资源。按照此处的说明,与 DDP 服务代理分享对特定存储桶的访问权限。

共享访问权限

如需了解如何在支持 DDP 的项目中将文件与测试一起纳入,请参阅Device Run。如果您的 Cloud Storage 存储桶位于不同于 DDP 项目的Google Cloud 项目中,并且您希望设备运行能够读取这些文件,则必须按照此处所述,向启动 DDP 请求的项目的服务代理授予 roles/storage.objectViewer

向服务代理授予 Storage Object Viewer 角色:确保 DDP 服务代理对包含文件的 Cloud Storage 存储桶具有 Storage Object Viewer (roles/storage.objectViewer) 角色:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member="serviceAccount:service-PROJECT_ID@gcp-sa-devicerun." \  --role="roles/storage.objectViewer"

验证

现在,返回到工作流,确保 Device Run 有权访问所需的文件。如果服务代理无权访问指定的文件,则测试无法启动。

支持文档