You tagged this amazon-vpc, but the behavior you describe is what happens when an instance is launched in EC2-Classic. When you launch an instance in a VPC, it is assigned a private IP address and it remains for the lifetime of the instance. Their documentation is pretty clear on that point. To be clear, 'instance' in this case is a discrete 'i-' number.

EC2-Classic has no support for what you're looking for, and you can't assign new interfaces to it.

If you're not actually keeping the same instance defined and are spinning a new one up in a VPC based off of an AMI you have, you will get a new private IP address each time. As you suspected, if you define a new Interface and associate it with the instance, that Interface will have a static IP address. When you terminate the instance, the extra Interface goes unassigned. Reassign it to a new instance when you spin one up.


Create a network interface. Assign the IP address(es) you want to use. After launching an instance you want to use these addresses, select that network interface and click "Attach". In the pop-up dialog, the drop-down "Select Instance" has a list of your running instance that were running when you came to the network interface page. If the instance is not in the list, be sure it is running and reload the network interface page and try again. Click on "Attach" in the dialog. That instance will then be operating with that interface. It should not need a reboot.

When the instance is terminated the attached interface will be available, again, for other use.