Google compute engine 如何在项目之间共享google计算引擎图像?

Google compute engine 如何在项目之间共享google计算引擎图像?,google-compute-engine,Google Compute Engine,我知道图像是全球资源,“可以被同一项目中任何区域的任何资源访问” 我正在寻找类似于在AWS中共享AMI的功能。也就是说,我创建了一个图像,将其公开,任何人都可以立即使用它 如何在普通中等教育中取得类似的成绩?问题是,我需要创建的图像会很大—大约100GB。因此,我正在寻找一种共享图像的方式,这种方式不会涉及缓慢的复制(例如从谷歌云存储中的存储桶中复制)。您可以将图像存储到谷歌云存储中。谷歌云存储为你提供了更多的选择来控制谁有权访问该图像,而不仅仅是将其公开 您可以使用gcutil访问该图像。差不

我知道图像是全球资源,“可以被同一项目中任何区域的任何资源访问”

我正在寻找类似于在AWS中共享AMI的功能。也就是说,我创建了一个图像,将其公开,任何人都可以立即使用它


如何在普通中等教育中取得类似的成绩?问题是,我需要创建的图像会很大—大约100GB。因此,我正在寻找一种共享图像的方式,这种方式不会涉及缓慢的复制(例如从谷歌云存储中的存储桶中复制)。

您可以将图像存储到谷歌云存储中。谷歌云存储为你提供了更多的选择来控制谁有权访问该图像,而不仅仅是将其公开

您可以使用gcutil访问该图像。差不多
gcutil--project=project-name-1 addimage“my awesome image”gs://bucket name/myawesome.images.gz

您可以使用谷歌云存储,但每次下载都要收费,而且需要很长时间(如果是100 GB)

更好的解决方案是让用户“可以查看”您的项目。然后用户可以使用
gcloud
命令行,使用您的图像创建一个实例。但是请注意,用户将看到项目中的所有内容,他只是无法更改它

如果图像的所有者已在您想要使用的区域中使用它,则此解决方案会更快。因为图像是在那里兑现的,它会立即启动。另一个好处是,如果有人下载此图像,该所有者不会被收取费用

`gcloud compute instances create [INSTANCE_NAME]
    --image-family [IMAGE_FAMILY]
    --image-project [IMAGE_PROJECT]
    --machine_type=<type-of-machine> 
    --network="default"
    --family my-image-family`
`gcloud计算实例创建[实例名称]
--图像系列[图像系列]
--图像工程[图像工程]
--机器类型=
--网络=“默认”
--家庭我的形象家庭`

如果你想让更多的人访问,你可以创建一个谷歌组,允许组成员“可以查看”项目的访问权。现在,您可以使用Google组控制谁可以访问它。

Compute Engine添加了IAM角色(Compute.imageUser),允许与其他项目共享图像

文件:


免责声明-我为谷歌云工作。

一个人只需grand
角色/compute.imageUser
访问用于创建实例的
服务帐户:

gcloud projects add-iam-policy-binding <ID-of-image-owners-project> \
  --member serviceAccount:account-to-create-instances@<ID-of-your-project>.iam.gserviceaccount.com \
  --role roles/compute.imageUser
gcloud项目添加iam策略绑定\
--成员服务帐户:要创建的帐户-instances@.iam.gserviceaccount.com \
--角色/compute.imageUser

谢谢您的回答,有文档记录很好!然而,正如我在这个问题中所说的,我正在寻找一个高效的共享大型图像的解决方案,我已经考虑了谷歌云存储选项。鼓励外部资源的链接,但是请在链接周围添加上下文,这样你的同伴用户会知道它是什么以及它为什么在那里。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。