Overview
(As outlined in the book)
- Certification
- HTML
- CSS
- Static S3 Website
- HTTPS
- DNS
- JavaScript
- Database
- API
- Python
- Tests
- Infrastructure as Code
- Source Control
- CI/CD (Back End)
- CI/CD (Front End)
- Blog Post
My Background....
Who am I?
I consider myself an IT Generalist. My career has been mostly IT management and Infrastructure management. I had some experience in college with coding in VB and C++ but ultimately it did not take. But I am a quick study, in most cases.
How did I get here?
A few years back, during Covid, I worked on a migration project transitioning some of our on premises server into the cloud. The team that I worked with all worked from home and seemed to enjoy what they did. From that moment I devised a scheme to put myself in a position to be more remote and more challenged.
AWS was completely new to me. I did not work with it at all for work. It was all part of a masterplan to be more of a specialist vs generalist.
How it works:
- User makes a request to the website via your domain name.
- Route 53 routes traffic to the CloudFront distribution.
- CloudFront then forwards request to the S3 bucket website endpoint.
- The endpoint request the HTML from the bucket that shares its name with your domain name.
- The JS on the page then calls the API Gateway Endpoint which then executes the lambda code.
- The lambda function, written in Python (boto3 library) executes and writes. It updates and returns the current visitor count total to JS.
- JS then presents the visitor count on the page.
Tools
Visual Studio Code
PyCharm
Bash
1. Certification
It took me nearly 2 years (off and on) to study and pass the AWS SAA. Finding time to study was my biggest hinderance in the beginning. Responsibilities as a father, husband, etc was a constraint on my time.
Once I figured out a regular schedule it took about 5 months of studying. I watched videos on managing time, studying techniques, and finding resources to prepare for the test. A bulk of my training was using ACloudGuru, followed by Whizlabs, and supplemented with some youtube videos and AWS documentation.
I went through all the lectures on ACloudGuru. I did all relevant labs on Whizlabs...and boom! I PASSED.
2. HTML
I had some experience with HTML from an internship more than 20 years ago, but none since. And I am not a person who phones it in so I took a refresher for HTML. I found an HTML/CSS template that I liked. But I wanted to understand how it worked. I reverse engineered it with the help of the Youtube videos I just mentioned. Javascript is used to invoke the lambda function. This cost me some time.
3. CSS
I watched some videos and read some articles to under CSS. Even though this was included in the template I found for my resume. I wanted to understand how and why CSS does what it does. Another straightforward endeavor.
4. Host Static Website (S3)
There were a number of ways to complete this part of the task. I ultimately chose to register a domain with AWS via Route 53. In order to host a static website on S3 it has to be the same name as the domain you register for example example.com. You will need 2 buckets for redirect to work. This was a straightforward exercise.
5. HTTPS (AWS Certificate Manager [ACM] )
This is where it started to get difficult for me. The next part of this challenge required the use of HTTPS for security. I used ACM to create a certificate to enable HTTPS. Your certificate should include the name of your bucket and something else (but you will need to figure that out on your own)… I then created a CloudFront Distribution for the website and then associated the certificate to the distribution. This will force all request to use HTTPS. Mistakes were made, there was some documentation that called for 2 separate distributions which turned out to be an incorrect time suck.
6. DNS (Route 53)
Creating the records was mostly handled by ACM. In the certificate verification process there is an option to have the DNS records needed propagated over to Route 53. All the examples of how to use this that I found at the time used the old AWS interface to demonstrate this step. It did not look the same, regardless of this, this was also a straight forward endeavor.
The next 4 steps were the most difficult part of the challenge. And I did this out of sequence from the book.
7. JavaScript (page counter)
This part was difficult for me. I found a tutorial on how to create a page counter. Read numerous examples of how others have achieved this on their Cloud Resume Challenge journeys. Again, I had to deconstruct why the page counter works. Which meant I had to learn a little JavaScript. The JavaScript code is used to invoke the API Gateway call.
8. Database (DynamoDB)
I had done some classes in the past dealing with databases, SQL in particular, and normalizing databases. But DynamoDB was a different animal all together. This required a lot of research of past resume challengers. Setting up the table was straight forward but required a lot of reading to understand for the context of the challenge. One Partition key is needed that all. DynamoDB holds the page count.
9. API (API Gateway)
This next task was not too difficult. Luckily the AWS Solutions Architect course walked me through this with a lab. So I was familiar with this task. In order for the invocation to work properly. You will need the API endpoint and JS for this.
10. Python (Lambda)
It is the most challenging part ever. I had to learn Python and boto3 in order to interact with the DynamoDB table. I stopped the challenge and spent a number of weeks in the Coursera Python for Everyone course by Charles Severance. There is also a free version of this course on Youtube. My only programming experience was in college and I had to relearn some things. The course was worth it, I have a decent understanding of Python now and confidence to take on tougher coding challenges.
11. Tests
Having only just learned Python I leaned heavily on Getting Started With Testing in Python and a couple of coder friends. Ultimately it took a lot of trial and error.
12. Infrastructure as Code (Serverless Application Model [SAM] )
I did a version of this part of the challenge in Cloudformation, SAM, and Terraform. Ultimately I decided on SAM. It creates any AWS services for me instead of manually. SAM guide is easy to google. SAM makes it very easy but I will rebuild in Terraform at some point.
13. Source Control
Behind the learning Python this was the toughest for me. Once again I found a Git and GitHub for Beginners - Crash Course on Youtube. I have no experience using Git or any other source control, due mostly to the fact that I do not deal with code in my day to day. But now I use GitHub everyday. But the course goes over source control and CI/CD so well worth the time.
14/15. CI/CD (Back End and Front End)
I set up GitHub Actions for the frontend and backend to automate code and AWS resources to set them up. Once again I found a Git and GitHub for Beginners - Crash Course to be very helpful. I repeated this course a number of times and destroyed several repos to get this to work but it did. I created several iterations of the Cloud Resume Challenge to test GitHub actions. My reaction to using Git in general is it saves a lot of my time. GitHub Action is easy to use because many tools as AWS in GitHub Marketplace, can improve workflows and save time. I ran into some issues and broke down the problem to the basics. I tried commands first in the CLI to prove that it worked and copied those scripts longform into the Yaml. It was only after I proved that it worked longform to I strive for efficiency utilizing GitHub secrets and stuff. Never put AWS credentials in any code! Voila, there it is.
16. Blog Post
If you have made it this far you are experiencing #16.
What's Next
More projects. More Terraform. More Python. In the book there are a few more projects that can be done and I have jotted down some other project ideas from watching Youtubers during this journey.
Conclusion
I passed the certification exam which validates the theoretical knowledge of AWS. But I needed something to differentiate myself in the job market. As a new Cloud Engineer with little work experience, The Cloud Resume Challenge did just that. It improved my skills, increased my knowledge, and gave me actual projects to speak to during interviews...and it worked. Besides that I am more confident with my improved skills for the future. If I wasn't so stringent about knowing things I could have completed the project in some weeks. But it was the journey that made it worthwhile. Stopping to learn Python, Git, JS, and strengthening my skills in AWS. Highly recommend this project for all those who want to work with cloud tech.
Resources:
My Resume Challenge site
A Cloud Guru
Whizlabs
Linkedin Learning
Study schedule help
Open Up The Cloud
Getting Started With Testing in Python
Python for Everyone
Git and GitHub for Beginners - Crash Course
Top comments (0)