Bird
Raised Fist0
AWScloud~5 mins

Internet Gateway for public access in AWS - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
When you want your cloud servers to talk to the internet, you need a way to connect them. An Internet Gateway lets your servers send and receive data from the internet safely and easily.
When you want a web server in your cloud to be reachable by anyone on the internet.
When you need to download software updates directly from the internet to your cloud machines.
When you want to allow your cloud applications to access external APIs or services on the internet.
When you want to host a public website or app that users can visit from anywhere.
When you need to enable cloud resources to send data to internet-based monitoring or logging services.
Config File - main.tf
main.tf
provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "example_vpc" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "example-vpc"
  }
}

resource "aws_internet_gateway" "example_igw" {
  vpc_id = aws_vpc.example_vpc.id
  tags = {
    Name = "example-igw"
  }
}

resource "aws_subnet" "example_public_subnet" {
  vpc_id            = aws_vpc.example_vpc.id
  cidr_block        = "10.0.1.0/24"
  map_public_ip_on_launch = true
  availability_zone = "us-east-1a"
  tags = {
    Name = "example-public-subnet"
  }
}

resource "aws_route_table" "example_public_rt" {
  vpc_id = aws_vpc.example_vpc.id
  tags = {
    Name = "example-public-rt"
  }
}

resource "aws_route" "default_route" {
  route_table_id         = aws_route_table.example_public_rt.id
  destination_cidr_block = "0.0.0.0/0"
  gateway_id             = aws_internet_gateway.example_igw.id
}

resource "aws_route_table_association" "public_subnet_association" {
  subnet_id      = aws_subnet.example_public_subnet.id
  route_table_id = aws_route_table.example_public_rt.id
}

This Terraform file creates a virtual private cloud (VPC) with a public subnet. It attaches an Internet Gateway to the VPC, which allows traffic to and from the internet. A route table is created with a default route sending all internet traffic (0.0.0.0/0) to the Internet Gateway. The public subnet is associated with this route table, enabling instances in that subnet to have public internet access.

Commands
This command initializes Terraform in the current directory. It downloads the AWS provider plugin and prepares Terraform to manage the infrastructure.
Terminal
terraform init
Expected OutputExpected
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/aws... - Installing hashicorp/aws v4.0.0... - Installed hashicorp/aws v4.0.0 (signed by HashiCorp) Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure.
This command applies the Terraform configuration to create the VPC, Internet Gateway, subnet, route table, and associations. The -auto-approve flag skips manual approval to speed up deployment.
Terminal
terraform apply -auto-approve
Expected OutputExpected
aws_vpc.example_vpc: Creating... aws_vpc.example_vpc: Creation complete after 2s [id=vpc-0abcd1234efgh5678] aws_internet_gateway.example_igw: Creating... aws_internet_gateway.example_igw: Creation complete after 1s [id=igw-0abcd1234efgh5678] aws_subnet.example_public_subnet: Creating... aws_subnet.example_public_subnet: Creation complete after 2s [id=subnet-0abcd1234efgh5678] aws_route_table.example_public_rt: Creating... aws_route_table.example_public_rt: Creation complete after 1s [id=rtb-0abcd1234efgh5678] aws_route.default_route: Creating... aws_route.default_route: Creation complete after 1s aws_route_table_association.public_subnet_association: Creating... aws_route_table_association.public_subnet_association: Creation complete after 1s Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
-auto-approve - Automatically approve the apply without prompting
This AWS CLI command checks that the Internet Gateway is attached to the VPC by filtering Internet Gateways attached to the specific VPC ID.
Terminal
aws ec2 describe-internet-gateways --filters Name=attachment.vpc-id,Values=vpc-0abcd1234efgh5678
Expected OutputExpected
{ "InternetGateways": [ { "InternetGatewayId": "igw-0abcd1234efgh5678", "Attachments": [ { "VpcId": "vpc-0abcd1234efgh5678", "State": "available" } ] } ] }
--filters - Filter results to show only Internet Gateways attached to the specified VPC
Key Concept

If you remember nothing else from this pattern, remember: an Internet Gateway connects your cloud network to the internet, enabling public access for resources in public subnets.

Common Mistakes
Not associating the public subnet with a route table that has a route to the Internet Gateway.
Without this association, instances in the subnet cannot send traffic to the internet even if the Internet Gateway exists.
Always create a route table with a default route to the Internet Gateway and associate it with your public subnet.
Forgetting to enable 'map_public_ip_on_launch' on the subnet.
Instances launched in the subnet won't get public IP addresses automatically, so they won't be reachable from the internet.
Set 'map_public_ip_on_launch = true' in the subnet configuration to assign public IPs automatically.
Summary
Initialize Terraform to prepare for deployment with 'terraform init'.
Apply the configuration to create VPC, Internet Gateway, subnet, and routing with 'terraform apply'.
Verify the Internet Gateway is attached to your VPC using AWS CLI commands.

Practice

(1/5)
1. What is the main purpose of an Internet Gateway in AWS?
easy
A. To allow communication between a VPC and the internet
B. To store data securely in the cloud
C. To manage user permissions in AWS
D. To create private subnets within a VPC

Solution

  1. Step 1: Understand the role of an Internet Gateway

    An Internet Gateway is a component that connects a Virtual Private Cloud (VPC) to the internet, enabling resources in the VPC to access or be accessed from the internet.
  2. Step 2: Identify the correct purpose

    Among the options, only allowing communication between a VPC and the internet matches the Internet Gateway's function.
  3. Final Answer:

    To allow communication between a VPC and the internet -> Option A
  4. Quick Check:

    Internet Gateway = Connects VPC to internet [OK]
Hint: Internet Gateway connects VPC to internet, not storage or permissions [OK]
Common Mistakes:
  • Confusing Internet Gateway with storage services
  • Thinking it manages user permissions
  • Assuming it creates private subnets
2. Which AWS resource must an Internet Gateway be attached to for it to provide internet access?
easy
A. An EC2 instance
B. A Virtual Private Cloud (VPC)
C. An S3 bucket
D. A Security Group

Solution

  1. Step 1: Identify the attachment requirement of an Internet Gateway

    An Internet Gateway must be attached to a VPC to enable internet access for resources inside that VPC.
  2. Step 2: Match the correct AWS resource

    Among the options, only a VPC is the correct resource to attach an Internet Gateway to.
  3. Final Answer:

    A Virtual Private Cloud (VPC) -> Option B
  4. Quick Check:

    Internet Gateway attaches to VPC [OK]
Hint: Internet Gateway attaches only to VPC, not instances or buckets [OK]
Common Mistakes:
  • Trying to attach Internet Gateway directly to EC2
  • Confusing with storage like S3 buckets
  • Thinking it attaches to Security Groups
3. Given the following AWS setup, what will happen if the Internet Gateway is not attached to the VPC?
VPC: vpc-1234
Internet Gateway: igw-5678 (created but not attached)
EC2 Instance: in public subnet with route to igw-5678
medium
A. The EC2 instance will not have internet access
B. The EC2 instance will be terminated automatically
C. The EC2 instance will have internet access
D. The EC2 instance will have internet access only for outbound traffic

Solution

  1. Step 1: Understand Internet Gateway attachment requirement

    An Internet Gateway must be attached to the VPC to enable internet traffic flow. Without attachment, the gateway is inactive for that VPC.
  2. Step 2: Analyze the effect on EC2 instance

    Even if the route table points to the Internet Gateway, since it is not attached, the EC2 instance cannot send or receive internet traffic.
  3. Final Answer:

    The EC2 instance will not have internet access -> Option A
  4. Quick Check:

    Internet Gateway unattached = no internet access [OK]
Hint: Internet Gateway must be attached to VPC for internet access [OK]
Common Mistakes:
  • Assuming route table alone enables internet
  • Thinking instance auto-terminates without internet
  • Believing outbound-only access works without attachment
4. You created an Internet Gateway and attached it to your VPC, but your EC2 instance in the public subnet still cannot access the internet. What is the most likely cause?
medium
A. The Internet Gateway is not attached to the VPC
B. The EC2 instance is stopped
C. The route table for the subnet does not have a route to the Internet Gateway
D. The security group allows all traffic

Solution

  1. Step 1: Confirm Internet Gateway attachment

    The question states the Internet Gateway is attached to the VPC, so this is not the issue.
  2. Step 2: Check route table configuration

    For internet access, the subnet's route table must have a route directing 0.0.0.0/0 traffic to the Internet Gateway. Missing this route blocks internet access.
  3. Final Answer:

    The route table for the subnet does not have a route to the Internet Gateway -> Option C
  4. Quick Check:

    Route table missing IGW route = no internet [OK]
Hint: Check route table for 0.0.0.0/0 route to IGW [OK]
Common Mistakes:
  • Ignoring route table routes
  • Assuming attachment alone grants internet
  • Confusing security group rules with routing
5. You want to provide internet access to instances in a public subnet of your VPC. Which combination of steps is required to achieve this?
hard
A. Create a VPN connection and update the route table to route 0.0.0.0/0 to the VPN
B. Create a NAT Gateway, attach it to the VPC, and assign private IPs to instances
C. Attach an Internet Gateway to the subnet directly and assign Elastic IPs to instances
D. Create and attach an Internet Gateway to the VPC, update the subnet's route table to route 0.0.0.0/0 to the Internet Gateway, and ensure instances have public IPs

Solution

  1. Step 1: Attach Internet Gateway to VPC

    Internet Gateway must be created and attached to the VPC to enable internet connectivity.
  2. Step 2: Update subnet route table

    The route table for the public subnet must have a route sending all internet-bound traffic (0.0.0.0/0) to the Internet Gateway.
  3. Step 3: Assign public IPs to instances

    Instances need public IP addresses to communicate over the internet directly.
  4. Final Answer:

    Create and attach an Internet Gateway to the VPC, update the subnet's route table to route 0.0.0.0/0 to the Internet Gateway, and ensure instances have public IPs -> Option D
  5. Quick Check:

    IGW + route + public IP = internet access [OK]
Hint: Internet Gateway + route + public IP = public internet access [OK]
Common Mistakes:
  • Confusing NAT Gateway with Internet Gateway for public subnet
  • Trying to attach IGW to subnet directly
  • Forgetting to assign public IPs to instances