Problem with attaching of internet gateway - Terraform - amazon-web-services

I have problems with assigning two internet gateways in the infrastructure with terraform.
I have two subnets, a subnet manages all the frontend and the other subnets manages all the backend, i want to assign them an internet gateway to each ec2 instance so to can use them from the internet, but I'm getting the next error:
error attaching EC2 Internet Gateway (igw-0b0af7a9d5274c29d) to VPC (vpc-095fd5e0ee29b981d): InvalidParameterValue: Network vpc-095fd5e0ee29b981d already has an internet gateway attached

It is not possible to attach more than one InternetGateway per VPC. For ec2 instances to access the internet, add rote to your subnet's route table that directs all default traffic (0.0.0.0/0) to your InternetGateway. Also assign Public IP / Elastic IP to each of EC2.
Refer this AWS doc for more info:-
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html

Related

Outbound Traffic from Private Subnet in AWS

Can I download and install patches from Internet using Route53, without having NAT Gateway and IGW?
I think you might be a little confused regarding what Route53 is:
Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service.
Source
So, it has nothing to do with downloading patches. You can use it to handle your domains, and it can work nicely with several AWS services.
Now, regarding your question. If you want an EC2 instance to access the Internet and download its security patches, you will need an Internet Gateway configured on the VPC of the instance. On the other hand, the NAT Gateway is only necessary if your instance is configured on a private subnet. A private subnet doesn't have direct access to the Internet Gateway, so you need to provide a NAT Gateway to allow your instances to reach it. EC2 instances in public subnets can be assigned public IPs. An instance with a Public IP can access the Internet directly through the Internet Gateway without needing a NAT Gateway.
Another resource you are going to have to configure is Route Tables. Each subnet is assigned to a single Route Table. Once attached, it will use the routes define on the Route Table to handle their instances traffic. A Route Table that handles private subnets will have a default route pointing to a NAT Gateway. And a public Route Table will have a default route pointing directly to the Internet Gateway. Bear in mind that the NAT Gateway should always be instantiated on public subnets.
Take a look at the following documentation site for more information:
VPC Internet Gateway
VPC Subnet
VPC Route Tables
Route53 is a DNS service and its function is DNS resolution. You need NAT Gateway for outbound internet access from private subnet

How to find out internet-facing resource (EC2, RDS etc) in AWS VPC?

Question is really simple, Where we can check in the VPC to find internet-facing resources?
There are 1 VPC and it has couple private subnets where EC2 instances are in (with security groups attached), couple public subnets where NAT gateways are in (with EIP addresses attached) and each subnets has its own route table.
Note that there are 1 Internet gateway and 1 Virtual private gateway attached to VPC.
One way is to check for the resources in the public subnet. Another way is to capture the VPC network metadata using the VPC Flow logs and analyze the same using Athena. Here is a blog on AWS around the same. Another way is to use the VPC Ingress Routing.

Can't delete AWS internet Gateway

I created an internet gateway in AWS VPC dashboard, I attached it to a VPC then I want to detach it but I keep getting this error:
Network vpc-xxxx has some mapped public adresses, Please unmap those public addresses before detaching the gateway. ( Service: AmazonEC2; Status Code: 400; Error Code: DependencyViolation; Request ID: qfdqsdf)
What to do to detache this IGW ? Why exactly do I get this error?
I need to get rid of this IGW without deleting extra resources. please any ideas?
For information, the route table of the VPC does contain public addresses but they are routed to other targets. This IGW is not set as target anywhere.
You have some resources in the VPC that have been assigned a Public IP address, such as:
Amazon EC2 instances
Amazon RDS instances
Amazon Redshift cluster
VPC NAT Gateways
etc.
These IP addresses might have been assigned as an Elastic IP address or as an "auto-assign Public IP address" on instance creation.
You will need to delete these Elastic IP addresses before the Internet Gateway can be removed. If they were auto-assigned IP addresses, then Stop the instances to remove the public IP addresses.
You might also need to edit your Route Tables so that they do not refer to the Internet Gateway.
had eks in a vpc, deleted the cluster but now there's network interfaces with an EIP and sg attached to them that were loadbalancers that did not get deleted when deleting the cluster because the deployments were not deleted inside the cluster before deleting the cluster itself. Had to find all associated ELB's and delete them, then security groups, then intefaces, EIP, all the way down the line till finally deleting the internet gateway and vpc.
I had to delete NAT gateway that was hanging around to resolve mine.
For those facing the same problem check also Route tables having the Internet Gateway as target
Personally, I had to manually reject connections from the endpoint services in the VPC.
Endpoint Services > Select Service > Endpoint Connections > Select connection > Actions > Reject endpoint connection request
In my case, I had to remove the dependency of Public IP from the DMS Replication instance.

Attach elastic IP to EC2 instance?

I created an EC2 instance, but I want to attach an elastic IP to it so that if I ever have to resize the instance, the IP doesn't change.
So I allocated a new elastic IP address, but when I try to associate it with the instance, I get this error:
Network vpc-c00973b1 is not attached to any internet gateway
What am I doing wrong?
Your instance is in AWS VPC (not in Classic). This VPC is not default VPC which comes with pre-attached Internet Gateway. Your VPC requires an internet gateway to communicate with outside of your VPC. i.e. that includes any destination on internet. To attach elastic IP you must attach an Internet Gateway with your VPC and add route to internet in your subnet's route table. (0.0.0.0/0 to Internet Gateway)
This guide will help you for detailed steps.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway

Cannot ping or ssh to amazon instance launched in VPC

I created a VPC, added an internet gateway, added two subnets, and then launched an instance into that VPC. I created a security group that permits any traffic from anywhere and assigned it to that instance. I assigned to enable a public IP address (I didn't assign it an elastic ip).
I cannot for the life of me figure out why I cannot connect to public ip address of instance. I've literally gone back destroyed and created my vpc and instances with no luck.
There has got to be something simple I'm missing, it cannot be this difficult. What is going on??
You have created the internet gateway but must have forgot to attach the Internet Gateway to the Subnet in which you are launching the EC2 instances. Go to the subnet in which you have launched the EC2 instances and attach the Internet gateway to the subnet. When you check the route table for the subnet it should look some thing like this screenshot. That "igw" is the internet gateway.
Even you allowed all the traffic in Security group. we need to check the INTERNET GATEWAY added in the Route Tables
For that,
SERVICES > VPC > ROUTE TABLES and select your Route table
In the routes Tab after to summary,
Please check you have added your INTERNET GATEWAY