This section of the AWS Certified Solutions Architect - Professional learning path introduces you to the core networking concepts and services relevant to the SAP-C02 exam. We start with an introduction to the AWS Virtual Private Network (VPC) and networking services. We then understand the options available and learn how to select and apply AWS networking, DNS, and content delivery services to meet specific design scenarios relevant to the AWS Certified Solutions Architect - Professional exam.
- Get a foundational understanding of VPCs, their security, and connectivity
- Learn about VPC sharing using the AWS Resource Access Manager
- Discover inter-regional and intra-regional communication patterns in AWS
- Learn about AWS Direct Connect, along with its implementation, configuration, and connectivity options
- Understand routing in AWS, including static and dynamic routing
- Understand the basics of networking, including Elastic IP addresses, Elastic Network Interfaces, networking with EC2, VPC endpoints, and AWS Global Accelerator
- Learn about the DNS and content delivery services Amazon Route 53 and Amazon CloudFront
Hello and welcome to this lecture covering an overview of Elastic IP addresses, known as EIPs.
When architecting your infrastructure from a network perspective, you might have both public and private IP addresses. Your public IP addresses will be reachable from the internet from within a public subnet, whereas your private IP addresses will be hidden in a private subnet.
When launching an EC2 instance, you can select the subnet that it will reside in, and if you want EC2 to auto-assign a Public IP address. If you select Enable, then your instance will be launched with one of AWS' public IP addresses from their pool of available public addresses.
If this auto-assign option is selected, then that public IP address will remain with that instance until it is stopped or terminated, at which point it will be removed from your instance. However, there will be times when you need a persistent IPv4 public IP address that you need to have associated with your instance, which is exactly what an Elastic IP Address provides.
When you create a persistent elastic IP address, the IP address is associated with your account rather than an instance. This means you can attach an EIP address to an instance or an Elastic Network Interface, an ENI, and even if you stop the instance its associated with, the same EIP will remain in place. You can also detach the EIP from an instance and re-attach it to another instance. However, do bear in mind that when you detach an EIP and it's not associated with a running instance, then you will incur a cost for it. If you no longer need the EIP, you must detach it from the associated instance and release it back to AWS.
If you associate an EIP to an instance that already has a pooled public IP address, then that pooled public address will be released and put back into the pool, and your instance will take on a new EIP address. It's also worth mentioning that you can't convert an existing pooled public IP address to an EIP.
I will now provide a quick demonstration, and I will start by creating a new EIP within my account. I will then associate this EIP to a running instance in my VPC that already has a public IP address. And I will then confirm that the instance has the newly associated public IP address. I will then detached this EIP and release it back to AWS.
Let's take a look. So I've logged into my AWS management console, and I have an instance running here. Now if we look at the settings of this instance, we can see that it has currently a public IP address, 188.8.131.52. So this is sitting in a public subnet at the moment. And this IP address is just allocated out of AWS' public IP address pool. It's not an elastic IP address. If it was then you'd see an entry under this section here.
Firstly, what I want to demonstrate is that these public IP addresses that are just allocated from the pool are not persistent. So if I stop this instance and then restart it, we'll see that it will have a different public IP address. So this currently has 184.108.40.206. So if I go ahead and stop this, that'll just take a moment to stop. Okay, that's now stopped, we can see that it's released the public IP address. And if I start this instance again, and we'll see what IP address it has this time.
Okay, that's now back up and running. And we can see that it is a totally different public IP address. So it just goes to show when you stop and start your instances using one of the publicly assigned IP addresses from AWS, that is not an elastic IP address, then that IP address is going to change each time. Now let me go ahead and create an elastic IP address to show you how to do that. Now on the left hand side, under network and security, you will see elastic IPS. So if you select that, at the moment, I don't have any elastic IP addresses, so all I need to do is select Allocate new address.
Now I can select an elastic IP address that is owned by Amazon or one that's owned by myself. For this demonstration, I'm going to be using an Amazon-owned address, and select Allocate. Okay and we have our elastic IP address 220.127.116.11. So now we have that here, but at the moment, it's not actually assigned to any instance. When you have an elastic IP address created and it's not associated to an instance, it's going to cost you money. So you want to make sure that you either release any unassociated elastic IP addresses back to AWS, or associate it with an instance. To associate it with an instance, select Actions, and then Associate address.
Now here, you can either associate it to an instance or a network interface. For this demonstration, I'm going to associate it to a running instance. Now the instance that we was looking at just a moment ago, was called public instance. And as we can see that is currently running. Now also have to associate a private IP address to associate to the IP as well, so it can communicate internally with the rest of the subnets on your VPC.
So this is the private IP address that was running on our instance, so we'll select that. And now I just need to select Associate. So our EIP is now associated to a running instance. So let's go and take a look. So if we go back to our instances, we can now see that the public IP address is our EIP address, which is 18.104.22.168. And we can also see here that it's allocated the elastic IP address which is the same.
So to associate an EIP with an already running instance is very easy, it just replaces the existing public IP address that it had previously. Now if I stop this instance and restart it, we'll see that it maintains this same elastic IP address, 22.214.171.124. So let me just demonstrate that now. So I'm gonna stop this instance.
Okay, that's now stopped. And we can see here that it's still maintaining this elastic IP address, whereas previously with the general pooled public IP address, this cleared, this entry cleared when we stopped the instance. So if we start this instance again, and we can see that it's retained and persisted this public IP address. So it behaves very differently.
Okay, so now what I'm going to do is disassociate this elastic IP from this instance. So if I go back to my elastic IPs, we can see our elastic here and we can see that it's associated to our instance, if I go to Actions, Disassociate address, and it just gives us information on the instance ID and the network interface that it's going to disassociate it from.
So if I go ahead and disassociate that, we can now see that it's not related to any instance at all. And if I go back to my instance, we can see that the elastic IP address is now gone, and instead it had pooled a general AWS public IP address instead. Which as we know, is not persistent when we restart and stop the EC2 instance. However, now I have an elastic IP address that isn't being used.
So again, this is costing me money. So now I want to release it back to AWS 'cause I no longer need it. So again, I select the EIP, select Actions, and Release address. Then we just have a confirmation message, and I select Release. And it's as simple as that.
Danny has over 20 years of IT experience as a software developer, cloud engineer, and technical trainer. After attending a conference on cloud computing in 2009, he knew he wanted to build his career around what was still a very new, emerging technology at the time — and share this transformational knowledge with others. He has spoken to IT professional audiences at local, regional, and national user groups and conferences. He has delivered in-person classroom and virtual training, interactive webinars, and authored video training courses covering many different technologies, including Amazon Web Services. He currently has six active AWS certifications, including certifications at the Professional and Specialty level.