<?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: Joshua Wisniewski</title>
    <description>The latest articles on DEV Community by Joshua Wisniewski (@joshua_wisniewski).</description>
    <link>https://dev.to/joshua_wisniewski</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4073949%2Fd0c39841-22ea-422a-b447-c970335eaeb4.jpg</url>
      <title>DEV Community: Joshua Wisniewski</title>
      <link>https://dev.to/joshua_wisniewski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshua_wisniewski"/>
    <language>en</language>
    <item>
      <title>My First AWS Project</title>
      <dc:creator>Joshua Wisniewski</dc:creator>
      <pubDate>Wed, 12 Aug 2026 07:53:04 +0000</pubDate>
      <link>https://dev.to/joshua_wisniewski/my-first-aws-project-19mj</link>
      <guid>https://dev.to/joshua_wisniewski/my-first-aws-project-19mj</guid>
      <description>&lt;p&gt;A few weeks ago I got my AWS Solutions Architect Associate cert. I've been working in tech for about 10 years now, but didn't have much to show as far as cloud experience.&lt;/p&gt;

&lt;p&gt;A few years ago a friend of mine showed me his cloud resume from the &lt;a href="https://cloudresumechallenge.dev/" rel="noopener noreferrer"&gt;cloud resume challenge&lt;/a&gt; after he got his cert, and I thought it was one of the coolest things. So, I figured it would be a good starting place to show off what I can do and test out my new knowledge.&lt;/p&gt;

&lt;p&gt;A few days later and &lt;a href="https://jjwis.com/" rel="noopener noreferrer"&gt;this&lt;/a&gt; is what I have to show for it.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgdo3lvmy7etkdgohkd9.png" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffgdo3lvmy7etkdgohkd9.png" alt="Cloud Resume Stack" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A complete portfolio site hosted on AWS serverless architecture. I have to say it was some of the most fun I've had in a long time working on something.&lt;/p&gt;

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




&lt;h3&gt;
  
  
  HTML/CSS
&lt;/h3&gt;

&lt;p&gt;For me, this was absolutely the most difficult part of the challenge. I'm not a designer and I don't have an artistic bone in my body. I burned through the free HTML/CSS courses on &lt;a href="https://www.codecademy.com/catalog/language/html-css" rel="noopener noreferrer"&gt;Codecademy&lt;/a&gt; to get a better idea on how to start this section. Even after that, I was still struggling to make things look nice. I'm not ashamed to say that I did leverage Claude to spit me out a quick template to work with using Bootstrap.&lt;/p&gt;

&lt;p&gt;From there I started to see some progress, but it was a hilariously uphill battle to play around with things and get them to look how I wanted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Infrastructure
&lt;/h3&gt;

&lt;p&gt;The site is hosted as a static site using S3. I have this being served using CloudFront, secured using Amazon Certificate Manager. I had my domain name reserved through Route53 prior to completing my AWS exam, so I was all set to have it point to my CloudFront distribution at the start of this project.&lt;/p&gt;

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




&lt;p&gt;The backend of the site is an API Gateway that triggers a Lambda function to update my DynamoDB table's visitor count using Python and the boto3 library.&lt;/p&gt;

&lt;p&gt;I felt pretty strong going into this section, as I often work with REST APIs in my spare time, and have been programming in Python for a few years.&lt;/p&gt;

&lt;p&gt;Connecting the frontend to the backend was a small hiccup. I've never used JavaScript before professionally or recreationally. Writing the POST request wasn't too bad, but I did have to do some reading on how to display the returned count. Also, I fell victim to CORS, which had me doubling back to update my Lambda function.&lt;/p&gt;

&lt;p&gt;Though an issue did arise that we'll touch on later!&lt;/p&gt;

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




&lt;p&gt;Going into this project I was most excited for this section. I adore automating things at work. I've been reading into IaC for a long time, but never had a chance to work with it. I chose Terraform for this, as being cloud agnostic seemed like the smarter path. Holy cow, this was &lt;strong&gt;fun&lt;/strong&gt;. A lot of reading went on in the AWS provider registry on Terraform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terraform
&lt;/h3&gt;

&lt;p&gt;I decided to work smarter rather than harder, and chose to import my existing infrastructure. Then ran some cleanup on the code to strip it down to what I needed.&lt;/p&gt;

&lt;p&gt;That's when I paused for a moment... everything was hardcoded. From my understanding, IaC was all about scalability and easy changes. Welp, I found I had skipped over the attribute reference section on my initial reading of the documents in the AWS registry. It took a little bit, but I got everything that needed to be configured with a reference cleaned up.&lt;/p&gt;

&lt;p&gt;This is where my little issue with API Gateway pops back up! Since I was calling this with JavaScript on my site page, I ended up needing to make a new record in Route53 so that I could account for the changing API Gateway name for my POST request. I gotta say, it felt really good seeing everything starting to come together.&lt;/p&gt;

&lt;h3&gt;
  
  
  CI/CD
&lt;/h3&gt;

&lt;p&gt;Finally, I needed an easy way to continue work and update my site as I made changes (boy were there a lot). I chose to use GitHub Actions for this.&lt;/p&gt;

&lt;p&gt;The OIDC trust for GitHub had a lot fewer moving parts than I thought it would. The YAML made me a little bit nervous, as it was something else new I touched on in this project. This was another thing that just... made sense to me. I was pleasantly surprised at how easy this pipeline was to set up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;




&lt;p&gt;After finally deciding to push myself to start working with cloud tools, I have realized &lt;strong&gt;this&lt;/strong&gt; is what I want to do with my career. It was such a fresh learning experience with so many interesting tools. The entire time I was working on this project it just felt &lt;em&gt;right&lt;/em&gt;. I'm already thinking about what my next project is because I just want to have more fun with my new skill set!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>resume</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
