如何在同一区域的 AWS 账户之间转移弹性 IP 地址?

2 分钟阅读
0

我使用 Amazon 弹性 IP 地址,我想将该地址转移到另一个 AWS 账户。

概述

要在同一 AWS 区域的账户之间转移弹性 IP 地址,请使用以下任一方法:

  • Amazon Elastic Compute Cloud(Amazon EC2)控制台
  • Amazon EC2 API

当您转移弹性 IP 地址时,源账户和目标账户之间会有一个两步握手操作。源账户可以是标准 AWS 账户或 AWS Organizations 账户。当源账户开始发起转移时,目标账户有 7 天的时间接受转移。否则,弹性 IP 地址将返回其原始所有者。

AWS 不会通知目标账户存在待处理的弹性 IP 地址转移请求。为了便于在规定时间内完成转移,源账户所有者必须告知目标账户所有者此请求。

解决方法

使用 Amazon EC2 控制台

有关如何通过 Amazon EC2 控制台发送转移请求的步骤及其先决条件,请参阅激活弹性 IP 地址转移。

在您发送转移请求后,转移账户的所有者必须接受该请求。有关如何在 Amazon EC2 控制台中完成转移的步骤,请参阅接受转移的弹性 IP 地址

使用 AWS CLI 转移单个弹性 IP 地址

注意: 如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新版本的 AWS CLI。要验证您是否正确配置了 AWS CLI,请参阅配置 AWS CLI

在以下示例用例中,源账户 A(111111111111)正在向目标账户 B(222222222222)转移弹性 IP 地址。

在下面的命令中,请将 ELASTIC_IP 替换为您的弹性 IP 地址。将 us-east-1 替换为您的 AWS 区域

1.    在原账户中,使用 Amazon EC2 控制台或 AWS CLI 获取弹性 IP 地址的 AllocationId。对于 AWS CLI,请使用 describe-addresses API 调用:

aws ec2 describe-addresses --filters "Name=public-ip,Values=ELASTIC_IP" --region us-east-1  
{  
    "Addresses": [  
        {  
            "PublicIp": "ELASTIC_IP",  
            "AllocationId": "eipalloc-1111111111111111",  
            "Domain": "vpc",  
            "PublicIpv4Pool": "amazon",  
            "NetworkBorderGroup": "us-east-1"  
        }  
    ]  
}

2.    在源账户中,检查弹性 IP 地址是否存在任何现有或待处理的地址转移请求。要执行此操作,请查看 AllocationId(在本例中为 eipalloc-1111111111111111):

aws ec2 describe-address-transfers --query "AddressTransfers[?AllocationId=='eipalloc-11111111111111111']" --region us-east-1  
[ ]

在此示例中,没有任何现有或待处理的地址转移请求。这意味着您可以继续进行新的转移。

3.    使用 enable-address-transfer API 调用启动地址转移:

aws ec2 enable-address-transfer --allocation-id eipalloc-11111111111111111 --transfer-account-id 222222222222 --region us-east-1  
    "AddressTransfer": {  
        "PublicIp": "3.",  
        "AllocationId": "eipalloc-11111111111111111",  
        "TransferAccountId": "222222222222",  
        "TransferOfferExpirationTimestamp": "2022-10-28T08:44:41+00:00",  
        "AddressTransferStatus": "pending"  
    }  
}

4.   通知目标账户所有者弹性 IP 地址转移处于待处理状态,他们必须接受该转移。要接受转移,目标账户所有者使用 accept-address-transfer API 调用。

注意:目标账户看不到处于待处理状态的弹性 IP 地址。这是一种安全保障功能,以防您不小心将 IP 地址发送到错误的账户。在这种情况下,您可以在另一个账户看到相关 IP 地址之前取消转移。

aws ec2 accept-address-transfer --address ELASTIC_IP --region us-east-1  
    "AddressTransfer": {  
        "PublicIp": "ELASTIC_IP",  
        "AllocationId": "eipalloc-11111111111111111",  
        "TransferAccountId": "222222222222",  
        "TransferOfferExpirationTimestamp": "2022-10-28T08:44:41+00:00",  
        "AddressTransferStatus": "accepted"  
    }  
}

如果接受失败,您会看到以下错误之一:

  • AddressLimitExceeded
  • InvalidTransfer.AddressCustomPtrSet
  • InvalidTransfer.AddressAssociated

要排除这些错误,请参阅接受转移的弹性 IP 地址

5.    成功转移弹性 IP 地址后,目标账户可以使用 describe-addresses API 来确认转移:

**注意:**成功转移会为转移所有者账户中的弹性 IP 地址生成新的 AllocationId

aws ec2 describe-addresses --filters "Name=public-ip,Values=ELASTIC_IP" --region us-east-1  
{  
    "Addresses": [  
        {  
            "PublicIp": "ELASTIC_IP",  
            "AllocationId": "eipalloc-22222222222222222",  
            "Domain": "vpc",  
            "PublicIpv4Pool": "amazon",  
            "NetworkBorderGroup": "us-east-1"  
        }  
    ]  
}

6.    源账户可以使用 describe-address-transfers API 来确认转移成功:

aws ec2 describe-address-transfers --query "AddressTransfers[?AllocationId=='eipalloc-11111111111111111']" --region us-east-1  
[  
       {  
            "PublicIp": "ELASTIC_IP",  
            "AllocationId": "eipalloc-11111111111111111",  
            "TransferAccountId": "222222222222",  
            "TransferOfferExpirationTimestamp": "2022-10-28T10:44:41+00:00",  
            "AddressTransferStatus": "accepted"  
        }  
]  

相关信息

Amazon Virtual Private Cloud(VPC)现在支持在 AWS 账户之间转移弹性 IP 地址

转移弹性 IP 地址

AWS 官方
AWS 官方已更新 1 年前