2026年10月9日
2026年10月9日
AWS Elastic IP のアタッチ(関連付け)方法|インスタンスとENIへの付け方、付け替え、失敗したときの確認
AWS の Elastic IP は、確保したアドレスを EC2 インスタンスまたはネットワークインターフェース(ENI)に「関連付け」することで使えるようになります。この記事では、コンソールと AWS CLI での関連付けの手順、インスタンスと ENI のどちらに付けるかの判断、別のインスタンスへの付け替え、関連付けに失敗したときやつないでもアクセスできないときの確認方法を扱います。Elastic IP の確保(割り当て)から解放までの全体の流れは別記事にまとめているため、ここでは「確保済みのアドレスを付ける・付け替える」作業に絞ります。
関連付けの前に確認すること
関連付けの操作自体は数クリックで終わりますが、前提がそろっていないと失敗したり、付けたのにアクセスできなかったりします。作業前に次の点を確認してください。
- 同じリージョンか: Elastic IP はリージョン単位のリソースです。東京リージョンで確保したアドレスは、他のリージョンのインスタンスには付けられません
- サブネットがインターネットに出られるか: 対象インスタンスのある VPC にインターネットゲートウェイが接続され、サブネットのルートテーブルに
0.0.0.0/0からインターネットゲートウェイへの経路があること。プライベートサブネットのインスタンスに付けても、外部からは届きません - インスタンスの ENI の数: ENI が 1 つならインスタンスを指定するだけで済みます。複数ある場合は ENI を指定する必要があります
- 権限: IAM ユーザーやロールに、関連付け(
ec2:AssociateAddress)とアドレスの参照(ec2:DescribeAddresses)の権限があること
もう 1 つ知っておきたいのが、パブリック IPv4 アドレスの課金です。AWS は 2024 年からパブリック IPv4 アドレスを、使用中のものも含めて課金対象にしています(2026年10月現在)。料金の詳細は変わる可能性があるため、AWS の料金ページで確認し、不要になったアドレスは解放する運用にしておくと無駄を防げます。
コンソールで関連付ける
コンソールでは、EC2 のナビゲーションにある「ネットワーク & セキュリティ」の Elastic IP の画面から操作します。画面の表記はコンソールの更新で変わることがあるため、ここでは目的に沿って説明します。
- Elastic IP の一覧で、関連付けたいアドレスを選びます
- アクションのメニューから、Elastic IP アドレスを関連付ける操作を選びます
- リソースの種類として「インスタンス」か「ネットワークインターフェース」を選びます
- 対象を選び、必要ならプライベート IP アドレスを指定します。指定しない場合は、プライマリのプライベート IP に関連付けられます
- すでに別のリソースに関連付けられているアドレスを移したい場合は、再関連付けを許可するオプションを有効にします
- 関連付けを実行し、一覧の「関連付けられたインスタンス」やプライベート IP の欄が更新されたことを確認します
AWS CLI で関連付ける
作業を手順書に残したり、複数のサーバーで同じ操作をしたりする場合は CLI が便利です。まず、確保済みのアドレスの割り当て ID(eipalloc- で始まる値)を確認します。
aws ec2 describe-addresses \
--query "Addresses[].{IP:PublicIp,Alloc:AllocationId,Instance:InstanceId,Assoc:AssociationId}" \
--output table
ENI が 1 つのインスタンスに関連付ける場合は、インスタンス ID を指定します。
aws ec2 associate-address \
--allocation-id eipalloc-0123456789abcdef0 \
--instance-id i-0123456789abcdef0
ENI を指定する場合や、セカンダリのプライベート IP に付けたい場合は、次のようにします。
aws ec2 associate-address \
--allocation-id eipalloc-0123456789abcdef0 \
--network-interface-id eni-0123456789abcdef0 \
--private-ip-address 10.0.1.25
成功すると、関連付け ID(eipassoc- で始まる値)が返ります。外すときに使うので、手順書に控えておきます。ID はいずれも例なので、実際の値に置き換えてください。
インスタンスと ENI、どちらに付けるか
インスタンスを指定した場合、Elastic IP はそのインスタンスのプライマリ ENI に付きます。サーバーが 1 台で構成が単純なら、これで十分です。
ENI を指定する方式は、次のような場合に向いています。
- 1 台のインスタンスに複数の ENI があり、どちらの ENI で外部と通信するかを決めたい
- 1 つの ENI に複数のプライベート IP を持たせ、それぞれに別の Elastic IP を付けたい(サイトごとに IP を分ける場合など)
- 障害時に ENI ごと予備のインスタンスへ付け替え、IP アドレスを維持したい
どちらの方式でも、OS からは Elastic IP は見えません。Elastic IP は AWS 側でプライベート IP と 1 対 1 に変換されるため、ip addr に表示されるのはプライベート IP だけです。Web サーバーやアプリケーションの待ち受けアドレスに Elastic IP を書くと起動に失敗するので、0.0.0.0 かプライベート IP を指定します。
別のインスタンスへ付け替える
メンテナンスや障害対応でサーバーを入れ替えるときは、Elastic IP を新しいインスタンスに付け替えると、DNS を変えずに切り替えられます。CLI で既存の関連付けから直接移すには、--allow-reassociation を付けます。
aws ec2 associate-address \
--allocation-id eipalloc-0123456789abcdef0 \
--instance-id i-0fedcba9876543210 \
--allow-reassociation
このオプションがないと、すでに関連付けられているアドレスへの操作はエラーになります。誤って稼働中のサーバーから IP を奪わないための仕組みなので、付け替えのときだけ意識して付けてください。切り替え後は、新しいインスタンスのセキュリティグループで必要なポートが開いていること、アプリケーションが起動していることを確認してから旧インスタンスを停止します。
関連付けに失敗する・アクセスできないとき
関連付けのエラーは、メッセージから原因を読み取れることが多いです。
- インターネットゲートウェイが接続されていない旨のエラー: VPC にインターネットゲートウェイを作成して接続します
- インスタンスに複数のインターフェースがある旨のエラー:
--instance-idではなく--network-interface-idで ENI を指定します - すでに関連付けられている旨のエラー: 付け替えが意図どおりなら
--allow-reassociationを付けます - 権限不足(UnauthorizedOperation): IAM ポリシーに必要なアクションを追加します
関連付けは成功したのに外からアクセスできない場合は、次の順に確認します。
- セキュリティグループで、接続元からのポート(SSH の 22、HTTP の 80、HTTPS の 443 など)が許可されているか
- サブネットのルートテーブルにインターネットゲートウェイへの経路があるか、ネットワーク ACL で戻りの通信も許可されているか
- OS のファイアウォール(ufw、firewalld など)でポートが開いているか
- インスタンス自身が認識しているパブリック IP を、インスタンスメタデータで確認する
# IMDSv2 でトークンを取得してからパブリック IPv4 を確認する
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 60")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/public-ipv4
付けた後に見直す設定
Elastic IP を関連付けると、それまで自動で割り当てられていたパブリック IP は置き換わり、パブリック DNS 名も変わります。古い IP で SSH の接続先を登録していたり、DNS の A レコードに書いていたりした場合は更新が必要です。WordPress を IP アドレスで設置していた場合は、サイトアドレス(siteurl と home)を書き換える前にデータベースのバックアップを取ってください。独自ドメインで運用するなら、Route 53 などで A レコードを Elastic IP に向け、サイトアドレスはドメイン名にしておくと、今後の付け替えの影響を受けにくくなります。
また、Elastic IP を外したときの挙動にも注意が必要です。条件によってはインスタンスに新しいパブリック IP が自動で割り当てられますが、元の IP には戻りません。外したアドレスは解放しない限り確保されたままで課金対象になり得るため、使わないなら解放します。Terraform などで管理している場合は、コンソールで手作業の付け替えをすると状態がずれるので、コード側の aws_eip_association などのリソースで管理を揃えてください。
まとめ
- 関連付けの前に、リージョン、インターネットゲートウェイと経路、ENI の数、IAM 権限を確認する
- 単純な構成はインスタンス指定、複数 ENI や複数 IP を使うなら ENI とプライベート IP を指定する
- 付け替えは
--allow-reassociationで行い、新しいインスタンスの準備ができてから旧サーバーを止める - OS からは Elastic IP は見えないため、待ち受けアドレスにはプライベート IP か
0.0.0.0を使う - 付けた後は DNS・SSH の接続先・WordPress のサイトアドレスを見直し、不要なアドレスは解放する