ENI(Elastic Network Interface) は単体で触る機会があまりなかったので、どんなことができるのか触ってみました。
ENI
EC2 インスタンスはそれ自体に IP アドレスが付与されているわけではない。
EC2 にネットワーク情報を付与するには ENI が必要。
ENI は EC2 とは独立して存在しているため、EC2 にアタッチしたり、デタッチすることが可能。
インスタンスがネットワークに接続するためのいろんな情報を持たせることができる。
ENI には次の情報を持たせることができる。
VPC の IPv4 アドレス範囲からのプライマリプライベート IPv4 アドレス
VPC の IPv4 アドレス範囲からの 1 つ以上のセカンダリプライベート IPv4 アドレス
プライベート IPv4 アドレスごとに 1 つの Elastic IP アドレス (IPv4)
1 つのパブリック IPv4 アドレス
1 つ以上の IPv6 アドレス
1 つ以上のセキュリティグループ
MAC アドレス
送信元/送信先チェックフラグ
EC2 を作成すると ENI も自動で作成されている。
ENI は単体で作成することができて、セキュリティーグループも ENI に紐づいていることがわかる。
1つの EC2 インスタンスに IP アドレスを2つ設定する
上で作成した ENI を EC2 に紐づける
1つの EC2 にネットワークインターフェースが複数紐づいていることがわかり、
private ip も2つになっていることがわかる
ENI 単体に public ip アドレレスを割り当てるには Elastic IP アドレスを作成する必要などがありそう。
IP アドレスなどを引き継いで、 EC2 インスタンスを新規作成
IP アドレスは ENI に紐づいているという話だったので、今ある EC2 を削除して別の EC2 を新規作成した際に、 IP アドレスを引き継ぐこともできる。
ENI の設定で、紐づいている EC2 を削除した際に、一緒に削除されないように設定しておく。
「インスタンスの削除時に削除」の有効化のチェックを外しておく。
今あるインスタンスを削除して、
別のインスタンを新規で作成。その際にネットワークインターフェイスに既存のものを設定。
新規作成した EC2 の IP アドレスを確認すると、 public ip アドレスは変わっていたが、private ip アドレスは削除した EC2 から引き継ぐことができている。
今回 public ip アドレスは固定にしていなかったため、変わってしまったが、固定にしてたら public ip アドレスも引き継ぐことができそう。
IP フローティング
EC2 と ENI が独立していることで、障害発生時に ENI を別の EC2 に自動でアタッチすることで、アクセス先の EC2 を切り替えるなどすることが可能。
複数のVPCにEC2インスタンスを接続する
複数の VPC に EC2 インスタンスを接続することもできるらしい。
同一 AZ でないと無理らしい。
参考
https://dev.classmethod.jp/articles/ec2_takeover_privateipaddr_macaddr/
https://dev.classmethod.jp/tags/eni/
https://aws.amazon.com/jp/about-aws/whats-new/2023/10/multi-vpc-eni-attachments/