Associate Elastic IP to Interface or Instance?
What advantages are there to pairing an Elastic IP (EIP) to an interface as opposed to the instance itself?
I see the point of the network interfaces - you can associate and disassociate them from/to instances on-demand without losing configuration. However, you could just as easily do the same for an Elastic IP without any kind of hindrance by disassociating it with the instance and associating it with the new one.
Network interfaces are exposed for many service you spin up within your VPC, this includes things like load balancers, databases along with normal EC2 instances.
Network interfaces can be considered the same as standalone Ethernet card in the real world. When you move a network interface between machines it can keep its public, private and mac address.
Under normal circumstances assigning an EIP to an instance, is actually just assigning an EIP to that instances primary interface. A primary interface is created automatically when creating an instance. [AWS Docs]
This does get a little more complicated when you include 'ec2-classic' mode, as these instances don't have the concept of network interfaces, as they are pre-vpc. In this mode, EIP's are attached to the instance, not the interface. More details on the differences between the 3 'vpc modes'.
One other thing to note is that you can assign multiple interfaces to the same instance, so there will be some situations where you will need to explicitly search by interface, and not instance.