You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Cloud Function创建VM实例时无法识别自定义镜像问题

问题分析与解决方案

从你遇到的情况(Cloud Function报错找不到镜像、控制台手动创建VM显示已删除的旧镜像)来看,核心问题大概率是镜像的区域/权限不匹配,或者控制台缓存/镜像状态异常,下面一步步拆解解决:

1. 优先排查区域不匹配问题(最常见诱因)

你代码里有个明显的矛盾点:VM指定的区域是europe-west2-c,但磁盘类型却用了us-central1-a的pd-standard——磁盘类型的区域必须和VM所在区域完全一致,否则不仅会影响镜像识别,还会直接导致VM创建失败。

除此之外,还要确认自定义镜像的存储区域:

  • 打开Cloud Console的「Images」页面,找到pandora-pagespeed-image,查看它的「位置」是全局还是某个特定区域(比如us-central1)。
    • 如果是区域镜像:你创建VM时必须选择和镜像相同的区域,否则控制台和API都找不到这个镜像。比如镜像存在us-central1,那你要么把VM区域改成us-central1下的可用区,要么把镜像复制到europe-west2区域。
    • 如果是全局镜像:区域问题排除,但务必把代码里的diskType改成europe-west2-c对应的路径:projects/<<project id>>/zones/europe-west2-c/diskTypes/pd-standard。

2. 检查Cloud Function服务账号的镜像访问权限

你在控制台能看到镜像,但Cloud Function使用的服务账号可能没有该镜像的访问权限:

  • 确认Cloud Function的服务账号:如果用的是默认服务账号,格式为<<project-id>>@appspot.gserviceaccount.com;如果是自定义SA,就是代码里sa_file对应的账号。
  • 给这个账号添加Compute Image User角色(包含compute.images.useReadOnly权限),或者直接在镜像的IAM设置里,给该账号授予roles/compute.imageUser权限。

3. 验证镜像状态与路径正确性

  • 确认镜像pandora-pagespeed-image的状态是READY:在Images页面查看状态,如果镜像还在创建中或未就绪,API会返回“找不到资源”的错误。
  • 用命令行获取镜像的准确selfLink,避免手动拼写错误:
    gcloud compute images describe pandora-pagespeed-image --format="value(selfLink)"
    
    把输出的链接直接替换到代码里的sourceImage字段,比如:"sourceImage": "https://www.googleapis.com/compute/v1/projects/xxx/global/images/pandora-pagespeed-image"。

4. 解决控制台显示旧镜像的问题

控制台显示已删除的旧镜像,大概率是缓存延迟导致的:

  • 强制刷新控制台页面(Ctrl+F5),或者用命令行查看实时镜像列表:
    gcloud compute images list
    
    命令行结果是实时同步的,能准确反映当前存在的镜像。如果旧镜像确实已删除,等待一段时间后控制台缓存会自动更新。

内容的提问来源于stack exchange,提问作者2bon2b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:31:06