将外部 IPv4 地址移动到其他项目

静态外部 IPv4 地址与 Google Cloud 项目关联,只能在该项目中使用。不过,您可以将静态外部 IPv4 地址从一个项目移动到另一个项目。

IAM 角色和权限

如需移动区域 IP 地址,您必须拥有以下权限:

  • 源项目中的 compute.addresses.delete
  • 目的地项目中的 compute.addresses.create

如需移动全球 IP 地址,您必须拥有以下权限:

  • 源项目中的 compute.globalAddresses.delete
  • 目的地项目中的 compute.globalAddresses.create

包含这些权限的示例角色:

准备工作

限制

  • 如果您取消分配某个 IP 地址,则必须等待一段时间,然后才能移动该地址:

    • 对于全球 IP 地址,等待 10 分钟。
    • 对于区域 IP 地址,请等待 20 分钟。
  • 您无法更改区域 IP 地址的区域。

  • 您无法将全球 IP 地址转换为区域 IP 地址或将区域 IP 地址转换为全球 IP 地址。

配额

您每分钟可以移动的地址数量存在限制。如需了解详情,请参阅 VPC 文档中每个项目的以下配额:

将外部 IPv4 地址移动到其他项目

您可以将区域或全球外部 IPv4 地址从一个项目移动到另一个项目。移动 IP 地址时,默认情况下,系统会为 IP 地址资源分配相同的名称和说明。但是,您可以选择分配新名称或说明。将外部 IPv4 地址移动到新项目后,您可以将其分配给该项目中的合格资源

控制台

  1. 在 Google Cloud 控制台中,前往 IP 地址

    转到“IP 地址”

  2. 在要移动的 IP 地址的更多操作菜单 () 中,选择移至其他项目

  3. 点击选择项目,然后选择要将 IP 地址移动到的项目。

  4. 可选:输入 IP 地址的新名称

  5. 可选:输入 IP 地址的新说明

  6. 点击移动

gcloud

命令选项取决于您是移动区域 IP 地址还是全球 IP 地址,以及您是保留还是替换地址名称或说明。以下示例介绍其中一些组合。

  • 将区域级外部 IPv4 地址移动到另一个项目:

    gcloud compute addresses move ADDRESS_NAME \
        --target-project=TARGET_PROJECT \
        --region=REGION
    
  • 将区域外部 IPv4 地址移动到其他项目,并在新项目中为该地址分配新名称和说明:

    gcloud compute addresses move ADDRESS_NAME \
        --target-project=TARGET_PROJECT \
        --new-name=NEW_NAME \
        --description=NEW_DESCRIPTION \
        --region=REGION
    
  • 将全球外部 IPv4 地址移动到另一个项目:

    gcloud compute addresses move ADDRESS_NAME \
        --target-project=TARGET_PROJECT \
        --global
    

请替换以下内容:

  • ADDRESS_NAME:您要移动的 IP 地址资源的名称。
  • TARGET_PROJECT:要将 IP 地址移动到的项目的名称或 ID。
  • REGION:IP 地址的区域。
  • NEW_NAME:新项目中 IP 地址资源的新名称。
  • NEW_DESCRIPTION:新项目中 IP 地址资源的新名称。如果省略,则系统将使用资源的现有说明(如果有)。

如需了解详情,请参阅 gcloud compute addresses move 参考文档。

API

请求详细信息取决于您是移动区域 IP 地址还是全球 IP 地址,以及您是保留还是替换地址名称或说明。以下示例介绍其中一些组合。

  • 将区域级外部 IPv4 地址移动到另一个项目:

    POST https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT/regions/REGION/addresses/ADDRESS_NAME/move
    {
      "destination_address": "projects/TARGET_PROJECT/global/addresses/ADDRESS_NAME",
    }
    
  • 将区域外部 IPv4 地址移动到其他项目,并在新项目中为该地址分配新名称和说明:

    POST https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT/regions/REGION/addresses/ADDRESS_NAME/move
    {
      "destination_address": "projects/TARGET_PROJECT/global/addresses/NEW_NAME",
      "description": "NEW_DESCRIPTION",
    }
    
  • 将全球外部 IPv4 地址移动到另一个项目:

    POST https://www.googleapis.com/compute/v1/projects/SOURCE_PROJECT/global/addresses/ADDRESS_NAME/move
    {
      "destination_address": "projects/TARGET_PROJECT/global/addresses/ADDRESS_NAME",
    }
    

请替换以下内容:

  • ADDRESS_NAME:您要移动的 IP 地址资源的名称。
  • SOURCE_PROJECT:要将 IP 地址移动到的项目的名称或 ID。
  • TARGET_PROJECT:要将 IP 地址移动到的项目的名称或 ID。
  • REGION:IP 地址的区域。
  • NEW_NAME:新项目中 IP 地址资源的新名称。
  • NEW_DESCRIPTION:新项目中 IP 地址资源的新名称。如果省略,则系统将使用资源的现有说明(如果有)。

问题排查

移动外部 IPv4 地址失败

尝试移动外部 IPv4 地址时,您可能会看到以下错误消息:

Invalid resource usage: 'Cannot move address that belongs to a reserved address range. Address range must be disassembled first.'

如果您看到此消息,则表示 IP 地址已被 Cloud 支持团队预留为连续的 IP 地址范围。如需移动此类型的 IP 地址,请与 Cloud 支持团队联系。Cloud 支持团队可以将整个 IP 地址范围移至另一个项目。不支持仅移动部分范围。

如需检查 IP 地址是否属于 Cloud 支持预留的范围,请执行以下操作:

  1. 列出静态外部 IP 地址,然后找到您要检查的 IP 地址。
  2. 检查 IP 地址的名称。如果 IP 地址由 Cloud 支持团队预留,则其名称由一个字符串组成,后跟 IP 地址的四个字节,并以连字符分隔。例如,如果 IP 地址为 198.51.100.2 并且它由 Cloud 支持预留,则名称采用以下格式:STRING-198-51-100-2。同一范围内预留的其他 IP 地址共享相同的字符串,后跟其 IP 地址。