Amazon Elastic IP アドレスを使用しており、そのアドレスを別の AWS アカウントに転送したいです。
簡単な説明
同じ AWS リージョン内のアカウント間で Elastic IP アドレスを転送するには、以下のいずれかの方法を使用します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソール
- Amazon EC2 API
Elastic IP アドレスを転送する際には、ソースアカウントと転送元アカウントの間で2 段階のハンドシェイクが行われます。転送元アカウントアカウントは、標準の AWS アカウントまたは AWS Organizations アカウントのいずれかです。転送元アカウントが転送を開始すると、転送先アカウントは 7 日間で受け入れる必要があります。そうしない場合、Elastic IP アドレスは元の所有者に戻ります。
AWS は、転送先アカウントに対して保留中の Elastic IP アドレスの転送リクエストについて通知しません。所定の時間内にスムーズにできるよう、ソースアカウントの所有者が転送先アカウントの所有者にこのリクエストを伝える必要があります。
解決策
Amazon EC2 コンソールを使用する
Amazon EC2 コンソールを介して転送リクエストを送信する手順とその前提条件については、「Elastic IP アドレスの転送を有効にする」を参照してください。
転送リクエストは、送信した後に、転送先アカウントの所有者によって承諾される必要があります。Amazon EC2 コンソールで転送を完了する手順については、「転送された Elastic IP アドレスの受け入れ」を参照してください。
AWS CLI を使用して 1 つの Elastic IP アドレスを転送する
注: AWS コマンドラインインターフェース (AWS CLI) コマンドを実行する際にエラーが発生する場合は、最新バージョンの AWS CLI を実行しているか確認してください。AWS CLI が正しく構成されていることを確認するには、「AWS CLI の設定」を参照してください。
以下の使用例では、ソースアカウント A (111111111111) が Elastic IP アドレスを転送先アカウント B (222222222222) に転送しています。
以下のコマンドでは、ELASTIC_IP を自身の Elastic IP アドレスで置き換えてください。us-east-1 を AWS リージョンに置き換えてください。
1. ソースアカウントで、Amazon EC2 コンソール または AWS CLI を使用して、Elastic 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. ソースアカウントで Elastic 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. 転送先アカウントの所有者に、Elastic IP アドレスの転送が保留中状態であること、転送を承諾する必要があることを通知します。転送を承諾するには、転送アカウントの所有者が accept-address-transfer の API 呼び出しを使用します。
注: 転送アカウントは、保留中の状態にある Elastic 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
これらのエラーのトラブルシューティング方法については、「転送された Elastic IP アドレスを承諾する」を参照してください。
5. Elastic IP アドレスが転送されると、転送アカウントは describe-addresses の API を使用して転送を確認できます。
注: 成功した転送は、転送先のアカウントで Elastic 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 アカウント間の Elastic IP アドレス転送のサポートを開始
Elastic IP アドレスの転送