<?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: Ikoh Sylva</title>
    <description>The latest articles on DEV Community by Ikoh Sylva (@ikoh_sylva).</description>
    <link>https://dev.to/ikoh_sylva</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%2F200748%2Ff5689d79-a0bc-4166-beb5-20958f52d7dc.jpeg</url>
      <title>DEV Community: Ikoh Sylva</title>
      <link>https://dev.to/ikoh_sylva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ikoh_sylva"/>
    <language>en</language>
    <item>
      <title>Your Website, Your Domain, Your HTTPS — A Complete AWS Custom Domain Setup</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 06 Jun 2026 17:58:08 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/your-website-your-domain-your-https-a-complete-aws-custom-domain-setup-2i2j</link>
      <guid>https://dev.to/ikoh_sylva/your-website-your-domain-your-https-a-complete-aws-custom-domain-setup-2i2j</guid>
      <description>&lt;p&gt;&lt;em&gt;How to register a domain, wire it to Route 53, secure it with a free SSL certificate from ACM, and serve it over HTTPS through CloudFront start to finish.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;In &lt;a href="https://dev.to/ikoh_sylva/host-your-personal-website-on-aws-for-almost-free-with-s3-and-cloudfront-2km7"&gt;our last article&lt;/a&gt;, we deployed a static website to S3 and served it through CloudFront. The site was live, fast, and global but it was loading on a URL that looked like &lt;code&gt;d1abc2xyz.cloudfront.net&lt;/code&gt;. Not exactly something you'd print on a business card.&lt;/p&gt;

&lt;p&gt;This article fixes that. We're going to take that same site and give it a proper home: a custom domain, a free SSL certificate, and a verified HTTPS padlock that browsers love and employers notice.&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%2Fx47fw360qf0vmkipswhz.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%2Fx47fw360qf0vmkipswhz.JPG" alt="Image of AWS dashboard" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end, your portfolio will load at &lt;code&gt;yourname.com&lt;/code&gt; over HTTPS secured, professional, and running entirely on AWS managed infrastructure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"A CloudFront URL tells the world you know AWS. A custom HTTPS domain tells them you finished the job."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;This setup chains five AWS services together. Here's the full picture before we touch anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="err"&gt;🌍&lt;/span&gt; &lt;span class="err"&gt;Browser&lt;/span&gt; &lt;span class="err"&gt;(yourname.com)&lt;/span&gt;
    &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;🗂️&lt;/span&gt;  &lt;span class="err"&gt;Route&lt;/span&gt; &lt;span class="err"&gt;53&lt;/span&gt; &lt;span class="err"&gt;(DNS&lt;/span&gt; &lt;span class="err"&gt;lookup)&lt;/span&gt;
        &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;🔒&lt;/span&gt;  &lt;span class="err"&gt;ACM&lt;/span&gt; &lt;span class="err"&gt;Certificate&lt;/span&gt; &lt;span class="err"&gt;(attached&lt;/span&gt; &lt;span class="err"&gt;to&lt;/span&gt; &lt;span class="err"&gt;CloudFront)&lt;/span&gt;
            &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;☁️&lt;/span&gt;  &lt;span class="err"&gt;CloudFront&lt;/span&gt; &lt;span class="err"&gt;(CDN&lt;/span&gt; &lt;span class="err"&gt;+&lt;/span&gt; &lt;span class="err"&gt;HTTPS&lt;/span&gt; &lt;span class="err"&gt;termination)&lt;/span&gt;
                &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;🪣&lt;/span&gt;  &lt;span class="err"&gt;S3&lt;/span&gt; &lt;span class="err"&gt;(private&lt;/span&gt; &lt;span class="err"&gt;origin)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Route 53 translates &lt;code&gt;yourname.com&lt;/code&gt; into CloudFront's address. CloudFront terminates the HTTPS connection using an ACM certificate, then fetches content from the private S3 bucket as needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The four phases:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;What you're doing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phase 1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Register your domain (or bring an existing one)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phase 2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Create a hosted zone and update nameservers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phase 3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Request a free SSL certificate via ACM with DNS validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phase 4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Attach the domain and certificate to CloudFront&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Phase 1 — Register Your Domain
&lt;/h2&gt;

&lt;p&gt;You have two paths: register directly through Route 53, or bring a domain you already own from another registrar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option A: Register through Route 53
&lt;/h3&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Route 53 → Registered domains → Register domain&lt;/strong&gt;. Search for your name, add it to cart, and complete checkout. AWS automatically creates a hosted zone and configures the nameservers Phase 2 is essentially done for you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Pricing heads-up:&lt;/strong&gt; Route 53 domain registration starts at $13/year for .com and varies by TLD. Unlike S3 and CloudFront, domain registration has no free tier. Hosted zones also cost $0.50/month.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Option B: Bring a domain from another registrar
&lt;/h3&gt;

&lt;p&gt;If you already own a domain from Namecheap, GoDaddy, or elsewhere great. Skip this phase and go straight to Phase 2. You'll update the nameservers at your existing registrar to point at Route 53.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 2 — Connect Your Domain to Route 53
&lt;/h2&gt;

&lt;p&gt;This is the step that hands DNS authority over to AWS. Once done, Route 53 controls where traffic for your domain goes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Create a hosted zone
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;Route 53 → Hosted zones → Create hosted zone&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter your domain name (e.g. &lt;code&gt;yourname.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Leave type as &lt;strong&gt;Public hosted zone&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create hosted zone&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS generates four nameserver (NS) records automatically. They look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ns-412.awsdns-51.com
ns-1624.awsdns-11.co.uk
ns-879.awsdns-45.net
ns-1383.awsdns-44.org
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy all four. You'll paste them into your registrar in the next step.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Update nameservers at your registrar
&lt;/h3&gt;

&lt;p&gt;Log into wherever you registered your domain and find the nameserver settings. Replace the existing nameservers with the four AWS values from your hosted zone and save.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;DNS propagation takes time:&lt;/strong&gt; Nameserver changes can take anywhere from a few minutes to 48 hours to propagate globally. In practice most registrars update within 15–30 minutes. Check propagation status at &lt;code&gt;dnschecker.org&lt;/code&gt; by searching your domain for NS records.&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;What's actually happening here:&lt;/strong&gt; When a browser looks up your domain, it asks the internet "who's authoritative for yourname.com?" The answer comes from your registrar's registry and it points to your nameservers. By switching those nameservers to Route 53, you're telling the entire DNS system: "Ask AWS. They know where this site lives."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Phase 3 — Request a Free SSL Certificate with ACM
&lt;/h2&gt;

&lt;p&gt;AWS Certificate Manager issues free, auto-renewing SSL/TLS certificates. Before you click anything, read this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Region matters — use us-east-1 only:&lt;/strong&gt; CloudFront only accepts ACM certificates created in the &lt;code&gt;us-east-1&lt;/code&gt; (N. Virginia) region. No exceptions. Before you start, confirm the region selector in the top-right corner of the AWS console says &lt;strong&gt;US East (N. Virginia)&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 1 — Request the certificate
&lt;/h3&gt;

&lt;p&gt;Navigate to &lt;strong&gt;ACM → Request a certificate → Request a public certificate&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under &lt;strong&gt;Fully qualified domain names&lt;/strong&gt;, enter your root domain: &lt;code&gt;yourname.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add another name&lt;/strong&gt; and add the www version: &lt;code&gt;www.yourname.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;DNS validation&lt;/strong&gt; — faster and fully automated compared to email validation&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Request&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Always cover both root and www:&lt;/strong&gt; One certificate can cover both &lt;code&gt;yourname.com&lt;/code&gt; and &lt;code&gt;www.yourname.com&lt;/code&gt;. Do this it means visitors reach your site regardless of whether they type www or not.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 2 — Validate ownership via DNS
&lt;/h3&gt;

&lt;p&gt;ACM puts the certificate in &lt;strong&gt;Pending validation&lt;/strong&gt; state. It needs proof you own the domain before issuing the cert.&lt;/p&gt;

&lt;p&gt;Open the certificate in ACM and you'll see a validation section with CNAME records that need to be added to your DNS. Since your domain is already in Route 53, AWS makes this a single click:&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create records in Route 53&lt;/strong&gt;. AWS adds the CNAME records automatically. Within minutes, ACM detects them and flips the certificate status to &lt;strong&gt;Issued&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Why DNS validation works this way:&lt;/strong&gt; ACM can't issue a certificate for a domain you don't control. DNS validation proves ownership by asking you to add a specific CNAME to your DNS something only the domain owner can do. The record stays in your DNS permanently, which is how ACM silently auto-renews the certificate each year without any action from you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For reference, the CNAME ACM asks you to create looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Name:   _a79865eb4cd1a6ab990a45779b4e0b96.yourname.com
Type:   CNAME
Value:  _424c7224e9b0a0d17feb4a6acf5c0c1f.acm-validations.aws
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait until the certificate status shows &lt;strong&gt;Issued&lt;/strong&gt; before continuing. Using Route 53 for DNS, this typically takes 2–5 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phase 4 — Attach Everything to CloudFront
&lt;/h2&gt;

&lt;p&gt;A hosted zone, an issued certificate now let's wire it all together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Update your CloudFront distribution
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;CloudFront → Your distribution → Edit (General tab)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Alternate domain names (CNAMEs)&lt;/strong&gt;, add both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;yourname.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;www.yourname.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under &lt;strong&gt;Custom SSL certificate&lt;/strong&gt;, select the certificate you just issued. It should appear in the dropdown automatically this is why the us-east-1 region requirement exists.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Save changes&lt;/strong&gt;. CloudFront will redeploy globally give it a few minutes.&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%2F4e00tdcrsjtuwi9comki.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%2F4e00tdcrsjtuwi9comki.JPG" alt="Image of the website live" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Create DNS records in Route 53
&lt;/h3&gt;

&lt;p&gt;Final step: tell Route 53 to send traffic for your domain to CloudFront. Go to &lt;strong&gt;Route 53 → Hosted zones → yourname.com → Create record&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Create an &lt;strong&gt;A record&lt;/strong&gt; for the root domain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Record name:&lt;/strong&gt; leave blank (targets root domain)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record type:&lt;/strong&gt; A&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alias:&lt;/strong&gt; toggle on&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route traffic to:&lt;/strong&gt; Alias to CloudFront distribution&lt;/li&gt;
&lt;li&gt;Select your distribution from the dropdown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repeat the same steps for &lt;code&gt;www&lt;/code&gt;: create another A alias record, enter &lt;code&gt;www&lt;/code&gt; in the record name, point it at the same CloudFront distribution.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Why alias records instead of CNAMEs?&lt;/strong&gt; Route 53 alias records are an AWS-specific DNS extension. They work at the root domain level regular CNAMEs can't. They also update automatically when CloudFront's underlying IPs change and don't incur an extra DNS query charge.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Confirm Your Site Loads Over HTTPS
&lt;/h2&gt;

&lt;p&gt;Open a browser and visit &lt;code&gt;https://yourname.com&lt;/code&gt;. You should see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your website loading correctly&lt;/li&gt;
&lt;li&gt;A padlock icon in the address bar&lt;/li&gt;
&lt;li&gt;A valid certificate issued to your domain (click the padlock → Certificate to verify)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http://yourname.com&lt;/code&gt; automatically redirecting to HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🎉 &lt;strong&gt;You're fully live — on your own domain, over HTTPS.&lt;/strong&gt; Your site is now globally distributed through CloudFront, secured with a certificate AWS renews automatically every year, at a URL you actually own.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Troubleshooting Common Issues
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Certificate not appearing in the CloudFront dropdown
&lt;/h3&gt;

&lt;p&gt;Almost always a region issue. The certificate was created outside of us-east-1. Re-request it in the correct region it only takes a few minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ERR_SSL_VERSION_OR_CIPHER_MISMATCH or certificate warning
&lt;/h3&gt;

&lt;p&gt;The alternate domain name entered in CloudFront doesn't exactly match what's on the ACM certificate. Double-check for typos they must be identical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Site loads on the CloudFront URL but not the custom domain
&lt;/h3&gt;

&lt;p&gt;DNS hasn't propagated yet, or the Route 53 alias records are missing or misconfigured. Run &lt;code&gt;nslookup yourname.com&lt;/code&gt; in your terminal if it doesn't return a CloudFront address, the A records need attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  www loads but the root domain doesn't (or vice versa)
&lt;/h3&gt;

&lt;p&gt;One of the two A alias records is missing. Return to Route 53 and confirm you have alias records for both the root and the www subdomain, both pointing at the same CloudFront distribution.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned From This Project
&lt;/h2&gt;

&lt;p&gt;Before doing this as part of the &lt;strong&gt;Cloud Engineering Program&lt;/strong&gt;, DNS was a black box. You typed a domain, a page appeared, and everything in between was a mystery. Wiring up Route 53, ACM, and CloudFront by hand made it concrete and a few things genuinely clicked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nameservers are delegation, not redirection&lt;/strong&gt; — you're not moving your domain, you're transferring authority over it. The internet now asks AWS, not your registrar, for answers about your domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS validation is cryptographic proof of ownership&lt;/strong&gt; — ACM never emails you a link. The CNAME record is the proof. Only the domain owner can add it, so adding it is the trust signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alias records solve a real DNS spec limitation&lt;/strong&gt; — CNAMEs are forbidden at the root domain level by the DNS protocol itself. Route 53 alias records are AWS's pragmatic workaround, and they're better in every measurable way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACM auto-renewal is quietly brilliant&lt;/strong&gt; — the validation CNAME never gets deleted. It sits in your DNS forever, letting ACM silently re-verify and renew your certificate each year without any action from you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this clicked from reading documentation. It clicked from doing it, watching something break, and figuring out why.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Reference: The Full Chain
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="c"&gt;# The complete setup, end to end
&lt;/span&gt;
&lt;span class="err"&gt;Domain&lt;/span&gt; &lt;span class="err"&gt;registrar&lt;/span&gt;  &lt;span class="err"&gt;→&lt;/span&gt;  &lt;span class="err"&gt;nameservers&lt;/span&gt; &lt;span class="err"&gt;updated&lt;/span&gt; &lt;span class="err"&gt;to&lt;/span&gt; &lt;span class="err"&gt;Route&lt;/span&gt; &lt;span class="err"&gt;53&lt;/span&gt;
&lt;span class="err"&gt;Route&lt;/span&gt; &lt;span class="err"&gt;53&lt;/span&gt;          &lt;span class="err"&gt;→&lt;/span&gt;  &lt;span class="err"&gt;hosted&lt;/span&gt; &lt;span class="err"&gt;zone&lt;/span&gt; &lt;span class="err"&gt;with&lt;/span&gt; &lt;span class="err"&gt;A&lt;/span&gt; &lt;span class="err"&gt;alias&lt;/span&gt; &lt;span class="err"&gt;records&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;CloudFront&lt;/span&gt;
&lt;span class="err"&gt;ACM&lt;/span&gt; &lt;span class="err"&gt;(us-east-1)&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt;  &lt;span class="err"&gt;SSL&lt;/span&gt; &lt;span class="err"&gt;cert,&lt;/span&gt; &lt;span class="err"&gt;DNS-validated&lt;/span&gt; &lt;span class="err"&gt;via&lt;/span&gt; &lt;span class="err"&gt;Route&lt;/span&gt; &lt;span class="err"&gt;53&lt;/span&gt; &lt;span class="err"&gt;CNAME&lt;/span&gt;
&lt;span class="err"&gt;CloudFront&lt;/span&gt;        &lt;span class="err"&gt;→&lt;/span&gt;  &lt;span class="err"&gt;custom&lt;/span&gt; &lt;span class="err"&gt;domain&lt;/span&gt; &lt;span class="err"&gt;+&lt;/span&gt; &lt;span class="err"&gt;ACM&lt;/span&gt; &lt;span class="err"&gt;cert&lt;/span&gt; &lt;span class="err"&gt;attached,&lt;/span&gt; &lt;span class="err"&gt;HTTP→HTTPS&lt;/span&gt; &lt;span class="err"&gt;redirect&lt;/span&gt;
&lt;span class="err"&gt;S3&lt;/span&gt; &lt;span class="err"&gt;bucket&lt;/span&gt;         &lt;span class="err"&gt;→&lt;/span&gt;  &lt;span class="err"&gt;private&lt;/span&gt; &lt;span class="err"&gt;origin,&lt;/span&gt; &lt;span class="err"&gt;OAC-restricted&lt;/span&gt; &lt;span class="err"&gt;to&lt;/span&gt; &lt;span class="err"&gt;CloudFront&lt;/span&gt; &lt;span class="err"&gt;only&lt;/span&gt;

&lt;span class="c"&gt;# End result
&lt;/span&gt;&lt;span class="nl"&gt;https&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="nf"&gt;//yourname.com  →  globally distributed · HTTPS · auto-renewing cert&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Now that your site lives on a custom domain over HTTPS, the next step is removing the manual deploy process entirely. Hopefully we will cover setting up a &lt;strong&gt;GitHub Actions pipeline&lt;/strong&gt; that auto-deploys on every git push and triggers a &lt;strong&gt;CloudFront cache invalidation&lt;/strong&gt; so your changes go live without you ever opening the AWS console again.&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%2F0oy2r7qlyxoemk7uyoup.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%2F0oy2r7qlyxoemk7uyoup.JPG" alt="Image of the website live" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the &lt;strong&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Host Your Personal Website on AWS for (Almost) Free — With S3 and CloudFront</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 30 May 2026 08:00:19 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/host-your-personal-website-on-aws-for-almost-free-with-s3-and-cloudfront-2km7</link>
      <guid>https://dev.to/ikoh_sylva/host-your-personal-website-on-aws-for-almost-free-with-s3-and-cloudfront-2km7</guid>
      <description>&lt;p&gt;&lt;em&gt;A practical walkthrough for deploying a static portfolio, resume, or about-me page the cloud-native way with HTTPS, global delivery, and zero server maintenance.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Every cloud engineer needs a live portfolio. It proves you can ship not just talk theory. This project is deceptively simple on the surface, but underneath it teaches you S3 permissions, CDN architecture, bucket policies, and origin access control all concepts that show up on AWS certifications and real-world cloud jobs.&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%2Fg0icdf8ayv92q65y0qjx.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%2Fg0icdf8ayv92q65y0qjx.JPG" alt="Image of the AWS S3 Bucket" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through exactly how I deployed my own static website using &lt;strong&gt;Amazon S3&lt;/strong&gt; for storage and &lt;strong&gt;Amazon CloudFront&lt;/strong&gt; as the content delivery network no EC2, no server patching, no midnight alerts. Just clean, fast, globally distributed HTML.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The best infrastructure is the kind you don't have to babysit at 2am."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why S3 + CloudFront?
&lt;/h2&gt;

&lt;p&gt;Before we touch a single AWS console screen, let's understand the architecture we're building and why it makes sense.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;💰 &lt;strong&gt;Near-zero cost&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;S3 storage for a personal site costs pennies. CloudFront's free tier covers 1TB/month of data transfer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡ &lt;strong&gt;Global speed&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;CloudFront caches your content at 400+ edge locations worldwide your site loads fast from Lagos to London.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔒 &lt;strong&gt;HTTPS by default&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;CloudFront provides a free SSL certificate your visitors get a padlock icon without buying anything extra.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛠️ &lt;strong&gt;Zero servers&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;No EC2, no patching, no SSH keys. AWS manages all the infrastructure underneath.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;Here's the request flow from browser to your HTML file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="err"&gt;🧑‍💻&lt;/span&gt; &lt;span class="err"&gt;Visitor&lt;/span&gt;  &lt;span class="err"&gt;──HTTPS──▶&lt;/span&gt;  &lt;span class="err"&gt;☁️&lt;/span&gt; &lt;span class="err"&gt;CloudFront&lt;/span&gt; &lt;span class="err"&gt;(CDN&lt;/span&gt; &lt;span class="err"&gt;Edge)&lt;/span&gt;  &lt;span class="err"&gt;──cache&lt;/span&gt; &lt;span class="err"&gt;miss&lt;/span&gt; &lt;span class="err"&gt;only──▶&lt;/span&gt;  &lt;span class="err"&gt;🪣&lt;/span&gt; &lt;span class="err"&gt;S3&lt;/span&gt; &lt;span class="err"&gt;Bucket&lt;/span&gt; &lt;span class="err"&gt;(private&lt;/span&gt; &lt;span class="err"&gt;origin)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CloudFront sits in front of your S3 bucket as a CDN. When a visitor hits your URL, CloudFront checks if it has a cached copy at the nearest edge location. On a &lt;strong&gt;cache hit&lt;/strong&gt;, it serves instantly. On a &lt;strong&gt;miss&lt;/strong&gt;, it fetches from S3, caches it, and serves the response.&lt;/p&gt;

&lt;p&gt;Your S3 bucket can remain &lt;strong&gt;private&lt;/strong&gt; only CloudFront talks to it directly, which is far more secure than opening the bucket to the entire internet.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Build It Step-by-Step
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 — Create Your S3 Bucket
&lt;/h3&gt;

&lt;p&gt;Log into the &lt;strong&gt;AWS Management Console&lt;/strong&gt; and navigate to &lt;strong&gt;S3 → Create bucket&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose a globally unique bucket name (e.g. &lt;code&gt;yourname-portfolio-2024&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Select your preferred AWS Region&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leave "Block all public access" checked&lt;/strong&gt; — we'll handle access through CloudFront, not by making the bucket fully public&lt;/li&gt;
&lt;li&gt;Leave versioning off for simplicity; enable it later if you want rollback support&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Common mistake:&lt;/strong&gt; Beginners often unblock all public access immediately and make the bucket fully public. This works, but it's not best practice. The cleaner and more secure approach is to keep the bucket private and let CloudFront access it via an &lt;em&gt;Origin Access Control (OAC)&lt;/em&gt; policy which is exactly what we'll do.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 2 — Upload Your HTML Files
&lt;/h3&gt;

&lt;p&gt;Build or gather your static website files. At minimum, you need an &lt;code&gt;index.html&lt;/code&gt;. A basic portfolio structure might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight make"&gt;&lt;code&gt;&lt;span class="err"&gt;my-portfolio/&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;index.html&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;style.css&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;script.js&lt;/span&gt;
&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;assets/&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;profile-photo.jpg&lt;/span&gt;
    &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;resume.pdf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the S3 console, open your bucket and click &lt;strong&gt;Upload&lt;/strong&gt;. Drag your files in, keeping the folder structure intact, then click &lt;strong&gt;Upload&lt;/strong&gt; to confirm.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Pro tip:&lt;/strong&gt; If you have the AWS CLI set up, you can sync your local folder with:&lt;/p&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;sync&lt;/span&gt; ./my-portfolio s3://your-bucket-name
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Much faster for future updates.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 3 — Enable Static Website Hosting
&lt;/h3&gt;

&lt;p&gt;In your S3 bucket, go to &lt;strong&gt;Properties → Static website hosting → Edit&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable static website hosting&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Index document&lt;/strong&gt; to &lt;code&gt;index.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Optionally set &lt;strong&gt;Error document&lt;/strong&gt; to &lt;code&gt;404.html&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save changes. AWS will give you an S3 website endpoint URL. Don't share this publicly it's HTTP only and bypasses CloudFront. Think of it as a staging preview.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4 — Create a CloudFront Distribution
&lt;/h3&gt;

&lt;p&gt;Navigate to &lt;strong&gt;CloudFront → Create distribution&lt;/strong&gt;. This is where the magic happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Origin settings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Origin domain:&lt;/strong&gt; Select your S3 bucket from the dropdown (use the REST endpoint, not the website endpoint)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Origin access:&lt;/strong&gt; Choose &lt;strong&gt;Origin access control settings (recommended)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create new OAC&lt;/strong&gt; give it a name and leave signing behaviour as "Sign requests"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Default cache behaviour:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Viewer protocol policy:&lt;/strong&gt; Set to &lt;code&gt;Redirect HTTP to HTTPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache policy:&lt;/strong&gt; Use &lt;code&gt;CachingOptimized&lt;/code&gt; (AWS managed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Settings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default root object:&lt;/strong&gt; Enter &lt;code&gt;index.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price class:&lt;/strong&gt; &lt;code&gt;Use all edge locations&lt;/code&gt; for best global performance, or restrict to a region to reduce cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;Create distribution&lt;/strong&gt;. CloudFront will take a few minutes to deploy globally the status changes from "Deploying" to a green "Enabled".&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5 — Add the Bucket Policy for CloudFront OAC
&lt;/h3&gt;

&lt;p&gt;After creating the distribution, the console will show a banner prompting you to update your S3 bucket policy. Click &lt;strong&gt;Copy policy&lt;/strong&gt;, then navigate back to your S3 bucket → &lt;strong&gt;Permissions → Bucket policy → Edit&lt;/strong&gt; and paste it in.&lt;/p&gt;

&lt;p&gt;The generated policy looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AllowCloudFrontServicePrincipal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Principal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cloudfront.amazonaws.com"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::your-bucket-name/*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"StringEquals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"AWS:SourceArn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:cloudfront::ACCOUNT_ID:distribution/DIST_ID"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;What this policy does:&lt;/strong&gt; It grants the CloudFront service principal read access (&lt;code&gt;s3:GetObject&lt;/code&gt;) to every object in your bucket but &lt;em&gt;only&lt;/em&gt; from your specific CloudFront distribution. Not from anyone else's CloudFront. Not from the public internet. Just yours.&lt;/p&gt;
&lt;/blockquote&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%2Fsvn0yy7kzs28jsxp77yx.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%2Fsvn0yy7kzs28jsxp77yx.JPG" alt="Image of the webpage" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6 — Test Your Live Site
&lt;/h3&gt;

&lt;p&gt;Go back to CloudFront and copy your &lt;strong&gt;Distribution domain name&lt;/strong&gt; it looks like &lt;code&gt;d1abc2defgh3ij.cloudfront.net&lt;/code&gt;. Paste it in your browser.&lt;/p&gt;

&lt;p&gt;You should see your &lt;code&gt;index.html&lt;/code&gt; rendered, served over HTTPS, with a valid SSL certificate for free.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎉 &lt;strong&gt;You're live!&lt;/strong&gt; Your personal website is now globally distributed across AWS's edge network. Whether someone visits from Lagos, London, or Los Angeles they're getting a fast, secure experience.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Optional But Recommended: Use Your Own Domain
&lt;/h2&gt;

&lt;p&gt;The CloudFront URL works fine, but &lt;code&gt;yourname.com&lt;/code&gt; looks far more professional. Here's the short version:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Register a domain via &lt;strong&gt;Route 53&lt;/strong&gt; (or bring your own from Namecheap, GoDaddy, etc.)&lt;/li&gt;
&lt;li&gt;Request a free SSL certificate via &lt;strong&gt;AWS Certificate Manager (ACM)&lt;/strong&gt; in the &lt;strong&gt;us-east-1&lt;/strong&gt; region (required for CloudFront)&lt;/li&gt;
&lt;li&gt;Add your custom domain as an &lt;strong&gt;Alternate domain name (CNAME)&lt;/strong&gt; in your CloudFront distribution settings and attach the ACM certificate&lt;/li&gt;
&lt;li&gt;In Route 53, create an &lt;strong&gt;A record (alias)&lt;/strong&gt; pointing to your CloudFront distribution&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What I Learned From This Project
&lt;/h2&gt;

&lt;p&gt;When I first completed this as part of the &lt;strong&gt;Cloud Engineering Program&lt;/strong&gt;, I thought it was going to be a simple file-upload exercise. It turned out to be a surprisingly rich lesson in cloud fundamentals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IAM and resource-based policies&lt;/strong&gt; — the bucket policy taught me how AWS evaluates permissions at the resource level, not just the user level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The principle of least privilege&lt;/strong&gt; — keeping the S3 bucket private and exposing it only through CloudFront OAC is a real-world security pattern, not just textbook advice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CDN architecture&lt;/strong&gt; — understanding cache hits vs. misses, TTLs, and edge locations made CloudFront feel less magical and more engineerable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS and SSL&lt;/strong&gt; — hooking up Route 53 and ACM demystified how HTTPS actually works end-to-end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't just resume bullet points. They're the building blocks of almost every AWS architecture you'll work on professionally.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Reference: Services Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Role in This Project&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Amazon S3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Object storage for your HTML/CSS/JS/assets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;S3 Static Hosting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Turns the bucket into a web server (origin)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bucket Policy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;JSON policy granting CloudFront read access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CloudFront&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CDN that caches and delivers content globally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OAC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Origin Access Control secure S3↔CloudFront connection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ACM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free SSL/TLS certificate &lt;em&gt;(optional, custom domain)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Route 53&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DNS routing &lt;em&gt;(optional, custom domain)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;Once your static site is live, try extending it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a &lt;strong&gt;CI/CD pipeline with GitHub Actions&lt;/strong&gt; to auto-deploy on every push to your repo&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;CloudFront invalidations&lt;/strong&gt; (&lt;code&gt;aws cloudfront create-invalidation&lt;/code&gt;) to clear the cache when you update your content&lt;/li&gt;
&lt;li&gt;Explore &lt;strong&gt;S3 access logging&lt;/strong&gt; to see who's visiting your site&lt;/li&gt;
&lt;li&gt;Deploy a &lt;strong&gt;React or Next.js build&lt;/strong&gt; the same S3 + CloudFront pattern scales directly to frontend frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The static web hosting pattern is one of the most reusable skills in your AWS toolkit. Once you have it down, you'll reach for it constantly.&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%2F0avzmx9z1sucfo1uzkhi.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%2F0avzmx9z1sucfo1uzkhi.JPG" alt="Image of the webpage" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the &lt;strong&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;




</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>Monitoring Containers on AWS ECS with CloudWatch</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 23 May 2026 19:46:39 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/monitoring-containers-on-aws-ecs-with-cloudwatch-55d4</link>
      <guid>https://dev.to/ikoh_sylva/monitoring-containers-on-aws-ecs-with-cloudwatch-55d4</guid>
      <description>&lt;p&gt;One of the biggest realizations I had during my cloud engineering journey was this:&lt;/p&gt;

&lt;p&gt;Deploying an application is only half the job.&lt;/p&gt;

&lt;p&gt;The other half?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Monitoring it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understanding how it behaves under load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Knowing when something is wrong before users complain.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because in real-world cloud environments, applications are constantly consuming resources, handling requests, and responding to changing traffic patterns. If you’re not monitoring them properly, you’re essentially operating blind.&lt;/p&gt;

&lt;p&gt;That’s exactly what this hands-on project aims to help us understand.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through how I monitored containerized workloads running on Amazon ECS, configured task resource settings, and visualized metrics using Amazon CloudWatch dashboards.&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%2Foinvrknj7dw6ner6xyx5.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%2Foinvrknj7dw6ner6xyx5.JPG" alt="Image of AWS ECS dashboard" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we’ll Be Building
&lt;/h2&gt;

&lt;p&gt;In this project, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deploy a containerized application on ECS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure CPU and memory allocation in the task definition &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitor resource usage using CloudWatch &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build a dashboard with CPU and memory widgets &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simulate load to observe metric changes in real time&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you’ll understand how to move from simply running containers to actually observing and managing them effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Monitoring Matters
&lt;/h2&gt;

&lt;p&gt;Imagine deploying an application that suddenly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Runs out of memory &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uses excessive CPU &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Becomes slow under traffic spikes &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You won’t know why performance dropped&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Troubleshooting becomes difficult&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Downtime becomes more likely&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You gain visibility&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can detect issues early&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You make informed scaling decisions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why observability is such a huge part of modern DevOps and Cloud Engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users
   |
   v
Amazon ECS Cluster
   |
Running ECS Service
   |
Task Definition
(CPU + Memory Allocation)
   |
CloudWatch Metrics &amp;amp; Dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 1: ECS Cluster and Running Service
&lt;/h2&gt;

&lt;p&gt;The first step was deploying a containerized application on ECS.&lt;/p&gt;

&lt;p&gt;The deployment included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An ECS Cluster &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Running ECS Service &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Active ECS Tasks &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the foundation where your application runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Configure Task Definition Resources
&lt;/h2&gt;

&lt;p&gt;One thing beginners often overlook is this:&lt;br&gt;
Containers don’t have unlimited resources.&lt;/p&gt;

&lt;p&gt;When creating the ECS task definition, I configured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CPU allocation &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory allocation &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CPU: 512 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory: 1024 MiB &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Resource allocation helps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prevent resource exhaustion &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improve application stability &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimize cloud costs &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define scaling expectations &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is how cloud platforms control workload behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Monitoring with CloudWatch
&lt;/h2&gt;

&lt;p&gt;Now comes the exciting part.&lt;/p&gt;

&lt;p&gt;Once the ECS service was running, AWS automatically started sending metrics to CloudWatch.&lt;/p&gt;

&lt;p&gt;I created a dashboard showing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CPU utilization &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory utilization &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These widgets provided real-time visibility into how the container was behaving.&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%2Fo8zunwoj64yvowifkivl.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%2Fo8zunwoj64yvowifkivl.JPG" alt="Image of AWS analytics dashboard" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Dashboard
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to CloudWatch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to Dashboards &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Dashboard &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Widgets: &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ECS CPU Utilization &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ECS Memory Utilization &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What These Metrics Tell You
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CPU Utilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shows how much processing power the container is using.&lt;/p&gt;

&lt;p&gt;High CPU may indicate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Heavy traffic &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inefficient code &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Need for scaling &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Memory Utilization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shows RAM consumption.&lt;/p&gt;

&lt;p&gt;High memory usage may indicate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Memory leaks &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Insufficient allocation &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application instability risks &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simulate Load
&lt;/h2&gt;

&lt;p&gt;This was one of the most interesting parts.&lt;/p&gt;

&lt;p&gt;To see real metric changes, I simulated load against the application using repeated browser refreshes or lightweight testing tools.&lt;/p&gt;

&lt;p&gt;And suddenly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CPU usage increased&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory usage shifted&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Watching the graphs move in real time made everything feel much more practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Simulating Load Is Important
&lt;/h2&gt;

&lt;p&gt;This helps you understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How applications behave under pressure &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When scaling might be needed &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How monitoring tools detect changes &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Mistakes Beginners Make
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Ignoring Resource Limits&lt;br&gt;
Containers can crash if memory is exhausted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not Monitoring Applications&lt;br&gt;
You can’t fix what you can’t see.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Misinterpreting Metrics&lt;br&gt;
Temporary spikes are normal patterns matter more.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What This Project Really Teaches
&lt;/h2&gt;

&lt;p&gt;At first glance, this might seem like:&lt;/p&gt;

&lt;p&gt;“Just another ECS deployment.”&lt;/p&gt;

&lt;p&gt;But it’s actually teaching something deeper:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Operational visibility &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource management &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Observability fundamentals &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance awareness &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the most important transitions in cloud engineering is moving from:&lt;/p&gt;

&lt;p&gt;“My application is running” to “I understand how my application is performing.”&lt;/p&gt;

&lt;p&gt;That’s where monitoring changes everything.&lt;/p&gt;

&lt;p&gt;This project helped reinforce that cloud engineering isn’t only about infrastructure it’s also about visibility, reliability, and operational intelligence.&lt;/p&gt;

&lt;p&gt;And honestly? That’s where things start getting really interesting.&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%2Ftdz55wutdur07anuygrh.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%2Ftdz55wutdur07anuygrh.JPG" alt="Image of Nginx home page" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with Sanjeev Kumar’s team, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;Apply &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>ecs</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Deploying Metabase on AWS ECS (Fargate) with PostgreSQL (RDS)</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 16 May 2026 07:42:54 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/deploying-metabase-on-aws-ecs-fargate-with-postgresql-rds-41pa</link>
      <guid>https://dev.to/ikoh_sylva/deploying-metabase-on-aws-ecs-fargate-with-postgresql-rds-41pa</guid>
      <description>&lt;p&gt;At some point in your cloud journey, you stop just deploying applications and start thinking about data, persistence, and real-world architecture.&lt;/p&gt;

&lt;p&gt;Because most production applications don’t just run they store, query, and visualize data.&lt;/p&gt;

&lt;p&gt;That’s exactly what this project is about.&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%2Fnmxh5hhqdaarr2vvj1c5.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%2Fnmxh5hhqdaarr2vvj1c5.JPG" alt="Image of the AWS ECS Cluster" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through how I deployed Metabase (an open-source business intelligence tool) on AWS using ECS with Fargate, and connected it to a PostgreSQL database hosted on RDS.&lt;/p&gt;

&lt;p&gt;This is no longer just a “hello world” setup this is a real application backed by a real database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ll Be Building
&lt;/h2&gt;

&lt;p&gt;In this project, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deploy Metabase using containers &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run it on Amazon ECS (Fargate) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a PostgreSQL database using Amazon RDS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect the application to the database &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure networking and security for communication &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, we’ll have a fully functional data application in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This project introduces critical real-world concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Application + Database architecture &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Containerized workloads &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Managed databases (RDS) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure service-to-service communication &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Environment variable configuration &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the kind of setup you’ll see in production systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User (Browser)
     |
     v
ECS Service (Fargate)
     |
Metabase Container
     |
     v
Amazon RDS (PostgreSQL)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both ECS and RDS must be in the same VPC for private communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create the RDS PostgreSQL Database
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to RDS → Create Database &lt;/li&gt;
&lt;li&gt;Choose: &lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Engine: PostgreSQL &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Template: Free tier (if available)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DB instance identifier: &lt;code&gt;metabase-db&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Username: &lt;code&gt;postgres&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Password: (your choice) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networking Settings&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Place RDS in your VPC &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose a private subnet (recommended) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Disable public access (best practice) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security Group for RDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add inbound rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Port: 5432 (PostgreSQL) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: ECS security group &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows only your container to access the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create ECS Cluster (Fargate)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to ECS &lt;/li&gt;
&lt;li&gt;Create a cluster &lt;/li&gt;
&lt;li&gt;Choose Fargate (Networking only) &lt;/li&gt;
&lt;li&gt;Name it: metabase-cluster&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 3: Create Task Definition
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to Task Definitions → Create &lt;/li&gt;
&lt;li&gt;Choose Fargate &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Container Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Container name: &lt;code&gt;metabase&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Image: &lt;code&gt;metabase/metabase&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port mapping: &lt;br&gt;
Container port: 3000 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;MB_DB_TYPE&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;postgres&lt;/span&gt;
&lt;span class="py"&gt;MB_DB_DBNAME&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;metabase&lt;/span&gt;
&lt;span class="py"&gt;MB_DB_PORT&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5432&lt;/span&gt;
&lt;span class="py"&gt;MB_DB_USER&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;postgres&lt;/span&gt;
&lt;span class="py"&gt;MB_DB_PASS&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;yourpassword&lt;/span&gt;
&lt;span class="py"&gt;MB_DB_HOST&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;RDS-ENDPOINT&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;&amp;lt;RDS-ENDPOINT&amp;gt;&lt;/code&gt; with your database endpoint.&lt;/p&gt;

&lt;p&gt;This is how Metabase connects to PostgreSQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Create ECS Service
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch type: Fargate &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task definition: metabase-task &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Number of tasks: 1 &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%2Fje6wlrlwsuz9460drfja.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%2Fje6wlrlwsuz9460drfja.JPG" alt="Image of Metabase Database" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Networking Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use the same VPC as RDS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select subnets (public or private depending on access strategy) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable public IP (if accessing via browser) &lt;br&gt;
Security Group for ECS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Add inbound rule:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Port: 3000 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: your IP (recommended) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Deploy and Run
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start the service &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for task status → RUNNING &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6: Access Metabase
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Get the public IP of the ECS task &lt;/li&gt;
&lt;li&gt;Open: 
&lt;code&gt;http://&amp;lt;public-ip&amp;gt;:3000&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You should see the Metabase setup screen!&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;ECS and RDS in different VPCs&lt;br&gt;
They won’t communicate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incorrect RDS endpoint&lt;br&gt;
Connection will fail.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Missing security group rule (5432)&lt;br&gt;
Database access will be blocked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wrong environment variables&lt;br&gt;
Metabase won’t initialize properly.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What This Project Teaches You
&lt;/h2&gt;

&lt;p&gt;This project is a major step forward.&lt;/p&gt;

&lt;p&gt;You learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How applications connect to databases &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to configure secure communication &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to run stateful applications in the cloud &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How real-world systems are structured&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is no longer just infrastructure it’s application architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;This setup is similar to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Internal analytics dashboards &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Business intelligence platforms &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SaaS reporting tools &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitoring and metrics visualization &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deploying Metabase with ECS and RDS is where things start to feel real.&lt;/p&gt;

&lt;p&gt;You’re no longer just launching resources you’re building connected systems.&lt;/p&gt;

&lt;p&gt;And that’s the difference between:&lt;/p&gt;

&lt;p&gt;“Learning cloud” and “Thinking like a cloud engineer”&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%2Fyjxo7ee3ra8rn8noobke.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%2Fyjxo7ee3ra8rn8noobke.JPG" alt="Image of a Metabase Site" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>cloudcomputing</category>
      <category>awsecsfargate</category>
    </item>
    <item>
      <title>Running Grafana on AWS ECS (Fargate)</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 09 May 2026 19:48:31 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/running-grafana-on-aws-ecs-fargate-p9g</link>
      <guid>https://dev.to/ikoh_sylva/running-grafana-on-aws-ecs-fargate-p9g</guid>
      <description>&lt;p&gt;At some point in your cloud journey, you move beyond just deploying servers…&lt;/p&gt;

&lt;p&gt;…and start thinking about observability.&lt;/p&gt;

&lt;p&gt;Because building systems is one thing.&lt;/p&gt;

&lt;p&gt;Understanding how they behave in real time is another.&lt;/p&gt;

&lt;p&gt;That’s where tools like Grafana come in.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through how I deployed Grafana on AWS using ECS with Fargate a fully managed container service without managing any servers.&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%2F8i5gvnmf91p5ptypknol.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%2F8i5gvnmf91p5ptypknol.JPG" alt="Image of the grafana ECS service on AWS" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ll Be Building
&lt;/h2&gt;

&lt;p&gt;In this project, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deploy Grafana using containers &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Amazon ECS with Fargate (serverless compute for containers) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expose the application on port 3000 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure networking and security &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access Grafana via our browser &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, we’ll have a live Grafana dashboard running in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This project introduces you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Containerized applications &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Serverless container orchestration &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Networking in ECS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security group configuration &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Observability tools (Grafana)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are real-world DevOps and Cloud Engineering skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   |
Public Subnet
   |
ECS Service (Fargate)
   |
Grafana Container (Port 3000)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No EC2 instances needed Fargate handles everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create an ECS Cluster
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to ECS in the AWS Console &lt;/li&gt;
&lt;li&gt;Click Create Cluster &lt;/li&gt;
&lt;li&gt;Choose Fargate (Networking only) &lt;/li&gt;
&lt;li&gt;Give it a name (e.g., grafana-cluster) &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Create a Task Definition
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to Task Definitions → Create &lt;/li&gt;
&lt;li&gt;Select Fargate &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Task name: &lt;code&gt;grafana-task&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CPU: 0.5 vCPU &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory: 1GB &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Add Container&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Container name: grafana &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Image: &lt;code&gt;grafana/grafana&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port mapping: &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Container port: 3000&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This tells ECS to expose Grafana’s default port.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Create a Service
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to your cluster &lt;/li&gt;
&lt;li&gt;Click Create Service &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch type: Fargate &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task definition: &lt;code&gt;grafana-task&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Number of tasks: 1 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networking Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This step is critical.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose a VPC &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select a public subnet &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Auto-assign public IP &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Configure Security Group
&lt;/h2&gt;

&lt;p&gt;Create or modify a security group:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inbound Rule&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Type: Custom TCP &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port: 3000 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: 0.0.0.0/0 (or restrict to your IP for better security) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows access to Grafana via 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%2F27bkowgyx5sqlwrm4oy5.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%2F27bkowgyx5sqlwrm4oy5.JPG" alt="Image of grafana login page" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Deploy and Run
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch the service &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for the task to reach RUNNING state &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6: Access Grafana
&lt;/h2&gt;

&lt;p&gt;Once running:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to ECS → Tasks &lt;/li&gt;
&lt;li&gt;Copy the Public IP &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open in browser:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://&amp;lt;public-ip&amp;gt;:3000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should see the Grafana login page!&lt;/p&gt;

&lt;h2&gt;
  
  
  Default Login
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Username: admin &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Password: admin &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(You’ll be prompted to change it immediately.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Assignment Deliverable (Proof)
&lt;/h2&gt;

&lt;p&gt;To confirm your setup, capture screenshots showing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ECS cluster &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running task &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task public IP &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grafana UI in browser &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This proves:&lt;/p&gt;

&lt;p&gt;✔ Successful deployment&lt;br&gt;
✔ Proper networking&lt;br&gt;
✔ Working containerized application&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Forgetting to open port 3000&lt;br&gt;
You won’t be able to access Grafana.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not assigning a public IP&lt;br&gt;
Your service won’t be reachable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using wrong port mapping&lt;br&gt;
Grafana won’t load properly.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What This Project Teaches You
&lt;/h2&gt;

&lt;p&gt;This isn’t just about Grafana.&lt;/p&gt;

&lt;p&gt;It teaches you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How containers are deployed in the cloud &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How ECS and Fargate work &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to expose applications securely &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How modern infrastructure avoids managing servers &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly how modern DevOps teams deploy applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;Grafana is widely used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Monitoring cloud infrastructure &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visualizing metrics (CPU, memory, logs) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrating with tools like Prometheus and CloudWatch &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deploying Grafana on ECS Fargate is a powerful step forward in your cloud journey.&lt;/p&gt;

&lt;p&gt;It moves you from:&lt;/p&gt;

&lt;p&gt;“I can launch servers” to “I can now deploy and run real applications in the cloud”&lt;/p&gt;

&lt;p&gt;And that’s where things start to get exciting.&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%2F3254c94if4ysfhalm47v.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%2F3254c94if4ysfhalm47v.JPG" alt="Image of grafana home page" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with Sanjeev Kumar’s team, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By signing up through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Building a Multi-VPC Architecture on AWS</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 02 May 2026 07:37:14 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/building-a-multi-vpc-architecture-on-aws-30m3</link>
      <guid>https://dev.to/ikoh_sylva/building-a-multi-vpc-architecture-on-aws-30m3</guid>
      <description>&lt;p&gt;When people begin learning cloud networking, they often start with a single VPC.&lt;br&gt;
And that’s fine… until you realize that real-world cloud environments rarely stop at just one VPC.&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%2F0a5cjwccqyiwcfgntlq3.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%2F0a5cjwccqyiwcfgntlq3.JPG" alt="Image of the AWS management console" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Organizations separate workloads for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Security &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Team isolation &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Environment segmentation (Dev, Staging, Production) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, a new question arises:&lt;/p&gt;

&lt;p&gt;How do these isolated networks communicate with each other securely?&lt;/p&gt;

&lt;p&gt;That’s exactly what this hands-on project explores.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ll Be Building
&lt;/h2&gt;

&lt;p&gt;In this guide, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create two separate VPCs &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Design public and private subnets in each VPC &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Establish a VPC Peering connection &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure route tables to enable communication &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, we’ll have a basic multi-VPC architecture, similar to what is used in real production environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This project introduces core networking concepts every cloud engineer must understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Network isolation &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CIDR block design &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Routing between networks &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Private communication without the internet &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are foundational skills for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cloud Engineers &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DevOps Engineers &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solutions Architects &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VPC-A (10.10.0.0/16)          VPC-B (10.20.0.0/16)
----------------------        ----------------------
Public Subnet                Public Subnet
Private Subnet               Private Subnet
        |                          |
        -------- VPC Peering -------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Internet Gateway or NAT Gateway required this is purely internal communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create VPC-A
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Name: VPC-A &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CIDR block: 10.10.0.0/16 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Create Subnets in VPC-A
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Public Subnet: 10.10.1.0/24 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Private Subnet: 10.10.2.0/24 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Create VPC-B
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Name: VPC-B &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CIDR block: 10.20.0.0/16 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Create Subnets in VPC-B
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Public Subnet: 10.20.1.0/24 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Private Subnet: 10.20.2.0/24 &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Create VPC Peering Connection
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to VPC Dashboard → Peering Connections &lt;/li&gt;
&lt;li&gt;Click Create Peering Connection &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select: &lt;br&gt;
Requester: VPC-A &lt;br&gt;
Accepter: VPC-B &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create and accept the request &lt;br&gt;
Once accepted, the VPCs are logically connected but not yet able to communicate.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fkmubb1p37dm9ojo7o0br.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%2Fkmubb1p37dm9ojo7o0br.JPG" alt="Image of the AWS VPC management console " width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Update Route Tables (Critical Step)
&lt;/h2&gt;

&lt;p&gt;This is where many beginners get stuck.&lt;/p&gt;

&lt;p&gt;For VPC-A Route Table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Destination: 10.20.0.0/16 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Target: VPC Peering Connection &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For VPC-B Route Table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Destination: 10.10.0.0/16 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Target: VPC Peering Connection &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without this step, traffic will not flow, even though peering exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Traffic from VPC-A → VPC-B is routed through the peering connection &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Traffic from VPC-B → VPC-A follows the reverse route &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables private, secure communication between networks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the Setup
&lt;/h2&gt;

&lt;p&gt;To validate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch EC2 instances in each VPC &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use private IPs to ping between them &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If configured correctly:&lt;/p&gt;

&lt;p&gt;✔ Instances should communicate successfully&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Limitations of VPC Peering
&lt;/h2&gt;

&lt;p&gt;Understanding limitations is key:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No transitive routing (A → B → C won’t work automatically) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CIDR blocks must not overlap &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each route must be manually configured &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What This Project Teaches You
&lt;/h2&gt;

&lt;p&gt;It teaches you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How real-world architectures are segmented &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How cloud networking differs from traditional networking &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How routing enables communication &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to design secure, isolated systems &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;This setup is commonly used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connecting Dev and Production environments &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Separating application tiers &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi-team architectures &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Microservices communication across VPCs &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%2Fsfb1taggg0mmgj9xslds.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%2Fsfb1taggg0mmgj9xslds.JPG" alt="Image of the AWS cloud console" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with Sanjeev Kumar’s team, for the &lt;strong&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the link and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>ec2</category>
    </item>
    <item>
      <title>Launching a Windows Server on AWS EC2</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 25 Apr 2026 19:11:05 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/launching-a-windows-server-on-aws-ec2-1kfj</link>
      <guid>https://dev.to/ikoh_sylva/launching-a-windows-server-on-aws-ec2-1kfj</guid>
      <description>&lt;p&gt;When people start learning cloud engineering, they often begin with Linux servers and for good reason.&lt;/p&gt;

&lt;p&gt;But in real-world environments, Windows servers are just as important.&lt;/p&gt;

&lt;p&gt;From enterprise applications to legacy systems and Active Directory environments, Windows workloads are everywhere. So at some point in your cloud journey, you need to answer this question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can you confidently deploy and securely access a Windows server in the cloud?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this guide, I’ll Walk you through exactly how to do that using AWS EC2 based on a hands-on task I completed during my cloud engineering training.&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%2F6kro4335d9j8q9wfxo0w.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%2F6kro4335d9j8q9wfxo0w.JPG" alt="Image of the AWS console" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What We’ll Be Building
&lt;/h2&gt;

&lt;p&gt;In this project, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch a Windows Server EC2 instance &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy it in a public subnet &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure secure access using RDP (Remote Desktop Protocol) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restrict access to your own public IP address &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tag your instance for proper identification &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you’ll have a fully running Windows server in the cloud that you can connect to remotely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;This task teaches you several core cloud concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Compute provisioning (EC2) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Networking (public subnets) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security (security groups) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remote access (RDP) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource management (tagging) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are fundamental skills every cloud engineer must master.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Launch a New EC2 Instance
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to the AWS Management Console &lt;/li&gt;
&lt;li&gt;Navigate to EC2 Dashboard &lt;/li&gt;
&lt;li&gt;Click Launch Instance &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Choose Your AMI
&lt;/h2&gt;

&lt;p&gt;Select:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Windows Server 2019 Base (or newer) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This provides a ready-to-use Windows environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Choose Instance Type
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Select t2.micro (Free Tier eligible)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good for learning and basic testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Add Name Tag
&lt;/h2&gt;

&lt;p&gt;Give your instance a clear name, e.g.:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Name: Windows-Server-Lab&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Tagging helps with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Organization &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cost tracking &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource identification &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Configure Networking
&lt;/h2&gt;

&lt;p&gt;Make sure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The instance is in a public subnet &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto-assign Public IP is enabled &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures you can connect to it over the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Configure Security Group (Very Important)
&lt;/h2&gt;

&lt;p&gt;Create a new security group with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inbound Rule&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Type: RDP &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port: 3389 &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source: My IP &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures:&lt;/p&gt;

&lt;p&gt;✔ Only your IP can access the server&lt;br&gt;
✔ The server is not exposed to the world&lt;/p&gt;

&lt;p&gt;This is a key real-world security practice.&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%2Fuy5j0fx5qfh0m1xorlbv.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%2Fuy5j0fx5qfh0m1xorlbv.JPG" alt="Image of the AWS console" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Key Pair
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create or select an existing key pair &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the .pem file &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll need this to decrypt the Windows password later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Launch the Instance
&lt;/h2&gt;

&lt;p&gt;Click Launch Instance and wait for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Instance state → Running &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Status checks → 2/2 passed &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 9: Connect via RDP
&lt;/h2&gt;

&lt;p&gt;Once the instance is ready:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select your instance &lt;/li&gt;
&lt;li&gt;Click Connect &lt;/li&gt;
&lt;li&gt;Choose RDP Client &lt;/li&gt;
&lt;li&gt;Download the RDP file &lt;/li&gt;
&lt;li&gt;Click Get Password &lt;/li&gt;
&lt;li&gt;Upload your .pem key &lt;/li&gt;
&lt;li&gt;Decrypt the password &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then connect using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Username: Administrator &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Password: (decrypted password) &lt;br&gt;
You’re now inside your Windows server!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Opening RDP to the world (0.0.0.0/0)&lt;/strong&gt;&lt;br&gt;
This is a major security risk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Forgetting to enable public IP&lt;/strong&gt;&lt;br&gt;
You won’t be able to connect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Losing your key pair&lt;/strong&gt;&lt;br&gt;
You won’t be able to retrieve the password.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What This Project Teaches You
&lt;/h2&gt;

&lt;p&gt;This isn’t just about launching a server.&lt;br&gt;
It teaches you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How to think about security first &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How cloud networking actually works &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to connect to real infrastructure &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to manage compute resources properly &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the foundation of real-world cloud operations.&lt;/p&gt;

&lt;p&gt;Launching a Windows EC2 instance might feel like a simple task but it introduces you to critical cloud concepts that scale into enterprise environments.&lt;/p&gt;

&lt;p&gt;If you can do this confidently, you’re already building the skills needed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Manage enterprise workloads &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support cloud infrastructure &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Work in DevOps or Cloud Engineering roles&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%2F3dmsddye2qvgjaqaygsm.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%2F3dmsddye2qvgjaqaygsm.JPG" alt="Image of an AWS RDP Instance" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with Sanjeev Kumar’s team, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By signing up through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Managing Access the Right Way</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 18 Apr 2026 17:59:14 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/managing-access-the-right-way-1j5l</link>
      <guid>https://dev.to/ikoh_sylva/managing-access-the-right-way-1j5l</guid>
      <description>&lt;p&gt;When most people begin their cloud journey, they focus on launching servers, deploying apps, and building projects.&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%2Fcd5d4y6f10hksmsbl5vo.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%2Fcd5d4y6f10hksmsbl5vo.JPG" alt="Image of the aws management console" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there’s something just as important if not more:&lt;/p&gt;

&lt;h2&gt;
  
  
  Who has access to your cloud environment… and what can they do?
&lt;/h2&gt;

&lt;p&gt;This is where AWS Identity Center comes in.&lt;/p&gt;

&lt;p&gt;During my cloud engineering training, one of the foundational tasks I completed was setting up Identity Center, creating users, and assigning permissions properly. It may seem like a small step, but in reality, it’s how secure and scalable cloud environments are built.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why it matters &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to configure it &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to create users and assign permissions &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;In real-world environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Multiple engineers access AWS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Teams have different responsibilities &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security is non-negotiable &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Without proper identity management:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;❌ Anyone could access sensitive resources&lt;br&gt;
❌ Permissions could be too broad&lt;br&gt;
❌ Auditing becomes difficult&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Identity Center:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Access is controlled&lt;br&gt;
✅ Permissions are clearly defined&lt;br&gt;
✅ Security is enforced&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Enable AWS Identity Center
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to the AWS Management Console &lt;/li&gt;
&lt;li&gt;Search for “AWS Identity Center” &lt;/li&gt;
&lt;li&gt;Click Enable &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once enabled, AWS creates an Identity Center instance for your account.&lt;/p&gt;

&lt;p&gt;This is your central identity management system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a New User
&lt;/h2&gt;

&lt;p&gt;Next, you’ll create a user that can access AWS resources.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to Users &lt;/li&gt;
&lt;li&gt;Click Add user &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter: &lt;br&gt;
Username &lt;br&gt;
Email address &lt;br&gt;
First and last name &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the user &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This represents a real person (or team member) who needs access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Assign a Permission Set
&lt;/h2&gt;

&lt;p&gt;Permissions define what the user can actually do.&lt;/p&gt;

&lt;p&gt;In this task, we use a predefined job function policy:&lt;/p&gt;

&lt;p&gt;SecurityAudit&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Policy Does:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Provides read-only access &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allows users to review configurations &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ideal for auditing and compliance checks &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Steps to Assign:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to AWS Accounts &lt;/li&gt;
&lt;li&gt;Select your account &lt;/li&gt;
&lt;li&gt;Click Assign users or groups &lt;/li&gt;
&lt;li&gt;Select the user you created &lt;/li&gt;
&lt;li&gt;Choose Permission Set → SecurityAudit &lt;/li&gt;
&lt;li&gt;Complete the assignment &lt;/li&gt;
&lt;/ol&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%2Fxxrtcwdq1s7lpum8lsh8.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%2Fxxrtcwdq1s7lpum8lsh8.JPG" alt="Image of the aws management console" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How It All Comes Together
&lt;/h2&gt;

&lt;p&gt;At this point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Identity Center is enabled &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A user has been created &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Permissions have been assigned &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;p&gt;✔ The user can log in&lt;br&gt;
✔ They have controlled access&lt;br&gt;
✔ They cannot make destructive changes&lt;/p&gt;

&lt;p&gt;This is real-world security in action.&lt;/p&gt;

&lt;p&gt;This also demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Proper configuration &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Successful user creation &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Correct permission assignment &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices (What I Learned Along the Way)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Never Use Root Account for Daily Tasks&lt;br&gt;
Always use Identity Center or IAM users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Follow Least Privilege Principle&lt;br&gt;
Only grant permissions necessary for the task.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Roles Instead of Static Credentials&lt;br&gt;
Temporary access is safer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Group Users When Scaling&lt;br&gt;
Instead of assigning permissions individually, use groups.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why This Step Is Bigger Than It Looks
&lt;/h2&gt;

&lt;p&gt;This isn’t just about clicking through AWS.&lt;/p&gt;

&lt;p&gt;It teaches you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How organizations manage access &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How security is enforced at scale &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to think like a cloud engineer &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because in the real world:&lt;/p&gt;

&lt;p&gt;Security is not optional it’s foundational.&lt;br&gt;
Setting up AWS Identity Center and assigning permissions is one of those foundational skills that separates beginners from professionals.&lt;/p&gt;

&lt;p&gt;It’s not flashy but it’s critical and if you understand this, you’re not just learning cloud you’re learning how to build secure systems that people can trust.&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%2Fv8lg8v7vli347x2w07kt.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%2Fv8lg8v7vli347x2w07kt.JPG" alt="Image of the aws cloud identity center" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with Sanjeev Kumar’s team, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process with AltSchool Africa do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By signing up through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>cloudcomputing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AWS: Setting Up Your Account the Right Way</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:51:14 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/aws-setting-up-your-account-the-right-way-lbb</link>
      <guid>https://dev.to/ikoh_sylva/aws-setting-up-your-account-the-right-way-lbb</guid>
      <description>&lt;p&gt;When I began my journey into cloud engineering, one of the very first steps I took was simple but incredibly important;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up my AWS account.
&lt;/h2&gt;

&lt;p&gt;It might sound basic, but this step is the gateway into the world of cloud computing. Whether you're aiming to become a Cloud Engineer, DevOps Engineer, or Solutions Architect, your AWS account is where everything begins.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Why setting up an AWS account matters &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to create one properly &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What to expect after setup &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to verify your account (as required in real training programs) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Need an AWS Account
&lt;/h2&gt;

&lt;p&gt;Before you can deploy servers, build applications, or experiment with cloud services, you need access to a cloud platform and AWS is one of the most widely used in the world.&lt;/p&gt;

&lt;p&gt;With an AWS account, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Launch virtual servers (EC2) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Store data (S3) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build scalable applications &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Experiment with real-world cloud tools &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practice hands-on (which is critical!) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud is not theory you learn it by doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create Your AWS Account
&lt;/h2&gt;

&lt;p&gt;If you don’t already have an account, follow these steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Go to the AWS Website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visit: &lt;a href="https://aws.amazon.com" rel="noopener noreferrer"&gt;https://aws.amazon.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on “Create an AWS Account”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Enter Your Details&lt;/strong&gt;&lt;br&gt;
You’ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A valid email address (preferably personal) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A strong password &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An AWS account name (can be your name or brand) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Add Payment Information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS requires a debit/credit card for verification.&lt;/p&gt;

&lt;p&gt;💡 Don’t worry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You can stay within the Free Tier &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You won’t be charged if you use services responsibly &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Identity Verification&lt;/strong&gt;&lt;br&gt;
AWS will send a verification code to your phone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Choose a Support Plan&lt;/strong&gt;&lt;br&gt;
Select the Basic (Free) Plan&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%2Fyd1j672zop0hwg9z2a1f.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%2Fyd1j672zop0hwg9z2a1f.JPG" alt="Image of the AWS Management Console" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Log into the AWS Management Console
&lt;/h2&gt;

&lt;p&gt;Once your account is created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to the AWS Console &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sign in using your credentials &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll land on the AWS Management Console Dashboard this is your control center for everything in AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Tips for Beginners
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Stay Within Free Tier&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Free Tier includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;EC2 (750 hours/month) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;S3 storage &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RDS usage &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Always monitor usage to avoid charges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Enable Billing Alerts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up alerts to avoid surprises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to Billing Dashboard &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable notifications &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Use IAM (Don’t Stay on Root Account)&lt;br&gt;
After setup:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create an IAM user &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid using your root account daily &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a best practice used in real organizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Step Really Means
&lt;/h2&gt;

&lt;p&gt;Setting up your AWS account might feel like a small step but it’s actually a major milestone.&lt;/p&gt;

&lt;p&gt;It means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You’ve entered the cloud ecosystem &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You’re ready to build real-world projects &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You’re no longer just learning you’re doing &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every cloud engineer starts somewhere and this is where it begins.&lt;/p&gt;

&lt;p&gt;If you’ve completed this step.&lt;/p&gt;

&lt;p&gt;You now have access to one of the most powerful cloud platforms in the world.&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%2Ftg5iz06acezbyoz3rcjb.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%2Ftg5iz06acezbyoz3rcjb.JPG" alt="Image of the AWS Billing Dashboard" width="800" height="536"&gt;&lt;/a&gt;&lt;br&gt;
The next step?&lt;/p&gt;

&lt;p&gt;Start building. Break things. Fix them. Learn. Repeat.&lt;/p&gt;

&lt;p&gt;That’s how you grow. If you’ve just set up your AWS account:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Drop a comment or share your experience &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Let me know what you plan to build first &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;/p&gt;

&lt;p&gt;Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you also found this interesting and would love to take the next steps in the application process do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;signing up&lt;/a&gt; through the link and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&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%2Fhxwplexi3mbapob6kfy7.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%2Fhxwplexi3mbapob6kfy7.JPG" alt="Image of the AWS Management Console" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey here from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AltSchool Of Engineering Tinyuka’24 Month 12 Week 5</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sun, 22 Feb 2026 11:06:45 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-5-a7k</link>
      <guid>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-5-a7k</guid>
      <description>&lt;p&gt;You shouldn’t be missing the previous session’s but if you did, &lt;a href="https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-4-2bjg"&gt;here it is&lt;/a&gt;. I would love to use this medium to say a big Congratulations!!! to everyone who has supported this journey thus far Thank you.&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%2F1uh9kd06c5dzel5smkd3.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%2F1uh9kd06c5dzel5smkd3.jpg" alt="Image saying its time to say goodbye" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Heartfelt Thank You &amp;amp; A New Beginning
&lt;/h2&gt;

&lt;p&gt;I would love to take a moment to say a huge congratulations to everyone who has supported this journey in one way or another the cheers, the encouragement, the motivation to keep going even when it wasn’t getting easier, and those subtle pushes at the right moments. Every message, comment, and show of support truly mattered. Thank you.&lt;/p&gt;

&lt;p&gt;This marks the official end of my time at AltSchool, where I committed myself to the journey of becoming a world-class cloud engineer.&lt;/p&gt;

&lt;p&gt;Over the past one year 52 weeks to be precise, I have shared knowledge consistently every single week, breaking down concepts taught in class and documenting the learning process in real time. If you’ve been following closely throughout this journey, then a huge congratulations to you as well you now have a solid foundation and the tools required to succeed as a cloud engineer.&lt;/p&gt;

&lt;p&gt;This wasn’t just about completing a program. It was about building discipline, consistency, and clarity in a field that often feels overwhelming. And together, we showed up.&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%2Fg41bf601ol6tgfpw1orx.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%2Fg41bf601ol6tgfpw1orx.jpg" alt="Image of a flower bouquet" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps: Moving Forward Together
&lt;/h2&gt;

&lt;p&gt;“&lt;em&gt;This is not the end, it’s a transition.&lt;/em&gt;”&lt;br&gt;
As a community, I’d love for us to stick around as I move into the next phase: building real-world cloud engineering projects from basic to advanced. I’ll be sharing everything along the way: the wins, the challenges, the lessons learned, and the decisions made.&lt;/p&gt;

&lt;p&gt;You can expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hands-on cloud projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-world scenarios and implementations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practical insights and “nuggets of wisdom”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lessons learned from each build&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consistent posts (about 2–3 times a month, depending on project complexity)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I’m also thinking of incorporating AI and AI Agents as it relates to cloud&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, my goal is for us to build an archive of meaningful, practical cloud projects something truly valuable and worthy of recognition.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The ultimate goal is simple:&lt;/strong&gt; to help as many people as possible break into tech and cloud engineering in particular without the confusion that comes from information overload.&lt;/p&gt;

&lt;p&gt;If you show up consistently, do the work that needs to be done, and follow the guided path being laid out here, you’ll be well-equipped to thrive in whatever cloud role you find yourself in.&lt;/p&gt;

&lt;p&gt;Once again, thank you for being part of this journey. Here’s to growth, clarity, and the exciting road ahead.&lt;/p&gt;

&lt;p&gt;I encourage you to dive deeper into the concepts we've discussed over time and continue practicing to refine your skills. A Huge Congratulations! to you as this marks the end of our cloud journey with AltSchool Africa. If you also found this interesting and would love to take the next steps in the application process do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By signing up through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I would love to hear your feedback and insights. Please leave a comment below to join the conversation!&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%2Fasc10cavswrg5tvixul3.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%2Fasc10cavswrg5tvixul3.jpg" alt="Image of a photo saying goodbye" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;br&gt;
For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;br&gt;
Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>altschool</category>
      <category>altschoolafrica</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AltSchool Of Engineering Tinyuka’24 Month 12 Week 4</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sat, 14 Feb 2026 15:31:22 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-4-2bjg</link>
      <guid>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-4-2bjg</guid>
      <description>&lt;p&gt;If you missed our previous session, you can always catch up &lt;a href="https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-3-3ilm"&gt;here&lt;/a&gt;. This week, we went hands on again. This time more intermediate level with Highly Available Web Application on AWS. Let’s get to it, shall we? &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%2Fg7q5mlnsaaqxj9mmkxd4.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%2Fg7q5mlnsaaqxj9mmkxd4.jpg" alt="Image of comm. mast" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Highly Available Web Application on AWS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Project Overview
&lt;/h3&gt;

&lt;p&gt;In this project, you will design and deploy a highly available, scalable web application architecture on AWS using managed services and Infrastructure-as-Code principles.&lt;/p&gt;

&lt;p&gt;You will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Build a custom VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy EC2 instances across multiple Availability Zones&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use an Application Load Balancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement Auto Scaling&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply security best practices&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monitor the system using CloudWatch&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mirrors how production web applications are deployed in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills You Will Gain
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS networking (VPC, subnets, routing)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High availability design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load balancing and auto scaling&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security groups &amp;amp; IAM roles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic monitoring and alerting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infrastructure design thinking&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   |
Application Load Balancer
   |
-----------------------------
|                           |
EC2 (AZ-1)              EC2 (AZ-2)
   |                       |
Auto Scaling Group (ASG)
   |
CloudWatch Monitoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS account&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic Linux knowledge&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Familiarity with EC2 and VPC concepts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSH key pair&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Free Tier (mostly)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Components
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Custom VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2 public subnets (different AZs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Internet Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route Table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security Groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch Template&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto Scaling Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application Load Balancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudWatch alarms&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a Custom VPC
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CIDR block: &lt;code&gt;10.0.0.0/16&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable DNS resolution&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Network isolation&lt;/li&gt;
&lt;li&gt;Full control over routing&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Create Subnets
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Public Subnet 1: &lt;code&gt;10.0.1.0/24&lt;/code&gt; (AZ-1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Public Subnet 2: &lt;code&gt;10.0.2.0/24&lt;/code&gt; (AZ-2)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These allow traffic from the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Internet Gateway &amp;amp; Routing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Attach Internet Gateway to VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route &lt;code&gt;0.0.0.0/0&lt;/code&gt; → Internet Gateway&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables public access.&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%2Fuv585kpve1re4hst4p3n.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%2Fuv585kpve1re4hst4p3n.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Security Groups
&lt;/h2&gt;

&lt;p&gt;Load Balancer SG&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Allow HTTP (80) from anywhere&lt;br&gt;
EC2 SG&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow HTTP (80) from Load Balancer SG only&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow SSH (22) from your IP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This limits exposure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Launch Template
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Amazon Linux 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instance type: t2.micro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User data installs and starts Nginx:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
yum update -y
yum install nginx -y
systemctl start nginx
systemctl enable nginx
echo "&amp;lt;h1&amp;gt;Server running in $(hostname)&amp;lt;/h1&amp;gt;" &amp;gt; /usr/share/nginx/html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Auto Scaling Group
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Minimum: 2 instances&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desired: 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maximum: 4&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attach to public subnets&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures high availability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Application Load Balancer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Internet-facing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Listener on port 80&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Forward traffic to ASG&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test by opening the ALB DNS name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: CloudWatch Monitoring
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Monitor EC2 CPU utilization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create alarm:&lt;br&gt;
Scale out if CPU &amp;gt; 70%&lt;br&gt;
Scale in if CPU &amp;lt; 30%&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This adds automatic scaling logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expected Outcome
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Web app accessible via Load Balancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Instances spread across AZs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto scaling responds to load&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fault tolerance if one instance fails&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Is an Intermediate-Level Project
&lt;/h2&gt;

&lt;p&gt;✔ Uses multiple AWS services&lt;br&gt;
✔ Implements real architecture patterns&lt;br&gt;
✔ Introduces scaling &amp;amp; monitoring&lt;br&gt;
✔ Teaches cloud design principles&lt;br&gt;
✔ Not overly complex&lt;/p&gt;

&lt;h2&gt;
  
  
  Clean-Up (Important!)
&lt;/h2&gt;

&lt;p&gt;After testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delete Auto Scaling Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete Load Balancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminate EC2 instances&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete VPC&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid unnecessary costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional Enhancements (If You Want More)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add HTTPS (ACM)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add private subnets + NAT Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Terraform instead of Console&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Store logs in CloudWatch Logs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add S3 for static assets&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%2Fnvvjpyc92ypbo0kturym.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%2Fnvvjpyc92ypbo0kturym.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I encourage you to dive deeper into the concepts we've discussed over time and continue practicing to refine your skills. If you have read all the way to this point thank you So much! And a Huge Congratulations! to you as this marks the end of our cloud journey with AltSchool Africa. I appreciate the effort. If you also found this interesting and would love to take the next steps in the application process do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: &lt;strong&gt;W2jBG8&lt;/strong&gt; during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;Special Offer: By signing up through the &lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;link&lt;/a&gt; and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I would love to hear your feedback and insights. Please leave a comment below to join the conversation!&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;br&gt;
Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>altschool</category>
      <category>altschoolafrica</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AltSchool Of Engineering Tinyuka’24 Month 12 Week 3</title>
      <dc:creator>Ikoh Sylva</dc:creator>
      <pubDate>Sun, 08 Feb 2026 12:10:18 +0000</pubDate>
      <link>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-3-3ilm</link>
      <guid>https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-3-3ilm</guid>
      <description>&lt;p&gt;If you missed our previous session, you can always catch up &lt;a href="https://dev.to/ikoh_sylva/altschool-of-engineering-tinyuka24-month-12-week-2-2id7"&gt;here&lt;/a&gt;. This week, we are going hands on with Automated Web Server Setup with Security Hardening. Let’s get to it, shall we? &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%2Fjuam9uipjhzzfk7adzw4.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%2Fjuam9uipjhzzfk7adzw4.jpg" alt="Image of a work station" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Web Server Setup with Security Hardening
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;In this project, you will use Ansible to automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Provision and configure multiple web servers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use roles for clean project structure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install and configure Nginx&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy a dynamic HTML page using Jinja2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure the server with UFW&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable HTTPS (TLS/SSL) using Certbot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart services automatically using handlers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make the setup cloud-ready (AWS EC2 compatible)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mirrors how DevOps teams actually automate servers in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Will Learn
&lt;/h2&gt;

&lt;p&gt;By completing this project, you will understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ansible inventory management&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Playbooks and tasks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modules (apt, user, copy, service, ufw)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Idempotency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic security automation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running Ansible against multiple hosts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This introduces;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ansible Roles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handlers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jinja2 Templates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HTTPS with Certbot (Let’s Encrypt)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloud-ready structure (AWS EC2 compatible)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Control Node (Ansible)
        |
        |--- SSH
        |
-------------------------
|       |       |       |
Web1   Web2   (Optional) Web3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 Ansible control node (Linux)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2 Linux servers (Ubuntu recommended)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSH access between control node and servers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic Linux knowledge&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Structure (Industry Standard)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ansible-web-project/
├── inventory
├── playbook.yml
├── group_vars/
│   └── webservers.yml
└── roles/
    └── webserver/
        ├── tasks/
        │   └── main.yml
        ├── handlers/
        │   └── main.yml
        ├── templates/
        │   └── index.html.j2
        └── files/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 1: Inventory (Cloud-Ready)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[webservers]
web1 ansible_host=18.210.12.10
web2 ansible_host=3.92.55.23

[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=~/.ssh/aws-key.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Works locally&lt;/li&gt;
&lt;li&gt;Works on AWS EC2&lt;/li&gt;
&lt;li&gt;No changes needed later&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Variables (group_vars)
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;group_vars/webservers.yml:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app_user: appuser
http_port: 80
domain_name: example.com
email: admin@example.com
Variables make the project flexible and reusable.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Main Playbook
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;playbook.yml:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Configure Production Web Servers
  hosts: webservers
  become: yes

  roles:
    - webserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clean. Simple. Scalable.&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%2Flh18rydlp13lmohp7m79.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%2Flh18rydlp13lmohp7m79.jpg" alt="code screen" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Role Tasks
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;roles/webserver/tasks/main.yml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Update system packages
  apt:
    update_cache: yes

- name: Install required packages
  apt:
    name:
      - nginx
      - ufw
      - certbot
      - python3-certbot-nginx
    state: present

- name: Create application user
  user:
    name: "{{ app_user }}"
    shell: /bin/bash

- name: Allow HTTP and HTTPS
  ufw:
    rule: allow
    port: "{{ item }}"
  loop:
    - "80"
    - "443"

- name: Enable firewall
  ufw:
    state: enabled

- name: Deploy website template
  template:
    src: index.html.j2
    dest: /var/www/html/index.html
  notify: Restart Nginx

- name: Ensure Nginx is running
  service:
    name: nginx
    state: started
    enabled: yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Handlers (Automatic Restarts)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;roles/webserver/handlers/main.yml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Restart Nginx
  service:
    name: nginx
    state: restarted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Handlers only run when changes occur → efficient &amp;amp; safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Jinja2 Template (Dynamic Website)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;roles/webserver/templates/index.html.j2&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;{{ inventory_hostname }}&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;h1&amp;gt;🚀 Deployed with Ansible&amp;lt;/h1&amp;gt;
  &amp;lt;p&amp;gt;Server: {{ inventory_hostname }}&amp;lt;/p&amp;gt;
  &amp;lt;p&amp;gt;Managed by Ansible automation&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each server now shows its own hostname (proof of automation).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Enable HTTPS (Certbot)
&lt;/h2&gt;

&lt;p&gt;Add to &lt;code&gt;tasks/main.yml&lt;/code&gt; (after Nginx setup):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- name: Obtain SSL certificate
  command: &amp;gt;
    certbot --nginx
    -d {{ domain_name }}
    --non-interactive
    --agree-tos
    -m {{ email }}
  notify: Restart Nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Secures your site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enables HTTPS automatically&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Matches production setups&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ Requires a real domain pointing to the server IP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Run the Project
&lt;/h2&gt;

&lt;p&gt;ansible-playbook -i inventory playbook.yml&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Outcome
&lt;/h2&gt;

&lt;p&gt;✔ Web servers configured consistently&lt;br&gt;
✔ Nginx installed and secured&lt;br&gt;
✔ Firewall enabled&lt;br&gt;
✔ HTTPS enabled&lt;br&gt;
✔ Dynamic content deployed&lt;br&gt;
✔ Fully automated&lt;br&gt;
✔ Cloud-ready&lt;/p&gt;

&lt;p&gt;You now have a real DevOps-grade automation project.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS EC2 Compatibility (Important)
&lt;/h2&gt;

&lt;p&gt;This project works unchanged on AWS EC2 if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Instances allow ports 80 &amp;amp; 443&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security groups are configured&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSH key is set in inventory&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS labs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Portfolio projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interview demos&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Project Is Portfolio-Worthy
&lt;/h2&gt;

&lt;p&gt;This demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Configuration management&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security automation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infrastructure as Code principles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Production thinking&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clean Ansible design&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many junior DevOps roles expect exactly this level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Possible Upgrades (Optional)
&lt;/h2&gt;

&lt;p&gt;If you want to go even further later:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Integrate Terraform + Ansible&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add monitoring with CloudWatch/Prometheus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add CI/CD pipeline&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Ansible Vault&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Load Balancer (ALB/Nginx)&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%2Fksu0z5uucejt3996irpj.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%2Fksu0z5uucejt3996irpj.jpg" alt="A work station" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I encourage you to dive deeper into the concepts we've discussed and continue practicing to refine your skills. If you have read all the way to this point thank you So much! I appreciate the effort. If you also found this interesting and would love to take the next steps in the application process do use my referral link below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Apply here&lt;/a&gt; or use this Code: W2jBG8 during the registration process and by so doing, you will be supporting me and also getting a discount!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://portal.altschoolafrica.com/auth/signin?ref=W2jBG8" rel="noopener noreferrer"&gt;Special Offer&lt;/a&gt;: By signing up through the link and using the code shared, you’ll receive a 10% discount!&lt;/p&gt;

&lt;p&gt;Don’t miss out on this opportunity to transform your future and also save while doing it! Let’s grow together in the tech space. Also feel free to reach out if you need assistance or clarity regarding the program.&lt;/p&gt;

&lt;p&gt;I would love to hear your feedback and insights. Please leave a comment below to join the conversation!&lt;/p&gt;

&lt;p&gt;I’m also excited to share that I’ve been able to secure a special discount, in partnership with &lt;strong&gt;Sanjeev Kumar’s team&lt;/strong&gt;, for the DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/p&gt;

&lt;p&gt;For those who may not be familiar, Sanjeev Kumar brings over 20 years of hands-on experience across multiple domains and every phase of product delivery. He is known for his strong architectural mindset, with a deep focus on Automation, DevOps, Cloud, and Security.&lt;/p&gt;

&lt;p&gt;Sanjeev has extensive expertise in technology assessment, working closely with senior leadership, architects, and diverse software delivery teams to build scalable and secure systems. Beyond industry practice, he is also an active educator, running a YouTube channel dedicated to helping professionals successfully transition into DevOps and Cloud careers.&lt;/p&gt;

&lt;p&gt;This is a great opportunity for anyone looking to level up their DevOps/Cloud skills with real-world mentorship and career guidance.&lt;br&gt;
Do refer below for the link with a dedicated discount automatically applied at checkout;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://topmate.io/cloud/1541247?utm_source=sales_sylvanus&amp;amp;utm_medium=calling&amp;amp;utm_content=sales_42261" rel="noopener noreferrer"&gt;DevOps &amp;amp; Cloud Job Placement / Mentorship Program.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m Ikoh Sylva, a passionate cloud computing enthusiast with hands-on experience in AWS. I’m documenting my cloud journey from a beginner’s perspective, aiming to inspire others along the way.&lt;/p&gt;

&lt;p&gt;If you find my contents helpful, please like and follow my posts, and consider sharing this article with anyone starting their own cloud journey.&lt;/p&gt;

&lt;p&gt;Let’s connect on social media. I’d love to engage and exchange ideas with you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.linkedin.com/in/ikoh-sylva-73a208185" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;   &lt;a href="https://www.facebook.com/Ikoh.Silver" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;    &lt;a href="https://www.x.com/Ikoh_Sylva" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>altschool</category>
      <category>altschoolafrica</category>
      <category>cloud</category>
      <category>ansible</category>
    </item>
  </channel>
</rss>
