Cloud Resume Challenge
Tags: aws, serverless, tutorial
Published: 2020-06-13 14:31:49

I started the cloud resume challenge as a way to have hands-on experience with the cloud. I have three years experience working as a Fullstack developer and I am excited to pursue a new challenge in cloud. The cloud resume challenge is an initiative by Forrest Brazeal to help new people to break into the Cloud industry, as many are losing their jobs because of the coronavirus pandemic. It took me a week to accomplish and below are some useful azure technology and skills I learnt while doing the challenge.

1. The first task which was to create my resume page using HTML, CSS and Javascript was quite easy. I got a resume template on Codepen and I was able to tweak it to my taste. The Javascript part involved making  an API call to my Api gateway with fetch to get and display the visitors count. At this point, I was using a dummy api endpoint.

2. The second task was to upload my resume to an Amazon S3 bucket. I was using the amazon console to upload my static website and set bucket access to public and I had to repeat this process multiple times after making changes to my HTML. You would read in later tasks how i later made this process effortless.

3. The third task was to allow the S3 bucket use HTTPS for security using CloudFront and point the Cloudfront distribution to a custom domain. I obtained a domain name through Route53, created an SSL certificate using AWS Certificate Manager and pointed this to my CloudFront distribution.

4. My next task was to persist the visitor's count to a database. I used DynamoDB for this. I was able to use the update item query that would update before getting the item. This would save cost in the sense that a single DynamoDB query and API endpoint was enough to Update and Get the visitor's count.

5. Next task was to create a lambda function that would communicate with my DynamoDB. I had to use Python for this since it was part of the challenge requirements. Python was quite easy to grasp and in few hours, I was able to create a Lambda function with proper IAM roles/policies to access DyanmoDB.

6. The next tasks are the most challenging and the parts I enjoyed working on the most in this challenge. I created a SAM (serverless application model) template to handle creating the DynamoDB, Lambda function and tests, and API gateway integration. I used the AWS CLI for this and i was able to test my functions locally using docker. I wrote unit tests for my lambda function and i was able to test that they work locally with the Dynamodb using moto from AWS.

7. I then used GitHub Actions to automate the process of building and testing my SAM template after each push to my private backend repository. If the build and test were successful, It goes ahead to deploy the SAM template on AWS.

8. I repeated the same process to automate uploading my static Frontend code to my aws bucket. I used Github actions for this and also invalidated my CloudFront Cache in the workflow. I made sure i stored my AWS credentials in Github Secrets for security reasons.

9. The resume project was complete and it was time to prepare for my AWS Certified Cloud Practitioner exams as this was part of the challenge requirements. I prepared for the exam and passed within two weeks using the official study guide from AWS, Practice questions from https://acloud.guru and the practical experience gotten from the tasks above.

When this challenge is over, I would be writing a more detailed article on the technical side of this project.

You can check the Finished product at https://bolajiakande.com 
You can also view my AWS Certification here https://www.youracclaim.com/badges/27320586-7c1d-46c3-9773-69dff3ce206e/public_url

Overall, This was a great learning experience to me and I'm really happy to participate in this challenge. I would advice both Intermediate and Fresh Cloud Engineers to try this challenge out.
Here is a link to try it out - https://cloudresumechallenge.dev/