[アップデート] Elastic IP アドレス(EIP)を AWS アカウント間で移行できるようになりました!

EIP を別の AWS アカウントに移せるようになりました。転送の有効化、転送の承諾の2ステップからなります。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

EIP を別の AWS アカウントに移行(転送)できるようになりました!

AWS ドキュメントの表現を借りると、以下のケースで役立ちます。

  • 組織の再構築:
    • ある AWS アカウントから別の AWS アカウントにワークロードをすばやく移動
  • 一元化されたセキュリティ管理:
    • 一元化された AWS セキュリティ アカウントを使用して、セキュリティ コンプライアンスについて精査された Elastic IP アドレスを追跡
  • ディザスター リカバリー:
    • 緊急イベント時にインターネット ワークロードの IP をすばやく再マッピング

EIP の転送まとめ

EIP の転送は以下のステップからなります。

  1. 転送元での転送有効化
  2. 転送先での転送の承諾

主要な注意事項としては以下があります。

  • AWS Organizations 組織内のアカウントか、組織外のスタンドアロン AWS アカウントに転送できる
    • AWS Organizations間ではできない
  • 同一 AWS リージョン内でのみ転送できる
  • 転送を有効化したのち、転送先で期限内に承諾をしないと取り消しとなる
  • 転送を有効化したのち、(承諾前であれば)転送元のアカウント側で無効化できる
  • 転送する EIP が EC2 や ENI に関連づけられていると、承諾の段階でエラーとなる
  • 転送する EIP に逆引き DNS ルックアップを有効にしていると、承諾の段階でエラーとなる

ちなみに、EIP の転送自体には料金は発生しません。各種の詳細は以下ドキュメントを参照してください。

EIP の転送やってみた

今回は EC2 や ENI に関連づけをおこなっていない EIP をアカウント間で転送してみます。転送元は Organizations のメンバーアカウント、転送先は Organizations に所属していないスタンドアロンアカウントです。 *1

(ちなみに画像内のコメントで「転送」のことを「共有」と表現していますが、うっかりミスです。意味合いとしては特に変わらないのでそこまで気にしないでください。)

転送元アカウントでの EIP 転送有効化

EIP の詳細画面より、「アクション」→「Enable transfers」を押下します。

EC2_Management_Console_EIP_transfer

転送先の AWS アカウント番号を入力し、確認フィールドにenableを入力し、「Submit」を押下します。

EC2_Management_Console_EIP_transfer-7312538

EIP の詳細画面より、転送ステータスが確認できます。期限内に転送先で承諾を行わないと取り消しになります。

EC2_Management_Console_EIP_Transfer_status-7313867

転送先アカウントでの EIP 転送承諾

ここからは転送先の AWS アカウントで操作します。EIP の画面より、「アクション」→「Accept transfers」を押下します。

EIP_transfer____VPC_Management_Console

確認画面で受け入れる EIP の IP アドレスを入力し、「Submit」を押下します。(複数の EIP の転送が有効化されている場合、ここで複数入力できます。)

VPC_Management_Console_EIP_Transfer_accesspt

正常に EIP の転送が完了しました!

EIP_accept_VPC_Management_Console

転送が終わった後の転送元アカウントではどう見える?

転送が完了すると、転送元の AWS アカウントでは EIP が参照できなくなっています。

EC2_Management_Console_EIP_Transfer-7312863

ちなみに:関連づけがある EIP の転送を試みた場合

EC2 や ENI などと関連づけがされた状態の EIP の転送を試みた場合、転送の有効化は通常通り行えますが、承諾の段階でエラーが発生します。

関連づけがある状態の EIP(54.168.181.44)の転送を試みたところ転送先で以下のようなエラーが出ました。

EIP_transfer_EIP_failedVPC_Management_Console

Failed to accept transfers for these addresses

Details

  • 54.168.181.44 - Address 54.168.181.44 is in use

あくまで関連づけがない状態の EIP だけが転送できる、ということを覚えておいてください。

余談:「7時間」はどこから?

AWS ドキュメントに以下の記述があります。

When the source account starts the transfer, the transfer accounts have seven hours to accept the Elastic IP address transfer, or the Elastic IP address will return to its original owner.

承諾までの猶予が7時間と言っているように読み取ったのですが、今回試した際にはTransfer expiration が7日間で設定されていました。AWS ドキュメントの誤記なのか、別の意味を持つのかが分かっていないので答えを知っている方がいたら教えてください。

終わりに

EIP を AWS アカウント間で転送できるようになった、というアップデートでした。

ワークロードを別の AWS アカウントに移したい、というケースはそれなりにあったかと思いますので、嬉しい方もいらっしゃるのではないでしょうか。

障害時に別の環境に EIP を付け替えてワークロードを継続する、という新たなパターンも生まれた気がします。

リージョンを跨げない、関連づけがある状態では転送できない、などの仕様を把握した上でご活用ください。

以上、 チバユキ (@batchicchi) がお送りしました。

脚注

  1. 転送元/先を入れ替えてスタンドアロンアカウント→Organizations メンバーアカウントへの転送も同じ操作で成功しました。