<?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: Daniel Walker</title>
    <description>The latest articles on DEV Community by Daniel Walker (@danielwalker814).</description>
    <link>https://dev.to/danielwalker814</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%2F3314306%2F7d232cea-2870-4646-9a5d-324108f0eab7.PNG</url>
      <title>DEV Community: Daniel Walker</title>
      <link>https://dev.to/danielwalker814</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danielwalker814"/>
    <language>en</language>
    <item>
      <title>Building and Hosting My HTML/CSS Resume with AWS Services, Terraform, Utilising the Well-Architected Framework</title>
      <dc:creator>Daniel Walker</dc:creator>
      <pubDate>Fri, 18 Jul 2025 14:24:23 +0000</pubDate>
      <link>https://dev.to/danielwalker814/building-and-hosting-my-htmlcss-resume-with-aws-services-terraform-and-the-well-architected-1kj9</link>
      <guid>https://dev.to/danielwalker814/building-and-hosting-my-htmlcss-resume-with-aws-services-terraform-and-the-well-architected-1kj9</guid>
      <description>&lt;p&gt;This blog is Part 2 of my journey through the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/aws/" rel="noopener noreferrer"&gt;Cloud Resume Challenge&lt;/a&gt; by Forrest Brazeal. You can read Part 1 here: &lt;a href="https://dev.to/danielwalker814/my-cloud-resume-challange-3pm7"&gt;My Cloud Resume Challenge – AWS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This blog moves into the practical implementation of the challenge by completing Steps 2–6. This  documents my progress through the next core stages of the challenge, focusing on the resume itself, AWS services, and Terraform. All whilst applying best practices from the &lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html" rel="noopener noreferrer"&gt;AWS Well-Architected Framework&lt;/a&gt;. I have also added link to useful resources that helped me throughout.&lt;/p&gt;

&lt;p&gt;FYI - I used lucidchart to diagram the current topology and I will evolve this as the challenge progresses.&lt;/p&gt;

&lt;p&gt;This blog post documents my experience completing steps 2–6 (step 1 is to gain AWS CCP certification but I already had this) of the Cloud Resume Challenge:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Created and styled a resume using HTML and CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Hosted the resume on an Amazon S3 bucket configured for static website hosting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Configured HTTPS for the site using AWS CloudFront and Amazon Certificate Manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Registered a domain and configured DNS with Route 53.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Connected everything with DNS and HTTPS.&lt;/p&gt;

&lt;p&gt;I also took on the extra challanges, which were to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Terraform to define all infrastructure as code.&lt;/li&gt;
&lt;li&gt;Enable DNSSEC for the Route 53 hosted zone for extra DNS integrity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following sections  explain how I tackled  each of these milestones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;HTML/CSS Resume&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I began with a simple goal as outlined in the challenge: build a professional-looking HTML/CSS resume. This turned out to be more challenging than expected.&lt;/p&gt;

&lt;p&gt;I initially struggled with making it look polished and professional. To help, I referred to online examples to understand the structure and styling conventions. I considered separating the HTML and CSS into separate files for clarity, but kept it combined for simplicity during early iterations. Once I had experimented enough, the syntax and structure started to make sense to an extent.&lt;/p&gt;

&lt;p&gt;With some help from GitHub Copilot, I also added Bootstrap to streamline styling, which worked worked really well!&lt;/p&gt;

&lt;p&gt;I used Visual Studio Code as my code editor and integrated it with GitHub to maintain version control and other useful extensions (e.g. Terraform). Since the challenge also requires you to automate deployment via CI/CD later down the line, this setup helped ensure a better workflow from the start.&lt;/p&gt;

&lt;p&gt;Useful Resources:&lt;br&gt;
&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;W3School&lt;/a&gt;&lt;br&gt;
&lt;a href="https://getbootstrap.com/docs/4.1/getting-started/introduction/" rel="noopener noreferrer"&gt;Bootstrap Documentation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/features/copilot/tutorials" rel="noopener noreferrer"&gt;Github Co-Pilot&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/playlist?list=PL-oQHiI7AbySDECucgZZ0m-JqERXO-DTR" rel="noopener noreferrer"&gt;FreeCodeCamp - Responsive Web Design Course&lt;/a&gt;&lt;br&gt;
&lt;a href="https://code.visualstudio.com/docs/getstarted/getting-started" rel="noopener noreferrer"&gt;VS Code Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;IAM: Secure by Default&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Applying the Security pillar of the AWS Well-Architected Framework, I placed a strong emphasis on building secure IAM structures.&lt;/p&gt;

&lt;p&gt;Instead of working from the AWS root account, I created a dedicated IAM user with administrative access. Then I took it further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initially removed the root account access keys as these were never going to be used.&lt;/li&gt;
&lt;li&gt;Created an AWS Organisation with both test and prod OUs&lt;/li&gt;
&lt;li&gt;Used AWS IAM Identity Center  to manage access across accounts&lt;/li&gt;
&lt;li&gt;Avoided storing long-term credentials by using SSO profiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To simplify switching between accounts, I then used a third-party CLI tool, &lt;code&gt;aws-sso-util&lt;/code&gt;, which made working with multiple environments a lot more cleaner.&lt;/p&gt;

&lt;p&gt;Useful Resources:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/root-user-best-practices.html" rel="noopener noreferrer"&gt;AWS IAM Best Practices&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started.html" rel="noopener noreferrer"&gt;AWS Organizations Documentation&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html" rel="noopener noreferrer"&gt;AWS IAM Identity Center (SSO)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/benkehoe/aws-sso-util" rel="noopener noreferrer"&gt;aws-sso-util GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;CDN: Deploying via CloudFront&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initially, my CloudFront distribution wouldn't deliver content as expected.&lt;/p&gt;

&lt;p&gt;I discovered that using the S3 bucket endpoint was incorrect—I had to use the S3 website endpoint instead. That fixed the routing issue, but it was only serving over HTTP.&lt;/p&gt;

&lt;p&gt;To enable HTTPS, I had to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove public access from the S3 bucket&lt;/li&gt;
&lt;li&gt;Add a policy to allow CloudFront access to the S3 origin&lt;/li&gt;
&lt;li&gt;Update the CloudFront origin and behaviour settings:

&lt;ul&gt;
&lt;li&gt;Point to the correct index.html file&lt;/li&gt;
&lt;li&gt;Set viewer protocol policy to HTTPS only&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This aligned with the Reliability and Performance Efficiency pillars of the Well-Architected Framework.&lt;/p&gt;

&lt;p&gt;Useful Resources:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html" rel="noopener noreferrer"&gt;Amazon CloudFront Developer Guide&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@oguzhanhiziroglu/seamlessly-setting-up-your-static-website-with-aws-cloudfront-s3-acm-and-route-53-b72ee0b1ce4c" rel="noopener noreferrer"&gt;Static Website Hosting with CloudFront &amp;amp; S3 – AWS Blog&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=U9n6N56neuo" rel="noopener noreferrer"&gt;YouTube: CloudFront + S3 Website Tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;DNS: Domain Setup&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I initially bought my domain via GoDaddy (djwcloud.co.uk), not realising Route 53 supports domain purchases. As a result, I had to transfer the domain manually. To do this I therefore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlocked the domain in GoDaddy&lt;/li&gt;
&lt;li&gt;Retrieved the Authorisation Code&lt;/li&gt;
&lt;li&gt;Initiated a domain transfer via Route 53&lt;/li&gt;
&lt;li&gt;Updated name servers to match AWS configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It took some time to propagate ans had to refresh my cache, but eventually my domain was fully managed under AWS.&lt;/p&gt;

&lt;p&gt;Useful Resources:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-to-route-53.html" rel="noopener noreferrer"&gt;Transferring a Domain to Route 53&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.godaddy.com/en-uk/help/transfer-my-domain-away-from-godaddy-3560" rel="noopener noreferrer"&gt;GoDaddy Domain Transfer Guide&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-configure-dnssec.html" rel="noopener noreferrer"&gt;AWS Route 53 DNSSEC Setup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Terraform: IaC Modification&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;I then retrospectiverly used Terraform to build all the infrastructure.&lt;/p&gt;

&lt;p&gt;Initially, I couldn’t figure out why terraform plan was failing. I was determined not to fall back on using static credentials (access key + secret key). Instead, I configured Terraform to use my AWS SSO profile I had created earlier by referencing the profile in the provider block.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;provider "aws" {
  profile = "my-profile"
  region  = "eu-west-2"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensured my credentials weren’t exposed if I pushed code to GitHub. Again, GitHub Copilot proved helpful when I got stuck. There is probably a better way to do this but for the sake of time I made it as secure but as simple as needed.&lt;/p&gt;

&lt;p&gt;Resources:&lt;br&gt;
&lt;a href="https://registry.terraform.io/providers/hashicorp/aws/2.43.0/docs" rel="noopener noreferrer"&gt;Terraform AWS Provider Docs&lt;/a&gt; - (Super helpful!)&lt;br&gt;
&lt;a href="https://developer.hashicorp.com/terraform/tutorials/aws-get-started?utm_source=WEBSITE&amp;amp;utm_medium=WEB_IO&amp;amp;utm_offer=ARTICLE_PAGE&amp;amp;utm_content=DOCS" rel="noopener noreferrer"&gt;Official Terraform Labs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/playlist?list=PL184oVW5ERMDGN0a7yowSQiH4qjsTeE5g" rel="noopener noreferrer"&gt;YouTube: Terraform Projects for Beginners&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Lessons Learned&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand your tools: SSO, IAM, and Terraform work well—once configured correctly. I admittedly had to ChatGPT, Co-Pilot, YouTube,  vendor doc how things worked etc.&lt;/li&gt;
&lt;li&gt;Don’t underestimate DNS or SSL setup; there's more nuance than it appears, but it does help in gaining a better appreciation for how things fit together.&lt;/li&gt;
&lt;li&gt;Automating with GitHub and VSCode definitly improves workflow and helped enforce good practice.&lt;/li&gt;
&lt;li&gt;The AWS Well-Architected Framework helped me make better decisions, particularly around IAM.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This section started in my head as a simple resume and ended up teaching me a whole deployment model. It was frustrating at times, but it's now live, secure, and managed through code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Looking Ahead: Part 3 – CI/CD and Lambda Visitor Counter&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the next part of the challenge, I’ll focus on automating the deployment of my resume using CI/CD pipelines through GitHub Actions. I’ll also integrate a serverless backend using AWS Lambda, API Gateway, and DynamoDB to implement a visitor counter. This part will most likely be more challenging that the previous!&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>aws</category>
      <category>terraform</category>
      <category>cloudresumechallenge</category>
    </item>
    <item>
      <title>My Cloud Resume Challenge - AWS</title>
      <dc:creator>Daniel Walker</dc:creator>
      <pubDate>Thu, 03 Jul 2025 20:14:56 +0000</pubDate>
      <link>https://dev.to/danielwalker814/my-cloud-resume-challange-3pm7</link>
      <guid>https://dev.to/danielwalker814/my-cloud-resume-challange-3pm7</guid>
      <description>&lt;p&gt;After working in cybersecurity for over 10 years, mostly in governance, risk, and compliance (GRC) consultancy roles, I’ve built a strong knowledge in policy, control frameworks, and risk management. During that time, I’ve picked up cloud (and other technology) knowledge through various projects and engagements—reviewing architectures, conducting risk assessments, and advising teams etc.&lt;/p&gt;

&lt;p&gt;But admittedly, my hands-on technical experience with cloud platforms (especially AWS) could, and should, be better.&lt;/p&gt;

&lt;p&gt;What’s become increasingly clear is that the GRC landscape is shifting. In my opinion, the days when you could succeed in security risk roles without a solid grasp of the underlying technology are becoming less, as so many key business functions, including data, are hosted in the cloud. This, to me, also transcends into the job market. There is always talk of a mass amount of vacant cybersecurity roles. This is absolutely the case, however, this a &lt;strong&gt;skills&lt;/strong&gt; gap.&lt;/p&gt;

&lt;p&gt;Recent industry reports highlight that while cybersecurity roles remain in high demand, employers are struggling to find candidates with the right mix of cloud, DevSecOps, and automation skills. For example, the &lt;a href="https://www.isc2.org/Insights/2024/10/ISC2-2024-Cybersecurity-Workforce-Study" rel="noopener noreferrer"&gt;2024 (ISC)² Cybersecurity Workforce Study&lt;/a&gt; estimates a worldwide shortfall of over 4 million cybersecurity professionals, and roles requiring cloud security expertise or experience with infrastructure-as-code tools like Terraform or CI/CD pipelines remain among the hardest to fill.&lt;/p&gt;

&lt;p&gt;With the rise of cloud-native environments, infrastructure as code, and now AI-driven services, understanding how these systems actually work is essential if you want to move up the ladder and generally be more effective in a GRC-related role.&lt;/p&gt;

&lt;p&gt;That’s why I’ve taken on the &lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/aws/" rel="noopener noreferrer"&gt;AWS Cloud Resume Challenge&lt;/a&gt;, so I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strengthen my technical foundation by building something real&lt;/li&gt;
&lt;li&gt;Get better exposure to services like S3, Lambda, API Gateway, and DynamoDB&lt;/li&gt;
&lt;li&gt;Practice using tools like Terraform and GitHub Actions&lt;/li&gt;
&lt;li&gt;Reinforce my understanding of cloud security from a build-first perspective&lt;/li&gt;
&lt;li&gt;To document &lt;em&gt;how&lt;/em&gt; I did something to either inspire someone else to follow suit or tell me how I could have done it better!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will aim to blog each section of the challenge, which can be found in the link I provided earlier :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
      <category>security</category>
    </item>
  </channel>
</rss>
