<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anisa Aden</title>
    <description>The latest articles on DEV Community by Anisa Aden (@anisaaden).</description>
    <link>https://dev.to/anisaaden</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F981985%2Fe0f7c590-4e01-492b-9e3c-5cc88b4fbaba.jpeg</url>
      <title>DEV Community: Anisa Aden</title>
      <link>https://dev.to/anisaaden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anisaaden"/>
    <language>en</language>
    <item>
      <title>My Cloud Resume Challenge Journey</title>
      <dc:creator>Anisa Aden</dc:creator>
      <pubDate>Wed, 30 Nov 2022 15:23:57 +0000</pubDate>
      <link>https://dev.to/anisaaden/my-cloud-resume-challenge-journey-1an8</link>
      <guid>https://dev.to/anisaaden/my-cloud-resume-challenge-journey-1an8</guid>
      <description>&lt;p&gt;The &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/aws/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt; is a hands-on project designed by &lt;a href="https://twitter.com/forrestbrazeal" rel="noopener noreferrer"&gt;Forrest Brazeal&lt;/a&gt; to help newbies bridge the gap from cloud certification to cloud job. It incorporates many of the skills that real cloud and DevOps engineers use in their daily work.&lt;/p&gt;

&lt;p&gt;I chose to do the AWS version with Terraform as my language of choice for the IaC part, and incorporate in the security modifications as I come from a cybersecurity background. Below is a summary of the project, resources I found useful and a view of the current architecture. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gtiymrb8aemz51yo0ag.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5gtiymrb8aemz51yo0ag.jpeg" alt="CRC architecture" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Certification
&lt;/h2&gt;

&lt;p&gt;I already had both the AWS Cloud Certified Practioner and AWS Solutions Architect Associate prior to starting the challenege so I was able to skip ahead to step 2. I found the &lt;a href="https://acloudguru.com" rel="noopener noreferrer"&gt;A Cloud Guru&lt;/a&gt; platform and &lt;a href="https://www.whizlabs.com" rel="noopener noreferrer"&gt;WhizLabs&lt;/a&gt; practice tests really useful for studying for this certs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend
&lt;/h2&gt;

&lt;p&gt;I am not a front end developer, nor do I have a creative bone in my body. So for the HTML and CSS part of the code, I pretty much did the bare minimum (as is painfully evident from the finished product). &lt;/p&gt;

&lt;p&gt;Since I'd already played around with the AWS console in labs while prepping for the AWS SAA, setting up and getting S3, CloudFront and Route 53 all working together was easy. I did struggle with getting my web page to serve over HTTPS but that turned out to be a misconfigured alias record (Note: it pays to learn about DNS and the different record types). With the help of &lt;a href="https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-https-requests-s3/" rel="noopener noreferrer"&gt;this article&lt;/a&gt;, I got there in the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backend
&lt;/h2&gt;

&lt;p&gt;Believe it or not, the hardest part of the challenge for me was the JavaScript part, I could not get my visitor count to appear and update on my web page. I knew everything was working fine together as I tested the API endpoint on Postman so I went down the YouTube rabbit hole and found the AMAZING &lt;a href="https://www.youtube.com/c/TheNetNinja" rel="noopener noreferrer"&gt;The Net Ninja&lt;/a&gt;, between his videos and this awesome reddit answer to &lt;a href="https://www.reddit.com/r/learnjavascript/comments/pzuy6h/can_someone_explain_to_me_what_is_crossorigin/" rel="noopener noreferrer"&gt;Can someone explain to me what is Cross-Origin Resource Sharing(CORS) in the most simplest terms?&lt;/a&gt;, I was finally able to get an updated visitor count on my web page. &lt;/p&gt;

&lt;p&gt;There were a few other issues that propped up e.g. errors while testing my lambda function, but the AWS documenation is very detailed and I was always able to find the solution in there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation
&lt;/h2&gt;

&lt;p&gt;One of my cloud related goals was to get the HashiCorp Terraform Associate certificate so it made sense for me to use Terraform for the IaC part. I had never used Terraform before so I started off with &lt;a href="https://www.youtube.com/watch?v=V4waklkBC38&amp;amp;t=4283s" rel="noopener noreferrer"&gt;this course&lt;/a&gt; from freeCodeCamp. That, along with the &lt;a href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs" rel="noopener noreferrer"&gt;Terraform documentation for AWS&lt;/a&gt; was enough to help me with deploying both my front and back end infrastructure with Terraform. I really struggled with deploying API Gateway so I'm not sure if it's deployed &lt;em&gt;the right way&lt;/em&gt;, but it works.&lt;/p&gt;

&lt;p&gt;Next up was testing and setting up the CI / CD pipeline, I'll be honest I didn't spend much time on the testing part but &lt;a href="https://emshea.com" rel="noopener noreferrer"&gt;Emily Shea&lt;/a&gt; has some really good blog posts and tutorials on testing, check out her blog posts and git repository. I understood the basics of testing, use cases etc but my test is very basic and only checks for a status code. &lt;/p&gt;

&lt;p&gt;For the CI / CD pipeline, I had to set up Git Actions, I'd never used it before but &lt;a href="https://www.youtube.com/watch?v=R8_veQiYBjI" rel="noopener noreferrer"&gt;this video&lt;/a&gt; was a great tutorial and really helped me understand the functionality and workflows. I had a really annoying issue where my dynamodb configurations would throw an error, (&lt;em&gt;Error: error updating DynamoDB Table (...) time to live: error updating DynamoDB Table (...) Time To Live: ValidationException: TimeToLive is already disabled&lt;/em&gt;), every time I tried to run Terraform Apply. Turns out this is a known issue, &lt;a href="https://github.com/hashicorp/terraform-provider-aws/issues/13923" rel="noopener noreferrer"&gt;this post&lt;/a&gt; helped me resolve the error. &lt;/p&gt;

&lt;h2&gt;
  
  
  Security Modifications
&lt;/h2&gt;

&lt;p&gt;Once I completed the main steps of the challenge, I went back to do some security modificaions including enabled DNSSEC, deploying WAF (I ended up removing this as the costs were quite high and instead set up account level throttling for my API) and running IAM Access Analyser to flag anything I'd over permissioned. I also set up Git commit signing and added a new Git Action workflow to run &lt;a href="https://github.com/aquasecurity/tfsec" rel="noopener noreferrer"&gt;Tfsec&lt;/a&gt; any time I updated my terraform config files &lt;/p&gt;

&lt;p&gt;And with that I've completed the Cloud Resume Challenge, YAY!&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
