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

OCI CLI/Terraform创建uk-london-1实例报AD无法从请求推断错误

问题根因

该报错为误导性参数校验提示,与填写的可用域(AD)参数无关,核心问题是传入的--image-id参数值不符合接口要求:

  • OCI所有*-id类参数(含image-id、subnet-id、compartment-id等)均要求传入以ocid1.开头的资源唯一OCID标识,当前传入的Canonical-Ubuntu-22.04-2022.06.16-0是镜像显示名,不属于合法的镜像OCID。
  • OCI后端校验逻辑会优先校验目标镜像与传入AD的适配关系,当传入的镜像ID不存在、无法匹配到对应镜像资源时,无法完成镜像-AD的映射校验,就会抛出"AvailabilityDomain could not be inferred from the Request"错误,不会直接提示image-id参数非法,极易误导排查方向。
    参照Terraform教程操作时出现同类报错,触发原因完全一致。
修复步骤

1. 获取目标镜像的合法OCID

执行以下命令查询uk-london-1区域Canonical官方Ubuntu 22.04对应版本镜像的OCID:

oci compute image list \
  --compartment-id <你的租户根compartment OCID> \
  --operating-system "Canonical Ubuntu" \
  --operating-system-version "22.04" \
  --region uk-london-1

从返回的结果列表中,找到display-name为Canonical-Ubuntu-22.04-2022.06.16-0的条目,其对应的id字段值(ocid1.image.oc1.uk-london-1.xxxx格式)就是合法的image-id参数值。
如果熟悉JMESPath语法,可以加上查询参数直接过滤输出结果:

oci compute image list \
  --compartment-id <你的租户根compartment OCID> \
  --operating-system "Canonical Ubuntu" \
  --operating-system-version "22.04" \
  --region uk-london-1 \
  --query 'data[?"display-name"==`Canonical-Ubuntu-22.04-2022.06.16-0`].id | [0]' \
  --raw-output

2. 修正CLI实例启动命令

将原命令中--image-id后的镜像显示名替换为上一步获取到的真实镜像OCID即可,修正后的命令结构如下:

oci compute instance launch \
  --availability-domain lMrS:UK-LONDON-1-AD-1 \
  --compartment-id <你的compartment OCID> \
  --shape VM.Standard.E2.1.Micro \
  --subnet-id <你的子网OCID> \
  --image-id <查询到的镜像OCID> \
  --region uk-london-1

命令末尾追加--region uk-london-1是为了强制指定操作区域,避免本地CLI默认区域配置与目标区域不一致触发额外校验错误。

3. Terraform场景修复

检查oci_core_instance资源块中source_details配置下的image_id字段,确保传入的是镜像OCID而非显示名。推荐使用OCI官方数据源动态查询镜像OCID,避免硬编码错误值,参考配置如下:

data "oci_core_images" "ubuntu_2204" {
  compartment_id      = "<你的租户根compartment OCID>"
  operating_system    = "Canonical Ubuntu"
  operating_system_version = "22.04"
  region              = "uk-london-1"

  filter {
    name   = "display_name"
    values = ["Canonical-Ubuntu-22.04-2022.06.16-0"]
  }
}

resource "oci_core_instance" "test_vm" {
  availability_domain = "lMrS:UK-LONDON-1-AD-1"
  compartment_id      = "<你的compartment OCID>"
  shape               = "VM.Standard.E2.1.Micro"

  source_details {
    source_type = "image"
    image_id    = data.oci_core_images.ubuntu_2204.images[0].id
  }

  # 其余子网、SSH密钥、元数据等配置按实际需求补充
}
额外排查点

如果替换为正确镜像OCID后仍然报错,按以下顺序校验配置:

  • 确认传入的subnet-id属于uk-london-1区域,且与所选AD的网络拓扑匹配,跨区域子网会触发同类校验错误
  • 确认当前账号拥有所选compartment下的实例创建、子网使用权限,权限不足时偶尔也会抛出该类误导性提示
  • 确认VM.Standard.E2.1.Micro规格在所选AD下有可用资源,免费额度的Micro规格存在单AD售罄的可能,但该场景一般会返回容量不足类错误,优先级低于前两项检查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:57:11