<?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>Forem: Ijay</title>
    <description>The latest articles on Forem by Ijay (@ijay).</description>
    <link>https://forem.com/ijay</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%2F691309%2F3cfc37d1-ceb9-4869-ab1a-a29581db29ce.png</url>
      <title>Forem: Ijay</title>
      <link>https://forem.com/ijay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ijay"/>
    <language>en</language>
    <item>
      <title>Deploying with Terraform</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Mar 2026 19:27:00 +0000</pubDate>
      <link>https://forem.com/ijay/deploying-with-terraform-g27</link>
      <guid>https://forem.com/ijay/deploying-with-terraform-g27</guid>
      <description>&lt;h2&gt;
  
  
  The workflow design
&lt;/h2&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%2F5pulu1k3f3vcwoygoxpy.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.amazonaws.com%2Fuploads%2Farticles%2F5pulu1k3f3vcwoygoxpy.png" alt="The architure" width="630" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my&lt;a href="https://dev.to/ijay/what-is-infrastructure-as-code-10mp"&gt; previous posts&lt;/a&gt;, I focused on understanding Infrastructure as Code and setting up my environment. Now it is time to actually build something.&lt;/p&gt;

&lt;p&gt;In today's challenge, we are to build our website using Terraform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I used Terraform to create a simple EC2 instance on AWS and made it accessible from the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The setup included:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A provider block to connect to AWS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A resource block to create the EC2 instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A security group to allow HTTP traffic on port 80&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A user data script to serve a simple HTML page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fbdyv444a0rrgkm69yhph.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.amazonaws.com%2Fuploads%2Farticles%2Fbdyv444a0rrgkm69yhph.png" alt="folder structure" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To deploy the server, I ran:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform init
terraform plan
terraform apply &lt;span class="nt"&gt;-auto-approve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Confirming the Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After running terraform apply, Terraform returned a public IP in the AWS Console.&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%2F1xxqu3xrog2d1tij62bl.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.amazonaws.com%2Fuploads%2Farticles%2F1xxqu3xrog2d1tij62bl.png" alt="public IP" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I copied the public IP generated and pasted it into the browser:&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%2F29or0o7lenq4ov8m65md.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.amazonaws.com%2Fuploads%2Farticles%2F29or0o7lenq4ov8m65md.png" alt="the website" width="634" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That confirmed that the server was running and accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The challenges I faced
&lt;/h2&gt;

&lt;p&gt;One issue I encountered was using an invalid AMI. At first, my instance failed to launch because the AMI was not valid for my region.&lt;/p&gt;

&lt;p&gt;I fixed this by using a data block to dynamically fetch the correct Amazon Linux AMI.&lt;/p&gt;

&lt;p&gt;I also had an issue where my server was not loading in the browser. This was because the web server was not properly set up. I fixed it by installing and starting Apache using the user data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Doing this challenge helped me understand how Terraform actually works in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Instead of clicking around the AWS console, I was able to define everything in code and create infrastructure in a repeatable way.&lt;/p&gt;

&lt;p&gt;This is just the beginning, and I’m looking forward to building more as I continue this challenge.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>IAM Permissions Are Confusing</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Mar 2026 09:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/iam-permissions-are-confusing-17nj</link>
      <guid>https://forem.com/ijay/iam-permissions-are-confusing-17nj</guid>
      <description>&lt;p&gt;If you’ve ever worked with AWS IAM, you've probably felt this way.&lt;/p&gt;

&lt;p&gt;You create a policy. Attach it to a user or role. And still get an "Access Denied" error.&lt;/p&gt;

&lt;p&gt;That happened to me more than once.&lt;/p&gt;

&lt;p&gt;While learning AWS, I even locked myself out of my account after giving the wrong permissions to a service. Not on purpose, I simply didn’t fully understand what the policy was actually allowing.&lt;/p&gt;

&lt;p&gt;That’s when I realised guessing my way through IAM wasn’t helping.&lt;/p&gt;

&lt;p&gt;While trying to make sense of it, I came across the IAM Policy Simulator, and it changed how I approach permissions.&lt;/p&gt;

&lt;p&gt;What I like about the simulator is how simple the idea is.&lt;/p&gt;

&lt;p&gt;It lets you test what a user or role can actually do before you change anything.&lt;/p&gt;

&lt;p&gt;Instead of wondering, you can ask one clear question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can this user or role perform this action on this resource? (For example: Can this EC2 role read from this S3 bucket?)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The simulator checks all attached policies and shows you the final decision. Seeing it laid out like that helped me understand exactly where things were going wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I usually access it
&lt;/h2&gt;

&lt;p&gt;When I need it, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sign in to AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the IAM service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the right-hand side, under Tools, click Policy Simulator. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It redirects to the Policy Simulator page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or open the IAM Policy Simulator directly here: &lt;a href="https://policysim.aws.amazon.com/" rel="noopener noreferrer"&gt;IAM policy simulator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, I test the actions I’m unsure about and see what’s allowed or denied.&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%2Fl3bwaidtqw4h48pkx74k.gif" 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%2Fl3bwaidtqw4h48pkx74k.gif" alt="Testing the IAM Policy" width="720" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters (at least for me)
&lt;/h2&gt;

&lt;p&gt;Most of the permission issues I’ve run into weren’t due to anything being missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They were small details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A wrong resource ARN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A condition I didn’t think about&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Or an explicit deny I forgot existed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simulator doesn’t fix things for you or replace reading policies carefully, but it clearly shows which policies are affecting or attached to the user or role, and that makes IAM much less frustrating.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m taking away from this
&lt;/h2&gt;

&lt;p&gt;The IAM Policy Simulator has been a safer way for me to learn permissions. It lets me experiment, understand mistakes, and avoid granting extra permissions just to “make it work.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’m curious:&lt;/strong&gt; When IAM permissions don’t work as expected, how do you usually debug them? Trial and error or stopping to inspect the policy closely?&lt;/p&gt;

&lt;p&gt;If IAM or any AWS service has ever confused you, follow the &lt;br&gt;
&lt;a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7336744982432600064" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; or the &lt;a href="https://www.youtube.com/@cloudinreallife" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channel. I share what I learn as I continue making sense of AWS.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>security</category>
    </item>
    <item>
      <title>Step-by-Step Guide to Setting Up Terraform, AWS CLI, and Your AWS Environment</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 23:20:50 +0000</pubDate>
      <link>https://forem.com/ijay/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50kk</link>
      <guid>https://forem.com/ijay/step-by-step-guide-to-setting-up-terraform-aws-cli-and-your-aws-environment-50kk</guid>
      <description>&lt;p&gt;In my &lt;a href="https://dev.to/ijay/what-is-infrastructure-as-code-10mp"&gt;previous post&lt;/a&gt;, I talked about what Infrastructure as Code is, why it matters, and why I decided to start learning Terraform.&lt;/p&gt;

&lt;p&gt;Now it is time to move from understanding to actually setting things up.&lt;/p&gt;

&lt;p&gt;Before building anything, having the right environment is important. If your setup is not correct, it can slow you down later. So in this post, I will walk through how I set up my Terraform environment and connected it to AWS.&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%2F47txnssl1p8mdrrhzsw0.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%2F47txnssl1p8mdrrhzsw0.jpeg" alt="Lets get started" width="328" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Setting Up AWS Account
&lt;/h2&gt;

&lt;p&gt;I already had an AWS account, so I didn’t need to create a new one. However, I made sure not to use my root account.&lt;/p&gt;

&lt;p&gt;Instead, I created an IAM user with programmatic access using the AWS console and used it for my setup instead of my root account. This is more secure and is the recommended way to work with AWS.&lt;/p&gt;

&lt;p&gt;Step 2: Installing AWS CLI&lt;/p&gt;

&lt;p&gt;Next, I installed AWS CLI on my system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;awscli &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, I checked that it was working by verifying the version. This confirmed that AWS CLI was installed correctly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Checking the credentials&lt;br&gt;
After installing AWS CLI, I configured it using my IAM user credentials.&lt;/p&gt;

&lt;p&gt;I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secret key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Default region&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I did this by running &lt;code&gt;aws configure&lt;/code&gt; and following the prompts.&lt;/p&gt;

&lt;p&gt;To confirm everything worked, I checked my AWS identity. It returned my account details, which showed that my setup was correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To check&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform version
aws &lt;span class="nt"&gt;--version&lt;/span&gt;
aws sts get-caller-identity
aws configure list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Terraform v1.14.7
on linux_amd64
+ provider registry.terraform.io/hashicorp/aws v6.36.0
aws-cli/2.22.12 Python/3.12.6 Linux/6.6.87.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.22
{
    "UserId": "AXXXXXXXXXXXXXXXXXXXV",
    "Account": "2xxxxxxxxxxxx4",
    "Arn": "arn:aws:iam::2xxxxxxxxxxx4:user/onyi"
}
      Name                    Value             Type    Location
      ----                    -----             ----    --------
&lt;/span&gt;&lt;span class="gp"&gt;   profile                &amp;lt;not set&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;None    None
&lt;span class="go"&gt;access_key     ****************5SNW shared-credentials-file
secret_key     ****************KJtJ shared-credentials-file
    region                eu-west-1      config-file    ~/.aws/config
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Installing Terraform
&lt;/h2&gt;

&lt;p&gt;I installed Terraform on my system and confirmed it was working by checking the version.&lt;/p&gt;

&lt;p&gt;During this step, I noticed that my Terraform version was outdated. I am currently fixing this by downloading the latest version from the official&lt;br&gt;
&lt;a href="https://developer.hashicorp.com/terraform/install" rel="noopener noreferrer"&gt;Terraform website&lt;/a&gt;.&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%2F6ya1w9sgjdgxdxi2gi25.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.amazonaws.com%2Fuploads%2Farticles%2F6ya1w9sgjdgxdxi2gi25.png" alt="error" width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5. Connecting Terraform to AWS
&lt;/h2&gt;

&lt;p&gt;Terraform uses the AWS credentials configured through AWS CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6. Verifying the Setup
&lt;/h2&gt;

&lt;p&gt;To make sure everything was working properly, I ran checks to confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Terraform is installed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS CLI is installed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS authentication is working&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS configuration is correct&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything worked as expected, which means my environment is ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges I Faced
&lt;/h2&gt;

&lt;p&gt;The main issue I encountered was that my Terraform version was outdated.&lt;/p&gt;

&lt;p&gt;I discovered this while verifying my setup and started fixing it by installing the latest version.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;From this setup, I learned how Terraform connects to AWS through AWS CLI.&lt;/p&gt;

&lt;p&gt;I also understood why using an IAM user is important instead of using root credentials. It improves security and gives better control over access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;From everything, using the AWS CLI is more secure than clicking the AWS console.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>What is Infrastructure as Code?</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 10:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/what-is-infrastructure-as-code-10mp</link>
      <guid>https://forem.com/ijay/what-is-infrastructure-as-code-10mp</guid>
      <description>&lt;p&gt;Learning cloud and DevOps is good, but in the process of learning, I’ve come to understand that Infrastructure as Code is very important.&lt;/p&gt;

&lt;p&gt;In this article, I will cover&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What Infrastructure as Code is and the problem it solves&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The difference between declarative and imperative approaches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why Terraform is worth learning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;My reason for taking on this 30-day challenge&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fc09rkgznxjlxdsembnf5.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.amazonaws.com%2Fuploads%2Farticles%2Fc09rkgznxjlxdsembnf5.png" alt="Let's get started" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Infrastructure as Code (IaC)
&lt;/h2&gt;

&lt;p&gt;From my reading, Infrastructure as Code means using code to manage and set up infrastructure instead of doing everything manually. It is mostly used by DevOps and cloud engineers to provision resources in the cloud.&lt;/p&gt;

&lt;p&gt;What problem does it solve?&lt;/p&gt;

&lt;p&gt;IaC solves a lot of issues, especially what people call click ops. Instead of going to the cloud console and clicking around, which can lead to mistakes, you define everything in code. This makes it easier to repeat the same setup and avoid errors.&lt;/p&gt;

&lt;p&gt;What are the ways Terraform is defined?&lt;/p&gt;

&lt;p&gt;There are two ways Terraform is defined in editors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Declarative&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Imperative&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.Declarative: means you describe what you want, and the tool figures out how to achieve it.&lt;/p&gt;

&lt;p&gt;For example, if you want to create an S3 bucket in AWS using Terraform, you just write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_s3_bucket"&lt;/span&gt; &lt;span class="s2"&gt;"example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;bucket&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"my-example-bucket"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the example above, you are only saying, "Create a bucket with this name.” Terraform handles how it will be created.&lt;/p&gt;

&lt;p&gt;2.Imperative: means you define every single step to get the result.&lt;/p&gt;

&lt;p&gt;For example, using AWS CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 mb s3://my-example-bucket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Which method is commonly used by developers?
&lt;/h2&gt;

&lt;p&gt;In declaring a HashiCorp Configuration Language (HCL), most developers use declarative rather than imperative because you only define what you want, and the tool handles the process. It reduces errors and makes infrastructure easier to manage.&lt;/p&gt;

&lt;p&gt;While imperative is useful for quick tasks, it is not for long-term and scalable systems. i.e., step by step&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use Terraform basically
&lt;/h2&gt;

&lt;p&gt;Terraform is used for provisioning infrastructure across different cloud providers. It is not limited to one cloud like CloudFormation, so it is more flexible and widely used.&lt;/p&gt;

&lt;h2&gt;
  
  
  My goal for the next 30 days
&lt;/h2&gt;

&lt;p&gt;My goal is to challenge myself to build using IaC and stop relying on clicking around in AWS. I want to improve my skills, become better as a DevOps and cloud engineer, and get more comfortable building real things.&lt;/p&gt;

&lt;p&gt;If this resonates with you, feel free to share it with others on a similar journey.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>challenge</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Building a 3-Tier Application on AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:58:00 +0000</pubDate>
      <link>https://forem.com/ijay/building-a-3-tier-application-on-aws-4936</link>
      <guid>https://forem.com/ijay/building-a-3-tier-application-on-aws-4936</guid>
      <description>&lt;p&gt;When I hear the word "3-tier architecture," it sounds like one of those big concepts people often mention in all these tech talks. Most times, I just add it to my list of things to read later.&lt;br&gt;
But something interesting happened when I started looking into it more closely.&lt;br&gt;
I realized that 3-tier architecture is actually something many of us already interact with, especially when using Backend as a Service platforms.&lt;br&gt;
Sometimes a concept becomes clearer when someone explains it in a simple way. After attending a session from Solavise Technologies Institute, the idea stopped feeling abstract.&lt;/p&gt;

&lt;p&gt;Instead of only reading about it, I decided to build something small to understand how it actually works.&lt;/p&gt;

&lt;p&gt;With their guidance, I built a Nigerian passport application system deployed using a 3-tier architecture on AWS.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture Diagram
&lt;/h2&gt;

&lt;p&gt;Below is a simple overview of how the system is structured.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                User
                 |
                 |  HTTP Request
                 v
        -----------------------
        Presentation Layer
        EC2 Instance
        Nginx Web Server
        (HTML, CSS, JS)
        -----------------------
                 |
                 |  POST Request
                 v
        -----------------------
        Logic Layer
        EC2 Instance
        Flask API
        (Application Logic)
        -----------------------
                 |
                 |  SQL Query
                 v
        -----------------------
        Data Layer
        Amazon RDS
        MariaDB Database
        -----------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A 3-tier architecture simply means an application separated into three different layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Presentation Layer
&lt;/h3&gt;

&lt;p&gt;This is the frontend of an application. It is what users see and interact with.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Logic Layer
&lt;/h3&gt;

&lt;p&gt;This is the backend. It processes requests and handles the application logic.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data Layer
&lt;/h3&gt;

&lt;p&gt;This is where the data is stored. It can be a database hosted by a cloud provider or any other database system.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea Behind the Project
&lt;/h2&gt;

&lt;p&gt;The goal was not to build a complex application but to understand how real systems work across layers.&lt;/p&gt;

&lt;p&gt;Imagine a simple website where someone fills out a passport application form.&lt;/p&gt;

&lt;p&gt;When a user submits the form, a few things need to happen.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The application receives the request.&lt;/li&gt;
&lt;li&gt;The system processes the data.&lt;/li&gt;
&lt;li&gt;The information is stored in a database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of putting everything on one server, the system splits these responsibilities across different layers.&lt;/p&gt;

&lt;p&gt;This separation is what defines a 3-tier architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking Down the Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Presentation Layer&lt;/strong&gt;: The first layer of the architecture is the presentation layer. It is the part users interact with.&lt;/p&gt;

&lt;p&gt;For this project, the frontend consists of a simple form, which I built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend runs on an EC2 instance configured with Nginx.&lt;/p&gt;

&lt;p&gt;Its responsibility is straightforward. It collects user input from the passport form and sends the data to the backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Logic Layer&lt;/strong&gt;: The second layer of the architecture is the logic layer. This layer processes the requests coming from the frontend.&lt;/p&gt;

&lt;p&gt;In this project, the logic layer runs on a separate EC2 instance running a Flask API.&lt;/p&gt;

&lt;p&gt;When the frontend sends a request, the Flask application receives the form data, processes it, and prepares it to be stored in the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Data Layer:&lt;/strong&gt; The final layer is the data layer. This layer is responsible for storing and managing the application data.&lt;/p&gt;

&lt;p&gt;For this project, I used Amazon RDS with MariaDB to store the passport application records.&lt;/p&gt;

&lt;p&gt;Whenever the backend receives a valid request, it inserts the data into the RDS database.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the System Works
&lt;/h2&gt;

&lt;p&gt;Once all three layers are in place, the interaction between them follows a simple flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A user opens the website and fills out the passport form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The frontend sends the form data to the Flask API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The backend processes the request and stores the information in Amazon RDS.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each layer performs a specific task, which keeps the system organized and easier to manage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was the Challenge?
&lt;/h2&gt;

&lt;p&gt;At one point during the project, everything seemed ready.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The servers were running.&lt;/li&gt;
&lt;li&gt;The code looked correct.&lt;/li&gt;
&lt;li&gt;The database was configured.
But the form refused to work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After troubleshooting for hours, I realised the issue had nothing to do with the application code.&lt;/p&gt;

&lt;p&gt;The problem was coming from the network configuration.&lt;/p&gt;

&lt;p&gt;The backend server was not reachable because the security group did not allow traffic on the required port.&lt;/p&gt;

&lt;p&gt;Once I corrected the security group configuration and fixed the API endpoint, communication between the 3 layers started working immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Project Helped Me Understand
&lt;/h2&gt;

&lt;p&gt;Before building this project, a 3-tier architecture felt like a theoretical concept:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now it feels much more practical.&lt;/li&gt;
&lt;li&gt;Makes the applications easier to maintain, scale, and troubleshoot.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Repository
&lt;/h2&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%2Fky0ovdbbfpy8ay4y6w7s.gif" 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%2Fky0ovdbbfpy8ay4y6w7s.gif" alt="passport application" width="760" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ijayhub/A-3tier-Nigeria-Passport-Architecture-" rel="noopener noreferrer"&gt;The full project code is available here:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The frontend focuses on user interaction.&lt;/li&gt;
&lt;li&gt;The backend handles the application logic.&lt;/li&gt;
&lt;li&gt;The database stores and manages the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found this documentation helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is cloud computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-can-aws-amplify-improve-your-development-process-2gj5"&gt;How Can AWS Amplify Improve Your Development Process?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/" rel="noopener noreferrer"&gt;How to Build an Application with AWS Lambda&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>community</category>
      <category>cloudcomputing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Running a Containerised App on AWS: My Experience</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/running-a-containerised-app-on-aws-my-experience-459a</link>
      <guid>https://forem.com/ijay/running-a-containerised-app-on-aws-my-experience-459a</guid>
      <description>&lt;p&gt;In this project, I wanted to practice building a DevOps workflow from development to deployment.&lt;br&gt;
The goal was simple. Take a small application, package it with Docker, deploy it to AWS, and automate the process using GitHub Actions.&lt;br&gt;
This project helped me understand how different tools in the DevOps ecosystem work together.&lt;/p&gt;
&lt;h2&gt;
  
  
  What this project does
&lt;/h2&gt;

&lt;p&gt;This project shows how an application can move from code to deployment using automation.&lt;/p&gt;
&lt;h3&gt;
  
  
  The process looks like this:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code is pushed to GitHub&lt;/li&gt;
&lt;li&gt;GitHub Actions builds the Docker image&lt;/li&gt;
&lt;li&gt;The image is pushed to Amazon ECR&lt;/li&gt;
&lt;li&gt;Amazon ECS Fargate pulls the image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This removes the need to manually deploy applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Here is a simple view of the setup:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer (Build the code)
   │
   │ 
   ▼
Build Docker Image
   │ provision with Terraform
   ▼
Amazon ECR
   │
   ▼
Amazon ECS Fargate
   │ push code
   ▼
GitHub Repository
   │
   ▼
Users can access the application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tools used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Terraform&lt;/li&gt;
&lt;li&gt;AWS ECS Fargate&lt;/li&gt;
&lt;li&gt;Amazon ECR&lt;/li&gt;
&lt;li&gt;GitHub Actions&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool plays a different role in the deployment process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker packages the application so it runs consistently anywhere.&lt;/li&gt;
&lt;li&gt;Terraform creates and manages the infrastructure.&lt;/li&gt;
&lt;li&gt;ECR stores the container images.&lt;/li&gt;
&lt;li&gt;ECS Fargate runs the containers without managing servers.&lt;/li&gt;
&lt;li&gt;GitHub Actions automates the build and deployment process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key steps in the project
&lt;/h2&gt;

&lt;p&gt;The application was packaged into a Docker image using a Dockerfile. This allows the application to run consistently across environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating the infrastructure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Terraform was used to create the AWS infrastructure:&lt;/li&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;li&gt;Subnets&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;ECS Cluster&lt;/li&gt;
&lt;li&gt;ECS Service running on Fargate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Terraform makes the infrastructure reproducible and easy to manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying to ECS Fargate&lt;/strong&gt;&lt;br&gt;
The container image stored in Amazon ECR is pulled by ECS Fargate. Fargate runs the container without needing to manage EC2 servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When code is pushed to the main branch:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Docker image is built&lt;/li&gt;
&lt;li&gt;The image is pushed to Amazon ECR&lt;/li&gt;
&lt;li&gt;ECS updates the running service&lt;/li&gt;
&lt;li&gt;This means deployments happen automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;Working on this project helped me understand how different DevOps tools connect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge
&lt;/h2&gt;

&lt;p&gt;One challenge I encountered during this project was configuring the Application Load Balancer. After deploying the service on ECS Fargate, the application was accessible using the assigned public IP address. However, I wanted users to access the application via a stable DNS URL rather than an IP address.&lt;br&gt;
To achieve this, I set up an Application Load Balancer and connected it to a target group. The target group showed a healthy status, which indicated that the ECS service was running correctly. Despite this, the application was still not accessible through the load balancer DNS.&lt;br&gt;
After several attempts to troubleshoot the issue, I suspected it might be related to network configuration or security group settings. Since the project's focus was the deployment pipeline, I temporarily removed the load balancer configuration.&lt;br&gt;
For now, the application can be accessed using the public IP address assigned by ECS. I plan to revisit the load balancer configuration later to fully resolve the issue.&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%2Fxiphz97qwv2nvl176t3a.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.amazonaws.com%2Fuploads%2Farticles%2Fxiphz97qwv2nvl176t3a.png" alt="Assign IP from AWS ECS" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/ijayhub/Deploy-a-Containerized-Application-to-AWS-with-Docker-Terraform-ECS-Fargate-and-CI-CD" rel="noopener noreferrer"&gt;You can see the full project here&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This project helped me put my DevOps knowledge into practice and see the tools I have been learning work together in a real setup. It was a good opportunity to apply Docker, Terraform, AWS, and CI/CD in a practical environment and better understand how these tools support deployments.&lt;/p&gt;




&lt;p&gt;If you would like to build the same setup yourself, I wrote a &lt;a href="https://dev.to/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne"&gt;step-by-step guide&lt;/a&gt; explaining the exact process.&lt;/p&gt;




&lt;p&gt;If you found this article helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is cloud computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/getting-started/hands-on/create-continuous-delivery-pipeline/" rel="noopener noreferrer"&gt;Create Continuous Delivery Pipeline By AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-can-aws-amplify-improve-your-development-process-2gj5"&gt;How Can AWS Amplify Improve Your Development Process?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/" rel="noopener noreferrer"&gt;How to Build an Application with AWS Lambda&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>developers</category>
    </item>
    <item>
      <title>Step-by-Step Guide: Deploy a Containerized App to AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:27:30 +0000</pubDate>
      <link>https://forem.com/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne</link>
      <guid>https://forem.com/ijay/step-by-step-guide-deploy-a-containerized-app-to-aws-56ne</guid>
      <description>&lt;p&gt;This guide explains the steps I followed to containerize an application and deploy it to AWS using Docker, Terraform, ECS Fargate, and GitHub Actions.&lt;/p&gt;

&lt;p&gt;The goal is simple.&lt;br&gt;
Build the app, package it in Docker, store the image in ECR, run it on ECS Fargate, and automate the deployment with GitHub Actions.&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%2Fnafiy74gnvohaq8izju7.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.amazonaws.com%2Fuploads%2Farticles%2Fnafiy74gnvohaq8izju7.png" alt="Let's get started" width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Prepare the Application
&lt;/h2&gt;

&lt;p&gt;Create a simple Node.js application.&lt;/p&gt;

&lt;p&gt;Example project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/
server.js
package.json
Dockerfile
terraform/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the application locally to confirm it works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Containerize the Application
&lt;/h2&gt;

&lt;p&gt;Create a Dockerfile.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:20-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app/server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t job-tracker-app .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the container locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -p 3000:3000 job-tracker-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&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%2Fdoi8otobmuby6ox1dycc.png" alt="Application on local" width="800" height="313"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  3. Create an Amazon ECR Repository
&lt;/h2&gt;

&lt;p&gt;Open AWS Console.&lt;/p&gt;

&lt;p&gt;Go to:&lt;/p&gt;

&lt;p&gt;ECR → Create repository&lt;/p&gt;

&lt;p&gt;Give it a name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;job-tracker-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After creating the repository, push your Docker image.&lt;/p&gt;

&lt;p&gt;Login to ECR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws ecr get-login-password --region us-east-1 \
| docker login --username AWS --password-stdin ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker tag job-tracker-app:latest ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/job-tracker-app:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker push ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/job-tracker-app:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fj5urg0rhkq8j9qoh4ktd.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.amazonaws.com%2Fuploads%2Farticles%2Fj5urg0rhkq8j9qoh4ktd.png" alt="AWS ECR" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Provision Infrastructure with Terraform
&lt;/h2&gt;

&lt;p&gt;Create infrastructure using Terraform.&lt;/p&gt;

&lt;p&gt;Resources created include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;li&gt;Public subnets&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;ECS cluster&lt;/li&gt;
&lt;li&gt;ECS service&lt;/li&gt;
&lt;li&gt;Application Load Balancer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initialize Terraform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirm the ECS service is running.&lt;/p&gt;

&lt;p&gt;You should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1/1 tasks running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&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%2Flwwgpytmy1pnf7mep8ea.png" alt="ECS" width="800" height="183"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  5. Verify the Application
&lt;/h2&gt;

&lt;p&gt;Once the ECS task is running, the application can be accessed using the public IP assigned to the service.&lt;/p&gt;

&lt;p&gt;Open the IP address in the browser to confirm the application is working.&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%2Fhtn4ij9eu3al5ad7l0st.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.amazonaws.com%2Fuploads%2Farticles%2Fhtn4ij9eu3al5ad7l0st.png" alt="Application on AWS" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Push the Project to GitHub
&lt;/h2&gt;

&lt;p&gt;Initialize git:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
git add .
git commit -m "Initial commit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a repository on GitHub.&lt;/p&gt;

&lt;p&gt;Connect the repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin YOUR_REPO_URL
git branch -M main
git push -u origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Add GitHub Actions for CI/CD
&lt;/h2&gt;

&lt;p&gt;Create this folder in your repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.github/workflows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deploy.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build the Docker image&lt;/li&gt;
&lt;li&gt;push the image to ECR&lt;/li&gt;
&lt;li&gt;update the ECS service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Add AWS Credentials to GitHub
&lt;/h2&gt;

&lt;p&gt;In your GitHub repository, go to:&lt;/p&gt;

&lt;p&gt;Settings → Secrets → Actions&lt;/p&gt;

&lt;p&gt;Add these secrets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These allow GitHub Actions to deploy to AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Trigger Deployment
&lt;/h2&gt;

&lt;p&gt;Push a change to the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub Actions will start the pipeline.&lt;/p&gt;

&lt;p&gt;The pipeline will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build the Docker image&lt;/li&gt;
&lt;li&gt;push it to ECR&lt;/li&gt;
&lt;li&gt;update the ECS service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your application will be redeployed automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Result
&lt;/h2&gt;

&lt;p&gt;You now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A containerized application.&lt;/li&gt;
&lt;li&gt;Infrastructure created with Terraform.&lt;/li&gt;
&lt;li&gt;Containers running on ECS Fargate.&lt;/li&gt;
&lt;li&gt;Automated deployment using GitHub Actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup removes manual deployment and keeps the application updated whenever code changes.&lt;/p&gt;

&lt;p&gt;If you found this article helpful, share it with others who may find it interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Other Helpful Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.docker.com/101-tutorial/" rel="noopener noreferrer"&gt;Docker 101 Tutorial&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/how-to-create-a-cicd-using-aws-elastic-beanstalk-15nh"&gt;How to Create a CI/CD Pipeline Using AWS Elastic Beanstalk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>The $30 AWS Bill I Didn’t Expect (And What It Taught Me)</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 18 Feb 2026 08:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/the-30-aws-bill-i-didnt-expect-and-what-it-taught-me-536c</link>
      <guid>https://forem.com/ijay/the-30-aws-bill-i-didnt-expect-and-what-it-taught-me-536c</guid>
      <description>&lt;p&gt;One mistake many beginners make with AWS is assuming nothing will happen if they stop using it.&lt;/p&gt;

&lt;p&gt;In 2023, I opened an AWS account and deployed a small React app just to explore the console. After that, I left the account untouched for months.&lt;/p&gt;

&lt;p&gt;When I returned in 2024 to take cloud learning seriously, my free tier had already expired. I logged in and saw a $30 bill.&lt;/p&gt;

&lt;p&gt;The amount wasn’t huge, but the lesson learned was important.&lt;/p&gt;

&lt;p&gt;I didn’t intentionally leave anything running. I simply didn’t understand which AWS services continue to cost money when you don’t turn them off.&lt;/p&gt;

&lt;p&gt;After reaching out to AWS support and explaining my situation, it was resolved. That experience changed how I approach cloud learning.&lt;/p&gt;

&lt;p&gt;Cloud knowledge is not only about deploying services. It’s also about knowing what to stop, delete, and shut down.&lt;/p&gt;

&lt;p&gt;This lesson came from my own early mistakes while learning AWS, and it’s one that many beginners don’t realize until they see a bill.&lt;/p&gt;

&lt;p&gt;That’s why I started creating content to help beginners understand AWS billing, Free Tier limits, and simple cleanup habits that prevent surprise charges.&lt;/p&gt;

&lt;p&gt;If you prefer videos, I’ve created guides on: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=a1IqB5fMidQ" rel="noopener noreferrer"&gt;AWS Free Tier Explained: Services That Are Not Free&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://youtu.be/R8OxAmNtKb0" rel="noopener noreferrer"&gt;AWS Services You Should Delete After Every Lab&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you prefer reading, this article breaks it down clearly: &lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One habit that saves money:&lt;/strong&gt; After every lab or test, spend five minutes checking EC2, RDS, Lambda, and S3 before logging out. That small habit can prevent surprise charges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; In AWS, learning what to turn off is just as important as learning what to deploy. Always review and clean up your resources after every experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discussion question:&lt;/strong&gt; Which AWS service do you always double-check before logging out, or which one worries you the most about unexpected costs?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop your answer in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If this helped clarify things, follow the newsletter and reshare so others can learn too.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsbill</category>
      <category>learning</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Understanding Cloud Service Models Using a Simple Analogy</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 21 Jan 2026 08:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/understanding-cloud-service-models-using-a-simple-analogy-1276</link>
      <guid>https://forem.com/ijay/understanding-cloud-service-models-using-a-simple-analogy-1276</guid>
      <description>&lt;p&gt;One thing I noticed while learning cloud computing is this Most people don’t struggle because cloud services are hard. They struggle because they don’t know which service model they’re using.&lt;/p&gt;

&lt;p&gt;Cloud services are a core foundation. Once you understand them, everything else becomes easier. Even AWS certification questions start to feel clearer.&lt;/p&gt;

&lt;p&gt;The truth is, you don’t always need full control in the cloud. Sometimes you want to manage everything yourself. Sometimes you just want to deploy and move on. Other times, you only need code to run for a few seconds.&lt;/p&gt;

&lt;p&gt;That’s why cloud service models exist.&lt;/p&gt;

&lt;p&gt;IaaS: You manage the server and OS. Examples in AWS: EC2, EBS, VPC&lt;/p&gt;

&lt;p&gt;PaaS: You focus on your app; AWS manages the platform. Examples in AWS: Elastic Beanstalk, RDS&lt;/p&gt;

&lt;p&gt;SaaS: You just use the software; there is no infrastructure to manage. Examples: Gmail, Google Drive, Slack. In AWS: Amazon WorkMail&lt;/p&gt;

&lt;p&gt;FaaS: Your code runs only when triggered, with no servers to manage. Example in AWS: AWS Lambda&lt;/p&gt;

&lt;p&gt;In this month’s edition of Tech Notes, I’m using a very simple real-life analogy to explain when each cloud service model makes sense. &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%2Fakb7y4qs9jyjny8exg75.jpg" 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%2Fakb7y4qs9jyjny8exg75.jpg" alt="cloud service analogy" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related article:&lt;/strong&gt; &lt;a href="https://www.freecodecamp.org/news/cloud-computing-guide-for-beginners/" rel="noopener noreferrer"&gt;What is Cloud Computing? A Guide for Beginners&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now I’m curious. Which cloud service model confused you the most when you started IaaS, PaaS, SaaS, or FaaS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop your answer in the comments.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For me, IaaS was tricky because missing one small configuration setting caused me unexpected issues.&lt;/p&gt;

&lt;p&gt;If this helped clarify things, follow the newsletter and reshare so others can learn too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7336744982432600064" rel="noopener noreferrer"&gt;Subscribe on LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>aws</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Learn Cloud Security Fundamentals in AWS</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Wed, 17 Dec 2025 09:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/learn-cloud-security-fundamentals-in-aws-3gem</link>
      <guid>https://forem.com/ijay/learn-cloud-security-fundamentals-in-aws-3gem</guid>
      <description>&lt;p&gt;Security is a vital part of every system and infrastructure. The word "security" comes from the Latin securitas, which is composed of se- (meaning “without”) and cura (meaning “care” or “worry”). Originally, it meant "without worry." Over time, it has come to signify being safe or protected.&lt;/p&gt;

&lt;p&gt;Security is a vital part of every system and infrastructure. The word "security" comes from the Latin securitas, which is composed of se- (meaning “without”) and cura (meaning “care” or “worry”). Originally, it meant "without worry." Over time, it has come to signify being safe or protected.&lt;/p&gt;

&lt;p&gt;Today, when we discuss security, we usually refer to protection from harm, danger, or threats, whether in our homes, online, while using online banking, or even across an entire country. Security is important in everything we do.&lt;/p&gt;

&lt;p&gt;Cloud providers, such as AWS, are no exception. Their infrastructure must be safeguarded to ensure users’ peace of mind. But on platforms like AWS, security is a shared responsibility. This means that both the provider and the user play a role in maintaining security.&lt;/p&gt;

&lt;p&gt;Amazon Web Services (AWS) is one of the most popular cloud service providers worldwide. With great power and flexibility comes the responsibility to secure your cloud infrastructure, data, and applications.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll explore the fundamental aspects of cloud security on AWS, making it easy to understand for those new to cloud computing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cloud Security?
&lt;/h2&gt;

&lt;p&gt;Cloud security is the set of rules, tools, and practices used to protect your data, apps, and services stored online (in the "cloud"). It helps prevent data loss, hacking, and misuse of information.&lt;/p&gt;

&lt;p&gt;Think of cloud security like locking the doors of your house. You wouldn’t leave your doors open for anyone to enter. And in the same way, your cloud account must be secured so that your data remains safe.&lt;/p&gt;

&lt;p&gt;If your cloud services aren't secure, hackers could steal your data or cause major damage. Whether you're a business or just someone using cloud apps, keeping your information safe is essential.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Cloud Security Important?
&lt;/h2&gt;

&lt;p&gt;Cloud security matters because it ensures that only the right people have access to your information. It protects your data from being lost, stolen, or misused. With good security in place, your applications can run safely without being exposed to attacks.&lt;/p&gt;

&lt;p&gt;It also helps you keep your personal or business data private. When your cloud environment is well-protected, the risk of data breaches and financial loss is greatly reduced.&lt;/p&gt;

&lt;p&gt;Now that you understand why cloud security is important, let’s look at how AWS helps you stay secure and what your own role is in keeping things safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Cloud Security Concepts
&lt;/h2&gt;

&lt;p&gt;In AWS, cloud security is the responsibility of both AWS and the customer. This model is called the Shared Responsibility Model.&lt;/p&gt;

&lt;p&gt;Before learning how AWS divides security duties, you need to understand that AWS protects its infrastructure, but you must protect your own account.&lt;/p&gt;

&lt;p&gt;When you create a new AWS account, you start with what is called the &lt;strong&gt;root user&lt;/strong&gt;. The root user has full control, but it’s risky to use it for daily work. You should only use it to create another user, called an IAM (Identity and Access Management) user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is what you should do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the root user once to create an IAM user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do not use the root account for everyday work. Use IAM users instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The principle of least privilege should be followed—that is, a user should be given only the access they need.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protect the root user by turning on a feature called MFA, or multi-factor authentication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is MFA?
&lt;/h2&gt;

&lt;p&gt;MFA adds another layer of security when you sign in. It combines something you know, like your password, with something you have, such as a phone or security device. Even if someone gets your password, they cannot log in without your MFA code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can enable MFA in several ways:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Using a virtual MFA app like Google Authenticator or Authy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using a physical security key such as a YubiKey&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using a hardware device from Gemalto&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For AWS GovCloud users, using an MFA device from SurePassID&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Always enable MFA for both your root and IAM users. It’s one of the simplest and most effective ways to protect your AWS account.&lt;/p&gt;

&lt;p&gt;So now that you know these fundamentals, we can talk about the shared responsibility model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the AWS Shared Responsibility Model
&lt;/h2&gt;

&lt;p&gt;The AWS Shared Responsibility Model divides responsibilities between AWS and the customer.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. AWS’s Responsibility (Security of the Cloud)
&lt;/h3&gt;

&lt;p&gt;AWS is responsible for protecting the infrastructure that runs the services offered in the AWS Cloud. This includes physical security, hardware, software, networking, and facilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Customer’s Responsibility (Security in the Cloud)
&lt;/h3&gt;

&lt;p&gt;The customer is responsible for securing the data, user accounts, applications, and configurations they store in the cloud.&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%2Fmj3usbsj508qy2ndexev.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.amazonaws.com%2Fuploads%2Farticles%2Fmj3usbsj508qy2ndexev.png" alt="AWS shared responsibility model" width="730" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image source: &lt;a href="https://aws.amazon.com/compliance/shared-responsibility-model/" rel="noopener noreferrer"&gt;AWS shared responsibility model&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, AWS is responsible for securing its data centres and servers. But customers also have a role to play by properly configuring their accounts and resources.&lt;/p&gt;

&lt;p&gt;Let’s take two popular AWS services, RDS (Relational Database Service) and S3 (Simple Storage Service), as examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  RDS (Relational Database Service)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AWS responsibilities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automates database patching&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Audits and maintains the underlying instance and storage disks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applies operating system patches automatically&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Customer responsibilities (you):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manage in-database users, roles, and permissions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose whether your database is public or private&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review and control inbound rules, ports, and IP addresses in the database’s security group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure database encryption settings&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  S3 (Simple Storage Service)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AWS responsibilities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ensures encryption options are available for your data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guarantees virtually unlimited storage capacity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prevents AWS employees and the public from accessing your data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeps each customer’s data separated from others&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Customer responsibilities (you):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Define your S3 bucket policies according to your security standards&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review bucket configuration settings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create and manage IAM users and roles with the right permissions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you understand who’s responsible for what.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Security has always been about peace of mind. Whether it’s your home, your phone, or your cloud account, you want to know your data is safe.&lt;/p&gt;

&lt;p&gt;AWS gives you a strong foundation by securing the cloud itself. But your part matters too, things like enabling MFA, using strong passwords, and managing who can access what. These simple habits go a long way in keeping your data protected.&lt;/p&gt;

&lt;p&gt;Cloud security isn’t a one-time setup it’s an ongoing practice. When both AWS and its users stay alert, the cloud becomes a place you can trust to store, build, and grow with confidence.&lt;/p&gt;

&lt;p&gt;Now that you understand how security works in AWS, you’re ready to dive deeper and start exploring the services that keep it all running smoothly.&lt;/p&gt;

&lt;p&gt;For a deeper and clearer explanation, you can read the full guide here:  &lt;a href="https://www.freecodecamp.org/news/learn-cloud-security-fundamentals-in-aws-a-guide-for-beginners/" rel="noopener noreferrer"&gt;Understanding Cloud Security in AWS&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-deploy-a-kubernetes-app-on-aws-eks/" rel="noopener noreferrer"&gt;How to Deploy a Kubernetes App on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/backend-as-a-service-beginners-guide/" rel="noopener noreferrer"&gt;What is Backend as a Service (BaaS)? A Beginner's Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ijay/the-hidden-challenges-of-building-with-aws-8mg"&gt;The Hidden Challenges of Building with AWS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you found this article helpful, feel free to share it. And if you prefer learning through videos, I also explain cloud topics in simple terms on my &lt;a href="https://www.youtube.com/@cloudinreallife" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://twitter.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/m/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>security</category>
      <category>infrastructureascode</category>
    </item>
    <item>
      <title>Final AWS Re/Start Experience</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 25 Nov 2025 09:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/final-aws-restart-experience-1k9j</link>
      <guid>https://forem.com/ijay/final-aws-restart-experience-1k9j</guid>
      <description>&lt;h2&gt;
  
  
  And it’s a wrap! 🎉💃
&lt;/h2&gt;

&lt;p&gt;I can’t believe it's done and dusted! My AWS re/Start journey has been amazing, challenging, and so rewarding. Big shoutout to my coursemates and facilitator; you made this learning journey seamless and fun. &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%2Fu7n90apwnl3yurofrcbs.gif" 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%2Fu7n90apwnl3yurofrcbs.gif" alt="happy dance" width="220" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For anyone who wants to catch up, here’s my journey from Weeks 1–10. Weeks 11–12 are just revisions and wrapping up everything we’ve learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-1-experience-182h"&gt;AWS re/Start – My Week 1 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-2-experience-13l9"&gt;AWS re/Start – My Week 2 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-3-experience-5d6l"&gt;AWS re/Start – My Week 3 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-4-experience-175l"&gt;AWS re/Start – My Week 4 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-5-experience-29ih"&gt;AWS re/Start – My Week 5 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-6-experience-heo"&gt;AWS re/Start – My Week 6 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-7-experience-3a6m"&gt;AWS re/Start – My Week 7 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-8-experience-1g76"&gt;AWS re/Start – My Week 8 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-9-experience-4pp6"&gt;AWS re/Start – My Week 9 Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/ijay/aws-restart-my-week-10-experience-12jb"&gt;AWS re/Start – My Week 10 Experience&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Here are my badges from AWS re/Start 🏅
&lt;/h2&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%2Feed8tflsy9q2n828vhdg.jpg" 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%2Feed8tflsy9q2n828vhdg.jpg" alt="Badge earned" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS 🥂 you made cloud learning feel approachable, fun, and definitely not overwhelming.&lt;/p&gt;

&lt;p&gt;Shoutout to &lt;a href="https://cil.academy/" rel="noopener noreferrer"&gt;CIL Academy&lt;/a&gt; you're the best&lt;/p&gt;

&lt;p&gt;Oh! Before I forget, I also started a new YouTube channel where I share insights on cloud concepts. Check out my channel video: &lt;a href="https://www.youtube.com/@cloudinreallife" rel="noopener noreferrer"&gt;cloud-in-real-life&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This isn’t an article or a blog post, just a quick thank you and update for you all.&lt;/p&gt;

&lt;p&gt;Stay updated with my projects by following me on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, and &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;More to come! 🥂&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>womenintech</category>
      <category>devops</category>
    </item>
    <item>
      <title>AWS re/Start – My Week 10 Experience</title>
      <dc:creator>Ijay</dc:creator>
      <pubDate>Tue, 21 Oct 2025 09:00:00 +0000</pubDate>
      <link>https://forem.com/ijay/aws-restart-my-week-10-experience-12jb</link>
      <guid>https://forem.com/ijay/aws-restart-my-week-10-experience-12jb</guid>
      <description>&lt;h2&gt;
  
  
  Week 10 – Auto Scaling, Serverless, and Databases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Week 10
&lt;/h3&gt;

&lt;p&gt;Like seriously—Week 10 already! 💃 I’m counting down because this journey hasn’t been easy, but I’m so grateful for my coursemates and the facilitator (Akeem Oyebanji). They make learning smoother and fun. Before you know it, it’ll be break time and then closing for the day. So cool!&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 45
&lt;/h3&gt;

&lt;p&gt;Today at Restart, we dove into Auto Scaling—trying to understand how it works and how to troubleshoot it. We got a surprise visit from the CTO of CIL Academy, &lt;strong&gt;Blessing U&lt;/strong&gt;. Even though he could only stay for about 30 minutes, it was wonderful having him with us.&lt;br&gt;
After that, we continued troubleshooting our servers to get a better grasp of auto scaling in real time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 46
&lt;/h3&gt;

&lt;p&gt;Lately, we’ve been doing a lot of debugging. It’s not just about theory anymore. Debugging helps us truly understand the concepts. Each issue we fix adds another layer of learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 47
&lt;/h3&gt;

&lt;p&gt;Today at Restart, we started learning about serverless architecture. We explored how to use AWS Lambda to subscribe to an SNS topic. It was exciting to see how serverless makes automation easier. &lt;/p&gt;

&lt;h3&gt;
  
  
  Day 48
&lt;/h3&gt;

&lt;p&gt;For today, our focus was on AWS Step Functions and how they simplify workflows by connecting multiple services together. It’s amazing how AWS tools make complex processes so seamless.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 49
&lt;/h3&gt;

&lt;p&gt;Today at Restart, we talked about databases. In my &lt;a href="https://dev.to/ijay/aws-restart-my-week-7-experience-3a6m"&gt;Week 7&lt;/a&gt; article, I wrote about this topic, but this time we went deeper—learning about services like Amazon Aurora and Redshift. We also discussed database migration using AWS DMS (Database Migration Service) and how to choose the right service for different needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Week 10 Takeaway
&lt;/h2&gt;

&lt;p&gt;This week felt like the bridge between what we’ve learned and how it all connects. From auto scaling to serverless and databases, everything is starting to click. Debugging has become part of my daily routine, and honestly, that’s how understanding truly grows. &lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://selfany.com/8RcgFW" rel="noopener noreferrer"&gt;How to Deploy and Scale Kubernetes Apps on AWS EKS&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/best-aws-services-for-frontend-deployment/" rel="noopener noreferrer"&gt;The Best AWS Services to Deploy Front-End Applications in 2025&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/authenticate-react-app-using-firebase/" rel="noopener noreferrer"&gt;How to Authenticate Your React App Using Firebase&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Come say hi on &lt;a href="https://x.com/ijaydimples" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/ijeoma-igboagu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, or check out my work on &lt;a href="https://github.com/ijayhub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>restart</category>
      <category>cloudcomputing</category>
    </item>
  </channel>
</rss>
