将外部 IPv4 地址移动到其他项目
静态外部 IPv4 地址与 Google Cloud 项目关联,只能在该项目中使用。不过,您可以将静态外部 IPv4 地址从一个项目移动到另一个项目。
IAM 角色和权限
如需移动区域 IP 地址,您必须拥有以下权限:
- 源项目中的
compute.addresses.delete
- 目的地项目中的
compute.addresses.create
如需移动全球 IP 地址,您必须拥有以下权限:
- 源项目中的
compute.globalAddresses.delete
- 目的地项目中的
compute.globalAddresses.create
包含这些权限的示例角色:
- Compute Admin (
roles/compute.admin
) - Compute Network Admin (
roles/compute.networkAdmin
) - Compute Public IP Admin (
roles/compute.publicIpAdmin
)
准备工作
验证您想要将 IP 地址移动到的项目是否存在。如果不存在,请创建项目。
在目标项目中启用 Compute Engine API。
验证目标项目在您要移动的 IP 地址的相应配额中是否有足够的可用容量:
- 对于区域级外部 IP 地址,请查看静态 IP 地址配额。
- 对于全球外部 IP 地址,请查看静态 IP 地址全球配额。
- 对于所有 IP 地址,请查看地址移动请求配额。
确认您要移动的 IP 地址具有以下属性:
- 访问类型是外部。
- IP 版本为 IPv4。
该 IP 地址已预留(静态),不是临时性的。
如需预留 IP 地址,请参阅预留新的静态外部 IP 地址。
该 IP 地址未被任何资源(例如虚拟机实例或转发规则)使用。
如需取消分配 IP 地址,请参阅取消分配静态外部 IP 地址。
该 IP 地址未被 Cloud 支持团队作为连续 IP 地址范围的一部分进行预留。如需了解详情,请参阅移动外部 IPv4 地址失败。
限制
如果您取消分配某个 IP 地址,则必须等待一段时间,然后才能移动该地址:
- 对于全球 IP 地址,等待 10 分钟。
- 对于区域 IP 地址,请等待 20 分钟。
您无法更改区域 IP 地址的区域。
您无法将全球 IP 地址转换为区域 IP 地址或将区域 IP 地址转换为全球 IP 地址。
配额
每分钟可移动的地址数量存在限制。如需了解详情,请参阅 VPC 文档中每个项目的以下配额:
将外部 IPv4 地址移动到其他项目
您可以将区域或全球外部 IPv4 地址从一个项目移动到另一个项目。移动 IP 地址时,默认情况下,系统会为 IP 地址资源分配相同的名称和说明。但是,您可以选择分配新名称或说明。将外部 IPv4 地址移动到新项目后,您可以将其分配给该项目中的合格资源。
控制台
在 Google Cloud 控制台中,前往 IP 地址。
在要移动的 IP 地址的更多操作菜单 (
) 中,选择移至其他项目。点击选择项目,然后选择要将 IP 地址移动到的项目。
可选:为 IP 地址输入新的名称。
可选:为 IP 地址输入新的说明。
点击移动。
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 支持团队预留的范围,请执行以下操作:
- 列出静态外部 IP 地址,然后找到要检查的 IP 地址。
- 检查 IP 地址的名称。如果 IP 地址被 Cloud 支持团队预留,则其名称由一个字符串后跟 IP 地址的四个字节组成,以连字符分隔。例如,如果 IP 地址为
198.51.100.2
并且被 Cloud 支持团队预留,则名称采用以下格式:STRING-198-51-100-2
。作为同一范围的一部分预留的其他 IP 地址共享同一字符串,后跟其 IP 地址。