100 days of cloud, day 45, Feedback

Hi all,
the tasks says:

The Nautilus DevOps team is tasked with enabling internet access for an EC2 instance running in a private subnet. This instance should be able to upload a test file to a public S3 bucket once it can access the internet. To achieve this, the team must set up a NAT Gateway in a public subnet within the same VPC.

  1. A VPC named nautilus-priv-vpc and a private subnet nautilus-priv-subnet have already been created.
  2. An EC2 instance named nautilus-priv-ec2 is already running in the private subnet.
  3. The EC2 instance is configured with a cron job that uploads a test file to a bucket nautilus-nat-1215 once internet is accessible.

Your task is to:

  • Create a public subnet named nautilus-pub-subnet in the same VPC.
  • Create an Internet Gateway and attach it to the VPC.
  • Create a route table nautilus-pub-rt and associate it with the public subnet.
  • Allocate an Elastic IP and create a NAT Gateway named nautilus-natgw.
  • Update the private route table to route 0.0.0.0/0 traffic via the NAT Gateway.

Once complete, verify that the EC2 instance can reach the internet by confirming the presence of the test file in the S3 bucket nautilus-nat-1215. After completing all the configuration, please wait a few minutes for the test file to appear in the bucket, as it may take 2–3 minutes.

Lab Feedback

Bucket Creation

On my first and third attempts, the bucket was not created because the chosen name was already taken.

Step‑by‑Step Resolution

I progressed through the lab mainly by addressing validation errors one after another. To make the file available, the following steps were required:

  • Create an Internet Gateway and associate it with the VPC
  • Create a NAT Gateway
  • Add a route to the NAT Gateway

Private route table

There was no dedicated “private” route table; the general routing table for the VPC was sufficient for this task. The lab checked for an explicit association, but the solution worked even without it.

Public Subnet Requirement

The lab instructions required the creation of a public subnet. However, for the actual goal of providing Internet access to an EC2 instance, the public subnet was not necessary. In addition, the instructions did not mention that the public subnet should have a default route to the Internet Gateway, which made the requirement incomplete.

Bucket Creation

Yes, that does happen sometimes. A permanent fix was done for that on day 37. I have requested that same fix here. It happens because bucket names must be globally unique and the randomization here isn’t random enough. You will have clashed with another lab user.

Private Route Table

This is requested so that you can add an explicit route to the NAT gateway

Public Subnet

The definition of a “public” subnet in AWS is that it has a route for 0.0.0.0/0 (default) to an Internet Gateway. Without that it is a private subnet. These tasks are to test your knowledge as much as anything, and the above is a fact of AWS so should not need to be explicitly specified.

Thanks for the quick answer.

Private Route Table
It would still be nice to either name one routing table private or to request to create one. This way it’s just confusing. Especially as it’s working without the explicit assignment.

Public Subnet
Ok, the tasks haven’t been about strict AWS terminology so far, but it makes sense to have that difference, yes :wink: But as it’s not needed for the actual task, to connect the EC2 instance with the S3 bucket, it’s basically confusing.