google-cloud-platform - 无法从不同项目中的机器映像创建 gcp 实例
问题描述
我有两个 GCP 项目,projectA 和 projectB。在 projectB 中,我有一个机器映像 B-machine-image。我的目标是在 projectA 中制作机器映像的副本。但是由于没有办法直接将projectB中的机器映像复制到projectA,所以我想我可以使用projectB中的机器映像在projectA中创建一个实例,然后使用projectA中的新实例在本地创建机器映像。
我为此找到了一个 Google 文档:https : //cloud.google.com/compute/docs/machine-images/create-instance-from-machine-image 并按照步骤首先授予 projectA 管理员角色中的服务帐户projectB中的机器映像B-machine-image,然后运行命令使实例如下:
gcloud beta 计算实例创建 my-new-instance --project=projectA --zone us-central1-b --source-machine-image projects/projectB/global/machineImages/B-machine-image --service-account 123456789000- compute@developer.gserviceaccount.com
我得到了错误:
错误:(gcloud.beta.compute.instances.create)无法获取资源:
- 字段“resource.networkInterfaces[0].network”的值无效:“projects/123456789000/global/networks/projectB-vpc”。找不到引用的网络资源。
在 projectB 中,我确实有一个名为 projectB-vpc 的 VPC。
我不明白的是,在“projects/123456789000/global/networks/projectB-vpc”中,123456789000 似乎是针对 projectA 的,因为它是 projectA 服务帐户的电子邮件的一部分,而 projectB-vpc 是针对 projectB 的。在我的命令中,我有“projects/projectB/....”,为什么命令将“projectB”替换为 123456789000?
知道我在哪里做错了吗?
谢谢,菲利普
解决方案
根据 GCP文档,您可以直接使用来自不同项目的机器映像创建 VM。请注意,当您使用来自不同项目的机器映像创建 VM 时,您可能无法访问附加到该源项目的服务帐户。在我的复制步骤中,我遵循了以下步骤:
- 创建多区域机器映像
2. gcloud beta compute machine-images add-iam-policy-binding rhel-machine-image \
--project=source-project \
--member='serviceAccount:Source-compute@developer.gserviceaccount.com' \
--role='roles/compute.admin'
- 将源项目服务帐户作为 iam.serviceAccountUser 添加到目标项目
4. gcloud beta compute instances create machine-image-vm --project=destination-project --zone us-central1-a --source-machine-image projects/source-project/global/machineImages/rhel-machine-image --service-account Destination-compute@developer.gserviceaccount.com
在最后一步中,我使用了目标项目 Compute Engine 默认服务帐户。
Created [https://www.googleapis.com/compute/beta/projects/destination-project/zones/us-central1-a/instances/machine-image-vm].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
machine-image-vm us-central1-a e2-medium x0.xxx.0.18 35.2x3.18x.x59 RUNNING
推荐阅读
- python-3.x - ImageDataBunch.from_df 位置索引器超出范围
- python - 如何解决此错误:InvalidSchema("No connection adapters were found for {!r}".format(url))?
- docker - 如何使用 react-scripts 3.4 和 babel-loader 8.1 使 yarn start 在 Docker 映像中工作?
- android - 在我的应用程序的 Google Play 上传版本上引发“CouldNotFindSpotifyApp”异常
- swift - FSCalendar 检查今天的日期
- c# - 装箱值类型十进制到可为空的对象?
- javascript - 如何在 Javascript 中创建自定义异步函数?
- react-native - 仅左右 React Native 阴影
- javascript - 赋值后访问类属性返回未定义
- django - 如何使表单域准确?