查看虚拟机实例的引荐来源

如果您要查看虚拟机实例与其他 Compute Engine 资源之间的关系,请使用 listReferrers API 方法

使用此 API 方法时,Compute Engine 会返回描述以下各项的引用列表:

  • 源资源:指向目标资源的资源
  • 目标资源:相关资源
  • 引用类型:两个资源之间的关系

例如,您可以使用此 API 方便地查看虚拟机实例所属的实例组列表。

准备工作

限制

  • 您只能列出虚拟机实例与实例组(包括托管和非托管)之间的关系。
  • 无法使用 gcloud 命令行工具或 Google Cloud Console 列出引用方。

列出单个引用方

引用方指的是引用其他资源的资源。对于虚拟机实例而言,一种常见的引用方就是实例组。

例如,假设您有一个名为 example-ig-a1 的实例,位于 us-central1-a 区域。此虚拟机实例属于一个名为 example-ig 的实例组,该实例组也在同一个区域中,如下图所示:

虚拟机实例是同一地区内某个实例组的成员。

如需查看这一关系,请通过以下 HTTP 请求在 example-ig-a1 中调用 listReferrers 方法

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-ig-a1/referrers

服务器返回包含以下内容的标准列表响应:

"items": [
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-ig-a1,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig
  }
]

在这种情况下,targetexample-ig-a1,它是 MEMBER_OF(即 referrer example-ig instance 组)。

列出多个引用方

如果一个资源有多个引用方,则响应将返回该目标资源的所有引用方的列表。如果实例属于两个实例组,则响应将包含这两个实例组。

如果虚拟机实例是两个实例组的成员,则响应包含这两个实例组。

例如,以下响应表明名为 example-instance-a2 的实例属于两个实例组,即 example-igexample-ig-2

"items": [
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance-a2,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig
  },
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance-a2,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig-2
  }
]

列出跨范围的引用方

listReferrers 方法还会返回其他范围(例如其他地区或区域)内存在的引用方的相关信息。例如,假设您有一个虚拟机实例,该实例属于某个地区代管实例组(地区级 MIG):

在地区 us-central1 的区域 us-central1-a 中,实例 new-instance-a3 是 example-rmig 地区实例组的成员。

您通过以下 HTTP 请求对此实例调用 listReferrers 方法:

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/new-instance-a3/referrers

服务器返回包含以下内容的标准列表响应:

"items": [
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/new-instance-a3,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-central1/instanceGroups/example-rmig
  }
]

该响应显示了引用方列表中的地区实例组。

列出集合中所有资源的引用方

通过使用通配符 (-),您可以请求获取特定地区内所有虚拟机实例的所有引用方的列表。可通过类似于以下内容的 HTTP 请求来发出此请求:

GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/-/referrers

服务器返回一个响应,其中包含该地区中的虚拟机实例列表以及对实例的引用。例如:

"items": [
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-ig-a1,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig
  },
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-ig-a2,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig
  },
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-ig-a2,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-ig-2
  },
  {
    "target": https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/new-instance-a3,
    "referenceType": MEMBER_OF,
    "referrer": https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-central1/instanceGroups/example-rmig
  }
]

后续步骤