如何与*其他*用户分享 Google 云图像?

How to share Google Cloud images with *other* users?

我在 Google 云计算上为我的学生设置了一个虚拟机,保存了一个图像。根据 https://cloud.google.com/compute/docs/images/sharing-images-across-projects#granting_a_user_access_to_images 上的说明,我授予我的学生 "Compute Image User" 访问用于创建该图像的项目的权限。所以他们看到我的项目可用,他们可以点击 select 它...

但是当他们尝试实际创建自己的计算实例来进行计算时,他们被告知 "You don't have permission to view the instances in this project"。

在 AWS 上,我所要做的就是保存一个 public AMI,然后将其他人指向它。非常简单... Google Cloud Compute 上合适的模拟是什么?

我已经看过这个 post: "How to share google compute engine images across projects?" 但它只是让我看到了我已经阅读过的文档。

编辑: 我的学生能够对我的项目执行 "gcloud config set project [my project]",但是,当他们对同一个项目 运行 "gcloud compute images list --project [my project]" ,它说“- 找不到项目 [我的项目]”

为用户提供角色 "Compute Image User" 允许用户访问另一个项目中的图像,但不允许这些用户查看或创建该项目中的实例或其他资源。

然而,它应该允许您为其分配角色的用户访问位于您项目中的图像,但关键是来自他们自己的项目。

我知道你的学生已经尝试 运行 以下命令但没有成功:

gcloud compute images list --project [IMAGE_PROJECT]

此时我的建议是确保他们使用您的项目 ID 代替 [IMAGE_PROJECT],而不是您的项目名称。

您的项目 ID 可以通过单击控制台顶部的下拉菜单来检索,项目 ID 信息可以在您的项目名称右侧看到。

同样,他们应该能够通过运行以下命令从您项目中的图像在他们自己的项目中创建一个实例:

gcloud compute instances create MYINSTANCE --image [IMAGE_NAME] --image-project [IMAGE_PROJECT] --project [PROJECT_ID]

其中[IMAGE_NAME]是你项目中的镜像名称,[IMAGE_PROJECT]是镜像所在的项目,[PROJECT_ID]是你要创建的项目ID实例。

这也可以在 Developers Console 中实现。创建虚拟机时,您可以更改启动磁盘,然后单击“自定义映像”和 select 映像所在的项目。 select 项目后,将显示该项目的所有图像。

如果您希望您的学生能够查看您自己项目中的实例,您需要为他们分配一个比“计算图像用户”角色范围更大的角色。

例如,您可以为他们分配“Compute Viewer”角色,这将允许他们查看您的 Compute Engine 资源,包括您的 instances/images.

这可以通过以下步骤实现:

  1. 将鼠标悬停在子菜单中的“IAM 和管理”和 select“IAM”上。
  2. 点击页面顶部的“添加”
  3. 在新的“添加成员”window 中,为您要为其分配角色的用户或群组添加 Google 帐户电子邮件地址
  4. 在“Compute Engine”下的“角色”下拉菜单中 select“Compute Viewer”
  5. 点击“添加”将新角色添加到user/group

或者,如果您希望您的学生能够在您的项目中创建实例,您可以按照上述步骤为他们分配“计算实例管理员”角色,并将“计算实例管理员”替换为“计算查看者” (v1)”。