<?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: Elizabeth Adeotun Adegbaju</title>
    <description>The latest articles on DEV Community by Elizabeth Adeotun Adegbaju (@elizabethadegbaju).</description>
    <link>https://dev.to/elizabethadegbaju</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%2F309228%2F8186844a-c547-43b1-8de7-9ce1edc268ab.jpeg</url>
      <title>DEV Community: Elizabeth Adeotun Adegbaju</title>
      <link>https://dev.to/elizabethadegbaju</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elizabethadegbaju"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 25 Jan 2026 08:25:53 +0000</pubDate>
      <link>https://dev.to/elizabethadegbaju/-3250</link>
      <guid>https://dev.to/elizabethadegbaju/-3250</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/mrfrontenddev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1579581%2F5a33d405-3131-43c3-8253-19a81c938808.jpg" alt="mrfrontenddev"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/mrfrontenddev/memoization-in-react-or-how-i-thought-i-optimized-my-app-but-mostly-just-felt-productive-g72" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Memoization in React: Or How I Thought I Optimized My App (But Mostly Just Felt Productive)&lt;/h2&gt;
      &lt;h3&gt;Boluwatife Adewusi ・ Jan 8&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#performance&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>performance</category>
      <category>productivity</category>
      <category>react</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Thu, 07 Aug 2025 10:01:07 +0000</pubDate>
      <link>https://dev.to/elizabethadegbaju/-2dmc</link>
      <guid>https://dev.to/elizabethadegbaju/-2dmc</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-story__hidden-navigation-link"&gt;The Importance of Component-Based Design Systems in Engineering and Design&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/xtabel" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3410329%2F8b324ac1-a0cd-4c4d-9106-7fdea9643e5a.jpeg" alt="xtabel profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/xtabel" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Christabel Akpoguma
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Christabel Akpoguma
                
              
              &lt;div id="story-author-preview-content-2751291" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/xtabel" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3410329%2F8b324ac1-a0cd-4c4d-9106-7fdea9643e5a.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Christabel Akpoguma&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 7 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" id="article-link-2751291"&gt;
          The Importance of Component-Based Design Systems in Engineering and Design
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/uxdesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;uxdesign&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/designsystems"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;designsystems&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productdesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productdesign&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>uxdesign</category>
      <category>designsystems</category>
      <category>softwaredevelopment</category>
      <category>productdesign</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Thu, 07 Aug 2025 09:54:32 +0000</pubDate>
      <link>https://dev.to/elizabethadegbaju/-pf</link>
      <guid>https://dev.to/elizabethadegbaju/-pf</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-story__hidden-navigation-link"&gt;The Importance of Component-Based Design Systems in Engineering and Design&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/xtabel" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3410329%2F8b324ac1-a0cd-4c4d-9106-7fdea9643e5a.jpeg" alt="xtabel profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/xtabel" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Christabel Akpoguma
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Christabel Akpoguma
                
              
              &lt;div id="story-author-preview-content-2751291" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/xtabel" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3410329%2F8b324ac1-a0cd-4c4d-9106-7fdea9643e5a.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Christabel Akpoguma&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 7 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" id="article-link-2751291"&gt;
          The Importance of Component-Based Design Systems in Engineering and Design
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/uxdesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;uxdesign&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/designsystems"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;designsystems&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productdesign"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productdesign&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/xtabel/the-importance-of-component-based-design-systems-in-engineering-and-design-4n50#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>uxdesign</category>
      <category>designsystems</category>
      <category>softwaredevelopment</category>
      <category>productdesign</category>
    </item>
    <item>
      <title>I took the AWS Solutions Architect Professional again after 3 years. Here's what changed</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Tue, 05 Aug 2025 06:47:55 +0000</pubDate>
      <link>https://dev.to/aws-builders/i-took-the-aws-solutions-architect-professional-again-after-3-years-heres-what-changed-23oi</link>
      <guid>https://dev.to/aws-builders/i-took-the-aws-solutions-architect-professional-again-after-3-years-heres-what-changed-23oi</guid>
      <description>&lt;p&gt;&lt;em&gt;Yes, that’s an AWS-branded loaf. No, it didn’t help me pass the cert&lt;/em&gt; 😝&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was different this time around?&lt;/strong&gt;&lt;br&gt;
Me. &lt;em&gt;I&lt;/em&gt; was different.&lt;/p&gt;

&lt;p&gt;This was my first certification renewal, and the first thing that came to mind after passing was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't let anyone discourage you from getting certified in a particular field.&lt;/strong&gt;&lt;br&gt;
Listen to someone who has taken - and passed - that exam at least twice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why does that matter?&lt;/strong&gt;&lt;br&gt;
Because they’ve taken it at different points in their journey - maybe early on, maybe after years of hands-on experience - and can give you a more accurate take on whether that certification truly tests &lt;em&gt;real-world expertise&lt;/em&gt; or not.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Take
&lt;/h2&gt;

&lt;p&gt;I remember the first time I passed the &lt;strong&gt;AWS Solutions Architect - Professional&lt;/strong&gt; exam.&lt;br&gt;
It felt like I had just walked through fire.&lt;/p&gt;

&lt;p&gt;It was the toughest exam I had taken at the time, and I didn’t have much production-grade AWS experience (I even had to do a lot of practice labs for some services). I was practically shouting to anyone who would listen:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I can’t believe I passed that. It was so hard.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fast forward to the renewal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Yeah, I could write that again tomorrow.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because now? I know a lot more than I did three years ago.&lt;br&gt;
Studying felt smooth. Effortless, even.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do you catch my drift?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If your certification renewal feels just as hard as the first time, the only acceptable reason should be that you’ve barely worked in that domain since. That’s fair. Otherwise, it shouldn’t feel like you're starting from scratch.&lt;/p&gt;

&lt;p&gt;Some people downplay certifications. They say it’s just paper.&lt;/p&gt;

&lt;p&gt;But I see it differently, especially now.&lt;br&gt;
This renewal wasn’t about proving anything to others.&lt;br&gt;
&lt;strong&gt;It was for me.&lt;/strong&gt;&lt;br&gt;
To validate that I’m still sharp, still growing, and still deeply connected to the work I do.&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%2Flb9y4b5xmicl4srkrmv0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flb9y4b5xmicl4srkrmv0.jpeg" alt="Me in my Gold Jacket ;)" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you renewed any cloud certifications recently?&lt;br&gt;
How different did it feel from the first time?&lt;br&gt;
I’d love to hear your experience in the comments.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>learning</category>
      <category>certification</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 18: Building a Serverless Coffee Shop Backend</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 03 Aug 2025 20:11:10 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-18-building-a-serverless-coffee-shop-backend-4mkp</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-18-building-a-serverless-coffee-shop-backend-4mkp</guid>
      <description>&lt;p&gt;In this session of AWS Cloud Path, we try our hands at building a serverless backend for a coffee shop ordering system using AWS Step Functions, Lambda, DynamoDB, and EventBridge. The system handles order processing, barista notifications, and order status updates in a completely serverless architecture. Check out the workshop here: &lt;a href="https://catalog.workshops.aws/serverlesspresso/en-US" rel="noopener noreferrer"&gt;Serverlesspresso Workshop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Missed the session? Catch up here:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/s14xgOSPabk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;AWS Account with appropriate permissions&lt;/li&gt;
&lt;li&gt;Basic understanding of serverless architecture&lt;/li&gt;
&lt;li&gt;Familiarity with AWS services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Coffee Shop System Overview
&lt;/h2&gt;

&lt;p&gt;The application consists of three front-end components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Overhead monitor display&lt;/li&gt;
&lt;li&gt;Barista application&lt;/li&gt;
&lt;li&gt;Customer ordering application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The backend system needs to handle requests from all these front-ends while managing different data payloads for each interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;QR code-based ordering system with limits (10 drinks/5 minutes)&lt;/li&gt;
&lt;li&gt;Barista queue management (maximum 20 drinks at a time)&lt;/li&gt;
&lt;li&gt;Real-time order status updates&lt;/li&gt;
&lt;li&gt;Shop status management (open/closed)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building the Workflow with AWS Step Functions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Initial Setup
&lt;/h3&gt;

&lt;p&gt;The workflow begins by checking two crucial conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the shop is open&lt;/li&gt;
&lt;li&gt;If the barista queue has capacity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We implement this using AWS Step Functions state machine with the following components:&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;"Comment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Coffee Shop Order Processing Workflow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"StartAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CheckShopStatus"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"States"&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;"CheckShopStatus"&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;"Type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Task"&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:states:::dynamodb:getItem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Parameters"&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;"TableName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"serverless-coffee-config"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Key"&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;"pk"&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="nl"&gt;"S"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"config"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"sk"&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="nl"&gt;"S"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shop"&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;"Next"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"IsShopOpen"&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="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Additional&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;states&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;follow&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;h3&gt;
  
  
  2. Shop Status Verification
&lt;/h3&gt;

&lt;p&gt;The workflow first queries DynamoDB to check if the shop is open. This is implemented as a choice state that branches based on the shop's status:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If shop is closed: Emit event via EventBridge&lt;/li&gt;
&lt;li&gt;If shop is open: Proceed to capacity check&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Capacity Management
&lt;/h3&gt;

&lt;p&gt;The system checks if the barista queue has capacity by listing current Step Functions executions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maximum limit: 20 drinks in queue&lt;/li&gt;
&lt;li&gt;Uses Step Functions List Executions API&lt;/li&gt;
&lt;li&gt;Implements capacity verification before accepting new orders&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Order Number Generation
&lt;/h3&gt;

&lt;p&gt;When an order is accepted, we generate a unique order number using DynamoDB:&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;"TableName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"counting-table"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Key"&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;"id"&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="nl"&gt;"S"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"orderId"&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;"UpdateExpression"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SET id_value = id_value + :inc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ExpressionAttributeValues"&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;":inc"&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="nl"&gt;"N"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1"&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;"ReturnValues"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ALL_NEW"&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;h3&gt;
  
  
  5. Event-Driven Communication
&lt;/h3&gt;

&lt;p&gt;The workflow uses EventBridge for event-driven communication:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order started events&lt;/li&gt;
&lt;li&gt;Shop status updates&lt;/li&gt;
&lt;li&gt;Order completion notifications&lt;/li&gt;
&lt;li&gt;Error handling events&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Timeout Management
&lt;/h3&gt;

&lt;p&gt;The system implements two crucial timeout scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer timeout: 900 seconds (15 minutes) for order placement&lt;/li&gt;
&lt;li&gt;Barista timeout: 900 seconds for order preparation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each timeout is handled with appropriate error states and event emissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Error Handling
&lt;/h2&gt;

&lt;p&gt;The workflow implements comprehensive error handling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer timeouts&lt;/li&gt;
&lt;li&gt;Barista timeouts&lt;/li&gt;
&lt;li&gt;Shop closure scenarios&lt;/li&gt;
&lt;li&gt;Queue capacity issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each error case emits specific events that can be handled by other components of the system.&lt;/p&gt;

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

&lt;p&gt;To test callbacks in the workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# For successful completion&lt;/span&gt;
aws stepfunctions send-task-success &lt;span class="nt"&gt;--task-token&lt;/span&gt; &amp;lt;TASK_TOKEN&amp;gt; &lt;span class="nt"&gt;--task-output&lt;/span&gt; &lt;span class="s2"&gt;"{}"&lt;/span&gt;

&lt;span class="c"&gt;# For failure scenarios&lt;/span&gt;
aws stepfunctions send-task-failure &lt;span class="nt"&gt;--task-token&lt;/span&gt; &amp;lt;TASK_TOKEN&amp;gt; &lt;span class="nt"&gt;--error&lt;/span&gt; &lt;span class="s2"&gt;"Error.Type"&lt;/span&gt; &lt;span class="nt"&gt;--cause&lt;/span&gt; &lt;span class="s2"&gt;"Error description"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;In the next session, we'll focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connecting front-end applications&lt;/li&gt;
&lt;li&gt;Testing the complete system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The completed backend will provide a robust foundation for the coffee shop ordering system, handling everything from order placement to completion in a serverless architecture.&lt;/p&gt;

&lt;p&gt;Remember to check your AWS free tier status before deploying, as the total cost for these services should be under $1 with free tier benefits.&lt;/p&gt;

&lt;p&gt;Happy coding! ☕️&lt;/p&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
      <category>tutorial</category>
      <category>cloud</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 17: How to Configure AWS Client VPN</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 03 Aug 2025 19:15:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-17-how-to-configure-aws-client-vpn-383g</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-17-how-to-configure-aws-client-vpn-383g</guid>
      <description>&lt;p&gt;Welcome to another technical tutorial in the AWS Cloud Path series! In this guide, we'll walk through the process of setting up AWS Client VPN, a fully managed remote access VPN solution that enables secure access to your AWS resources from anywhere.&lt;/p&gt;

&lt;p&gt;Missed the session? Catch up here:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/_PQSmQnVtS8"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;An AWS account with necessary permissions&lt;/li&gt;
&lt;li&gt;Basic understanding of VPC and networking concepts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding AWS Client VPN
&lt;/h2&gt;

&lt;p&gt;Before diving into the setup, let's understand what AWS Client VPN is and how it differs from Site-to-Site VPN:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Client VPN&lt;/strong&gt; is designed for individual remote access from anywhere&lt;/li&gt;
&lt;li&gt;Unlike Site-to-Site VPN, it doesn't require a customer gateway or fixed location&lt;/li&gt;
&lt;li&gt;It's ideal for remote workers who need secure access to AWS resources&lt;/li&gt;
&lt;li&gt;Supports both mutual authentication and user-based authentication methods&lt;/li&gt;
&lt;li&gt;Fully elastic and automatically scales based on demand&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The setup we'll be creating includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A VPC with CIDR block 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;4 private subnets:

&lt;ul&gt;
&lt;li&gt;2 subnets for RDS databases&lt;/li&gt;
&lt;li&gt;2 subnets for Client VPN endpoints&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Client VPN endpoint with associated Elastic Network Interfaces&lt;/li&gt;

&lt;li&gt;Certificate management through AWS Certificate Manager (ACM)&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step-by-Step Configuration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Generate and Import Certificates
&lt;/h3&gt;

&lt;p&gt;First, we need to create and import the necessary certificates:&lt;/p&gt;

&lt;p&gt;a. Clone the OpenVPN easy-rsa repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/OpenVPN/easy-rsa.git
&lt;span class="nb"&gt;cd &lt;/span&gt;easy-rsa/easyrsa3
./easyrsa init-pki
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;b. Generate the server certificate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c. Import certificates to AWS Certificate Manager (ACM):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to ACM in the AWS Console&lt;/li&gt;
&lt;li&gt;Click "Import Certificate"&lt;/li&gt;
&lt;li&gt;Import the certificate body, private key, and certificate chain&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Create the VPC Infrastructure
&lt;/h3&gt;

&lt;p&gt;Set up your VPC with the following configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CIDR block: &lt;code&gt;10.0.0.0/16&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;4 private subnets across 2 availability zones:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - RDS subnet 1: 10.0.2.0/24
  - RDS subnet 2: 10.0.4.0/24
  - Client VPN subnet 1: 10.0.6.0/24
  - Client VPN subnet 2: 10.0.8.0/24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Create Client VPN Endpoint
&lt;/h3&gt;

&lt;p&gt;a. Navigate to VPC → Client VPN Endpoints&lt;br&gt;
b. Click "Create Client VPN Endpoint"&lt;br&gt;
c. Configure the following settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Name tag: AWS-Client-VPN
- Client IPv4 CIDR: Choose an unused CIDR block
- Server certificate: Select the certificate imported to ACM
- Authentication: Choose Mutual Authentication
- Client certificate: Select the client certificate
- Enable split-tunnel routing
- Select your VPC and subnets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Configure Security and Routing
&lt;/h3&gt;

&lt;p&gt;a. Associate target networks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the Client VPN subnets&lt;/li&gt;
&lt;li&gt;Wait for association to complete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;b. Add authorization rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure network access&lt;/li&gt;
&lt;li&gt;Set up routing tables for VPC access&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Download and Configure Client
&lt;/h3&gt;

&lt;p&gt;a. Download the Client VPN configuration file from the AWS Console&lt;br&gt;
b. Install AWS Client VPN desktop application&lt;br&gt;
c. Import the configuration file&lt;br&gt;
d. Connect using the client certificate&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices and Considerations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always use strong authentication methods&lt;/li&gt;
&lt;li&gt;Regularly rotate certificates&lt;/li&gt;
&lt;li&gt;Implement least privilege access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cost Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable split-tunnel to reduce data transfer costs&lt;/li&gt;
&lt;li&gt;Monitor connection usage&lt;/li&gt;
&lt;li&gt;Consider connection timeout settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Associate endpoints with multiple subnets for high availability&lt;/li&gt;
&lt;li&gt;Configure DNS servers appropriately&lt;/li&gt;
&lt;li&gt;Monitor connection quality&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting Tips
&lt;/h2&gt;

&lt;p&gt;Connection Issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify certificate validity&lt;/li&gt;
&lt;li&gt;Check subnet associations&lt;/li&gt;
&lt;li&gt;Confirm security group rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Access Problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify authorization rules&lt;/li&gt;
&lt;li&gt;Check routing tables&lt;/li&gt;
&lt;li&gt;Validate client configuration&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;AWS Client VPN provides a secure and scalable solution for remote access to your AWS resources. By following this guide, you've learned how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up certificates for authentication&lt;/li&gt;
&lt;li&gt;Create and configure a Client VPN endpoint&lt;/li&gt;
&lt;li&gt;Associate networks and configure routing&lt;/li&gt;
&lt;li&gt;Set up client access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The setup we've covered provides a foundation for secure remote access to your AWS resources. You can further customize the configuration based on your specific security and access requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implement user-based authentication with AWS IAM&lt;/li&gt;
&lt;li&gt;Set up connection logging and monitoring&lt;/li&gt;
&lt;li&gt;Configure additional security features like multi-factor authentication&lt;/li&gt;
&lt;li&gt;Integrate with your existing identity provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember to review the &lt;a href="https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/what-is.html" rel="noopener noreferrer"&gt;AWS Client VPN documentation&lt;/a&gt; for detailed information about advanced features and configurations.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 16: AWS Networking Workshop Part 6 (Final) -Understanding AWS Gateway Load Balancer</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 03 Aug 2025 18:44:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-16-aws-networking-workshop-part-6-final-understanding-aws-gateway-load-3df8</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-16-aws-networking-workshop-part-6-final-understanding-aws-gateway-load-3df8</guid>
      <description>&lt;p&gt;In this hands-on session on AWS networking, we'll explore AWS Gateway Load Balancer (GWLB) and understand its role in managing network traffic and security appliances.&lt;/p&gt;

&lt;p&gt;Missed the session? Catch up here:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/3hQZrNr5Nyg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;An AWS account with administrative access&lt;/li&gt;
&lt;li&gt;Basic understanding of AWS VPC and networking concepts&lt;/li&gt;
&lt;li&gt;Familiarity with AWS Console navigation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding AWS Gateway Load Balancer
&lt;/h2&gt;

&lt;p&gt;AWS Gateway Load Balancer (GWLB) is a unique type of load balancer specifically designed to help you deploy, scale, and manage your third-party virtual appliances. It's particularly useful when working with security appliances and other network virtual appliances.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Characteristics
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Network Layer Operation&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GWLB operates at Layer 3/4 (Layer 3 Gateway + Layer 4 Load Balancing) of the OSI model&lt;/li&gt;
&lt;li&gt;This differs from Application Load Balancer (Layer 7) and Network Load Balancer (Layer 4)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;5-Tuple Hash&lt;/strong&gt;:&lt;br&gt;
GWLB uses a 5-tuple hash to select targets and ensure flow stickiness. The components include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source IP address&lt;/li&gt;
&lt;li&gt;Source port&lt;/li&gt;
&lt;li&gt;Destination IP address&lt;/li&gt;
&lt;li&gt;Destination port&lt;/li&gt;
&lt;li&gt;IP protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GENEVE Protocol&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GWLB uses GENEVE protocol for encapsulating traffic&lt;/li&gt;
&lt;li&gt;This enables the preservation of flow information and additional metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  VPC Endpoints Integration
&lt;/h3&gt;

&lt;p&gt;A crucial aspect of GWLB is its integration with VPC endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GWLB creates VPC endpoints (GWLBe) for connectivity&lt;/li&gt;
&lt;li&gt;These endpoints allow internal connections without traversing the public internet&lt;/li&gt;
&lt;li&gt;You need to configure proper routing to utilize these endpoints effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up Gateway Load Balancer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Creating the Load Balancer
&lt;/h3&gt;

&lt;p&gt;To create a Gateway Load Balancer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to EC2 &amp;gt; Load Balancers&lt;/li&gt;
&lt;li&gt;Choose "Create Load Balancer"&lt;/li&gt;
&lt;li&gt;Select "Gateway Load Balancer"&lt;/li&gt;
&lt;li&gt;Configure basic settings:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Name: gwlb-firewall (or your preferred name)
   Scheme: IPv4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Target Group Configuration
&lt;/h3&gt;

&lt;p&gt;Create a target group for your GWLB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type: Instances
Protocol: GENEVE
Port: 6081 (default)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. VPC Endpoint Service
&lt;/h3&gt;

&lt;p&gt;Create a VPC endpoint service for your GWLB:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC &amp;gt; Endpoint Services&lt;/li&gt;
&lt;li&gt;Create endpoint service&lt;/li&gt;
&lt;li&gt;Select your GWLB&lt;/li&gt;
&lt;li&gt;Configure acceptance settings based on your requirements&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4. VPC Endpoints
&lt;/h3&gt;

&lt;p&gt;Create VPC endpoints to connect your GWLB:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC &amp;gt; Endpoints&lt;/li&gt;
&lt;li&gt;Create endpoint&lt;/li&gt;
&lt;li&gt;Select "GatewayLoadBalancer" as the service type&lt;/li&gt;
&lt;li&gt;Choose appropriate VPC and subnets&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5. Route Table Configuration
&lt;/h3&gt;

&lt;p&gt;Configure your route tables to direct traffic through the GWLB endpoints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC &amp;gt; Route Tables&lt;/li&gt;
&lt;li&gt;Edit routes to point specific traffic to your GWLB endpoints&lt;/li&gt;
&lt;li&gt;Ensure proper routing between your VPCs and the security VPC&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;High Availability&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy across multiple Availability Zones&lt;/li&gt;
&lt;li&gt;Use multiple endpoints for redundancy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement proper security group rules&lt;/li&gt;
&lt;li&gt;Consider using endpoint acceptance requirements in production&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintain detailed documentation of your network architecture&lt;/li&gt;
&lt;li&gt;Document all IP ranges and routing configurations&lt;/li&gt;
&lt;li&gt;Keep track of endpoint IDs and associations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Monitoring and Troubleshooting
&lt;/h2&gt;

&lt;p&gt;When working with GWLB, keep an eye on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Endpoint health status&lt;/li&gt;
&lt;li&gt;Target group health&lt;/li&gt;
&lt;li&gt;Traffic flow patterns&lt;/li&gt;
&lt;li&gt;Route table configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Issues and Solutions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Endpoint Connection Issues&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify route table configurations&lt;/li&gt;
&lt;li&gt;Check security group rules&lt;/li&gt;
&lt;li&gt;Ensure proper subnet associations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traffic Flow Problems&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify 5-tuple hash configurations&lt;/li&gt;
&lt;li&gt;Check endpoint service settings&lt;/li&gt;
&lt;li&gt;Review target group health&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;To deepen your understanding of AWS networking:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Explore the AWS Networking Workshop: &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;https://networking.workshop.aws/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Practice implementing different security appliances with GWLB&lt;/li&gt;
&lt;li&gt;Learn about integration with third-party security solutions&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;AWS Gateway Load Balancer provides a powerful way to manage and scale your network security appliances. While it requires careful planning and configuration, it offers robust capabilities for handling network traffic and security requirements in your AWS infrastructure.&lt;/p&gt;

&lt;p&gt;Remember that networking configurations, especially in production environments, should be thoroughly tested and documented. Take time to understand the traffic flow and security implications of your GWLB implementation.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 15: AWS Networking Workshop Part 5 - Hybrid DNS with Route 53 Resolver, Network Monitoring and VPC Flow Logs</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 03 Aug 2025 10:42:02 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-15-aws-networking-workshop-part-5-network-monitoring-and-vpc-flow-logs-2j9e</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-15-aws-networking-workshop-part-5-network-monitoring-and-vpc-flow-logs-2j9e</guid>
      <description>&lt;p&gt;Missed the session? Catch up here:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/50fSIKO5jFg"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Welcome to Week 15 of the AWS Cloud Path series! In this comprehensive workshop, we dive deep into AWS network monitoring capabilities, focusing on Route 53 Resolver for hybrid DNS, CloudWatch monitoring, and VPC Flow Logs. This session builds upon the foundational AWS networking workshop available at &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;https://networking.workshop.aws/&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Before starting this workshop, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS account with appropriate permissions&lt;/li&gt;
&lt;li&gt;Basic understanding of VPC and networking concepts&lt;/li&gt;
&lt;li&gt;Familiarity with CloudFormation templates&lt;/li&gt;
&lt;li&gt;Access to AWS CLI or AWS Console&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hybrid DNS with Route 53 Resolver
&lt;/h2&gt;

&lt;p&gt;DNS resolution is fundamental to any internet-connected infrastructure. When working with hybrid cloud environments, you need seamless DNS resolution between your on-premises infrastructure and AWS environments without routing traffic through the public internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Route 53 Resolver
&lt;/h3&gt;

&lt;p&gt;Route 53 Resolver makes hybrid cloud easier for enterprise customers by enabling DNS resolution across connected environments. The key components include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outbound Endpoints&lt;/strong&gt;: These are Elastic Network Interfaces (ENIs) that forward DNS queries from your AWS environment to on-premises DNS servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Elastic Network Interfaces&lt;/strong&gt;: Remember that ENIs always have IP addresses, so when planning your VPC subnets, account for the IP addresses that AWS resources using network interfaces will consume.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting Up Outbound Endpoints
&lt;/h3&gt;

&lt;p&gt;To create an outbound endpoint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to Route 53 in the AWS Console&lt;/li&gt;
&lt;li&gt;Under Resolver, select "Outbound endpoints"&lt;/li&gt;
&lt;li&gt;Click "Create outbound endpoint"&lt;/li&gt;
&lt;li&gt;Configure the following:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint name&lt;/strong&gt;: Choose a descriptive name&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC&lt;/strong&gt;: Select the VPC connected to your on-premises environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security group&lt;/strong&gt;: Note that you cannot change this after creation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP address type&lt;/strong&gt;: Choose IPv4, IPv6, or dual stack (IPv4 recommended)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability zones&lt;/strong&gt;: Minimum of two for high availability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP addresses&lt;/strong&gt;: Specify automatic assignment or manual IP addresses&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The endpoint creates network interfaces in at least two availability zones for redundancy. This ensures your DNS resolution remains available even if one AZ experiences issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Resolver Rules
&lt;/h3&gt;

&lt;p&gt;After setting up the outbound endpoint, create resolver rules to define which domain names should be forwarded:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Route 53 Resolver Rules&lt;/li&gt;
&lt;li&gt;Click "Create rule"&lt;/li&gt;
&lt;li&gt;Configure:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rule name&lt;/strong&gt;: Descriptive identifier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule type&lt;/strong&gt;: Forward (most common)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain name&lt;/strong&gt;: The domain to resolve (e.g., example.corp)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outbound endpoint&lt;/strong&gt;: Select your created endpoint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target IP addresses&lt;/strong&gt;: IP address of your on-premises DNS server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC associations&lt;/strong&gt;: Select VPCs that should use this rule&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This configuration ensures that whenever resources in associated VPCs need to resolve the specified domain, they'll forward the request through your outbound endpoint to the on-premises DNS server.&lt;/p&gt;

&lt;h2&gt;
  
  
  CloudWatch Monitoring for Networks
&lt;/h2&gt;

&lt;p&gt;CloudWatch is the central monitoring service in AWS, supporting metrics from virtually every AWS service including networking components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatic Dashboards
&lt;/h3&gt;

&lt;p&gt;CloudWatch provides automatic dashboards for various services, including VPC networking. These pre-configured dashboards show key metrics without manual setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Active connection counts&lt;/li&gt;
&lt;li&gt;Packet drop counts&lt;/li&gt;
&lt;li&gt;Network interface utilization&lt;/li&gt;
&lt;li&gt;Transit Gateway metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To access automatic dashboards:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to CloudWatch Console&lt;/li&gt;
&lt;li&gt;Select "Dashboards" from the left menu&lt;/li&gt;
&lt;li&gt;Choose "Automatic dashboards"&lt;/li&gt;
&lt;li&gt;Select "VPC and Transit Gateway" or relevant service&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Creating Custom Dashboards
&lt;/h3&gt;

&lt;p&gt;While automatic dashboards are convenient, custom dashboards allow you to focus on specific metrics relevant to your environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Custom Network Dashboard:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to CloudWatch → Dashboards&lt;/li&gt;
&lt;li&gt;Click "Create dashboard"&lt;/li&gt;
&lt;li&gt;Add widgets by selecting metrics:

&lt;ul&gt;
&lt;li&gt;Navigate to EC2 → Per-Instance Metrics&lt;/li&gt;
&lt;li&gt;Filter by "Network" to find network-related metrics&lt;/li&gt;
&lt;li&gt;Select NetworkIn and NetworkOut for specific instances&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Configure visualization (line chart, number, gauge)&lt;/li&gt;
&lt;li&gt;Name your dashboard appropriately&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pro tip&lt;/strong&gt;: Custom dashboards become essential when presenting metrics to management or when you need to monitor specific combinations of metrics not available in automatic dashboards.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting Up CloudWatch Alarms
&lt;/h3&gt;

&lt;p&gt;Alarms help you proactively monitor your infrastructure and respond to issues before they impact users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Network Alarm:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to CloudWatch → Alarms → All alarms&lt;/li&gt;
&lt;li&gt;Click "Create alarm"&lt;/li&gt;
&lt;li&gt;Select metric (e.g., EC2 → Per-Instance Metrics → NetworkIn)&lt;/li&gt;
&lt;li&gt;Configure conditions:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Statistic&lt;/strong&gt;: Maximum, Average, or Sum (pay attention to which is appropriate)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Period&lt;/strong&gt;: 1 minute for immediate response, longer for trend analysis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threshold type&lt;/strong&gt;: Static (you define value) vs Anomaly detection (AWS learns normal patterns)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Condition&lt;/strong&gt;: Greater than, less than specific value&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;SNS Integration:&lt;/strong&gt;&lt;br&gt;
Configure Simple Notification Service (SNS) for alarm notifications:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create new SNS topic or use existing&lt;/li&gt;
&lt;li&gt;Add email endpoints for notifications&lt;/li&gt;
&lt;li&gt;Configure alarm states (In alarm, OK, Insufficient data)&lt;/li&gt;
&lt;li&gt;Set up actions like auto-scaling or Lambda functions for automated responses&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Always confirm your email subscription to receive alarm notifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  VPC Flow Logs
&lt;/h2&gt;

&lt;p&gt;VPC Flow Logs capture information about IP traffic flowing through your VPC network interfaces, providing visibility into network communication patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Flow Logs
&lt;/h3&gt;

&lt;p&gt;Flow Logs monitor traffic to and from network interfaces within your VPC. Since every AWS resource with network connectivity uses an Elastic Network Interface, Flow Logs provide comprehensive network visibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key capabilities:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor traffic patterns within your VPC&lt;/li&gt;
&lt;li&gt;Debug network connectivity issues&lt;/li&gt;
&lt;li&gt;Analyze security group and NACL effectiveness&lt;/li&gt;
&lt;li&gt;Track data transfer for cost optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setting Up VPC Flow Logs
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create CloudWatch Log Group&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to CloudWatch → Log groups&lt;/li&gt;
&lt;li&gt;Click "Create log group"&lt;/li&gt;
&lt;li&gt;Configure:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;networking-workshop-flow-logs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention setting&lt;/strong&gt;: Set realistic retention (1 week, 1 month) - avoid "Never expire" to control costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log class&lt;/strong&gt;: Standard for frequently accessed logs, Infrequent Access for cost savings&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Flow Log&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to VPC Console&lt;/li&gt;
&lt;li&gt;Select your VPC&lt;/li&gt;
&lt;li&gt;Navigate to "Flow logs" tab&lt;/li&gt;
&lt;li&gt;Click "Create flow log"&lt;/li&gt;
&lt;li&gt;Configure:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: Descriptive identifier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter&lt;/strong&gt;: All traffic (recommended for comprehensive monitoring)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximum aggregation interval&lt;/strong&gt;: 1 minute for detailed monitoring, 10 minutes for cost optimization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Destination&lt;/strong&gt;: CloudWatch Logs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log group&lt;/strong&gt;: Select created log group&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM role&lt;/strong&gt;: Use existing or create new service role&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Analyzing Flow Logs with CloudWatch Insights
&lt;/h3&gt;

&lt;p&gt;CloudWatch Logs Insights provides a query language for analyzing log data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to CloudWatch → Logs Insights&lt;/li&gt;
&lt;li&gt;Select your flow logs log group&lt;/li&gt;
&lt;li&gt;Use sample queries or create custom queries:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fields @timestamp, srcaddr, dstaddr, srcport, dstport, bytes
| filter srcaddr like /10.0/
| stats sum(bytes) by srcaddr, dstaddr
| sort bytes desc
| limit 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query shows the top 10 source/destination pairs by bytes transferred.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify top talkers in your network&lt;/li&gt;
&lt;li&gt;Analyze traffic patterns by time&lt;/li&gt;
&lt;li&gt;Debug connectivity issues&lt;/li&gt;
&lt;li&gt;Monitor for unusual network activity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cost Optimization Tips
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Flow Logs can generate significant costs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set appropriate retention periods&lt;/li&gt;
&lt;li&gt;Use selective filtering (accepted/rejected traffic only)&lt;/li&gt;
&lt;li&gt;Consider log aggregation intervals&lt;/li&gt;
&lt;li&gt;Monitor log group size regularly&lt;/li&gt;
&lt;li&gt;Delete unnecessary log groups&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Generating Test Traffic
&lt;/h2&gt;

&lt;p&gt;To validate your monitoring setup, generate network traffic between instances:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Session Manager:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect to EC2 instance via Systems Manager Session Manager&lt;/li&gt;
&lt;li&gt;Use networking tools like ping or iperf3&lt;/li&gt;
&lt;li&gt;Generate traffic between VPCs through Transit Gateway&lt;/li&gt;
&lt;li&gt;Monitor resulting metrics and logs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Security Group Configuration:&lt;/strong&gt;&lt;br&gt;
Ensure security groups allow the traffic you're trying to generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ICMP for ping traffic&lt;/li&gt;
&lt;li&gt;Specific ports for application traffic&lt;/li&gt;
&lt;li&gt;Proper source/destination configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid DNS&lt;/strong&gt;: Route 53 Resolver enables seamless DNS resolution between AWS and on-premises environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring Strategy&lt;/strong&gt;: Combine automatic dashboards with custom dashboards tailored to your specific needs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proactive Alerting&lt;/strong&gt;: Set up CloudWatch alarms with appropriate thresholds and SNS notifications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network Visibility&lt;/strong&gt;: VPC Flow Logs provide comprehensive insight into network traffic patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Management&lt;/strong&gt;: Always set realistic retention periods and monitor log storage costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: Generate test traffic to validate your monitoring and alerting setup&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cleanup Instructions
&lt;/h2&gt;

&lt;p&gt;Don't forget to clean up resources to avoid unexpected charges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete EC2 instances&lt;/li&gt;
&lt;li&gt;Remove VPC Flow Logs&lt;/li&gt;
&lt;li&gt;Delete CloudWatch log groups with short retention needs&lt;/li&gt;
&lt;li&gt;Clean up SNS topics and subscriptions&lt;/li&gt;
&lt;li&gt;Remove unnecessary CloudWatch dashboards and alarms&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This completes the foundational AWS Networking Workshop series, we will have one more part for the AWS Network Workshop Parts (6 in total). &lt;/p&gt;

&lt;p&gt;For AWS credits to support your learning and experimentation, check the community resources or reach out through the appropriate channels.&lt;/p&gt;

&lt;p&gt;Remember: The foundation you've built here with VPC networking, monitoring, and DNS resolution forms the basis for more advanced AWS networking topics. Practice these concepts and experiment with different configurations to deepen your understanding.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is based on the AWS Networking Workshop available at &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;https://networking.workshop.aws/&lt;/a&gt;. The visual demonstrations and hands-on examples from the video provide additional context beyond what can be represented in text format.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>cloudwatch</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 14: AWS Networking Workshop Part 4 - Advanced Networking with Transit Gateway and VPN</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sun, 03 Aug 2025 01:15:08 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-14-aws-networking-workshop-part-4-advanced-networking-with-transit-gateway-417a</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-14-aws-networking-workshop-part-4-advanced-networking-with-transit-gateway-417a</guid>
      <description>&lt;p&gt;Welcome to the continuation of our comprehensive AWS Networking journey! This session marks Week 14 of the AWS Cloud Path, diving deep into advanced networking concepts and practical implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missed the session? Catch up here:
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/p-92EO-31Nc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites and Workshop Setup
&lt;/h2&gt;

&lt;p&gt;Before diving into the advanced networking concepts, this session dedicates significant time to environment preparation. The workshop begins with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CloudFormation Template Deployment&lt;/strong&gt;: The first 30 minutes focus on deploying the prerequisite environment using CloudFormation templates. This foundational setup is crucial for the hands-on activities that follow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Setup Issues&lt;/strong&gt;: The session addresses typical deployment challenges and provides troubleshooting guidance for common CloudFormation stack creation problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workshop Overview
&lt;/h2&gt;

&lt;p&gt;This session continues the comprehensive AWS Networking workshop series, building upon previous foundations to explore:&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced Networking Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Transit Gateway&lt;/strong&gt;: Learn how to implement and manage AWS Transit Gateway for scalable network connectivity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPN Configurations&lt;/strong&gt;: Explore various VPN implementation patterns and best practices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Integration&lt;/strong&gt;: Understanding how networking security integrates with advanced AWS services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring and Observability&lt;/strong&gt;: Implementing comprehensive network monitoring solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Learning Objectives
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Network Architecture Design&lt;/strong&gt;: Understanding how to design scalable and secure network architectures using AWS services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Implementation&lt;/strong&gt;: Moving beyond theory to hands-on implementation of complex networking scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Best Practices&lt;/strong&gt;: Implementing security controls and monitoring across your network infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Troubleshooting Skills&lt;/strong&gt;: Developing skills to diagnose and resolve common networking issues in AWS environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workshop Structure and Approach
&lt;/h2&gt;

&lt;p&gt;The session follows the official AWS networking workshop available at &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;networking.workshop.aws&lt;/a&gt;, which provides a structured learning path covering:&lt;/p&gt;

&lt;h3&gt;
  
  
  Foundation to Advanced Concepts
&lt;/h3&gt;

&lt;p&gt;Starting with VPC and subnet fundamentals and progressively building to advanced configurations with Transit Gateway and VPN implementations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Scenarios
&lt;/h3&gt;

&lt;p&gt;The workshop incorporates practical examples that mirror real-world networking challenges you might encounter in production environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hands-On Learning
&lt;/h3&gt;

&lt;p&gt;Every concept is reinforced through practical exercises, ensuring you gain both theoretical understanding and practical experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Focus Areas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Transit Gateway Deep Dive
&lt;/h3&gt;

&lt;p&gt;Understanding the architecture, routing capabilities, and integration patterns that make Transit Gateway a powerful networking solution for complex environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  VPN Integration Patterns
&lt;/h3&gt;

&lt;p&gt;Exploring different VPN configuration options, from site-to-site connections to client VPN implementations, with security considerations throughout.&lt;/p&gt;

&lt;h3&gt;
  
  
  Network Security Integration
&lt;/h3&gt;

&lt;p&gt;Learning how to implement security controls, monitoring, and compliance measures across your network infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Developing skills to monitor network performance, diagnose issues, and implement proactive monitoring solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Applications
&lt;/h2&gt;

&lt;p&gt;The workshop emphasizes real-world application of concepts, helping you understand not just how to implement these services, but when and why to use them in different scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enterprise Networking
&lt;/h3&gt;

&lt;p&gt;Understanding how these concepts apply to enterprise-scale networking requirements and hybrid cloud implementations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Account Strategies
&lt;/h3&gt;

&lt;p&gt;Exploring how advanced networking services support multi-account AWS environments and organizational structures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;p&gt;Learning techniques to optimize network performance and cost-effectiveness in complex AWS environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways and Next Steps
&lt;/h2&gt;

&lt;p&gt;This session provides essential knowledge for anyone working with complex AWS networking environments. The combination of theoretical knowledge and practical implementation creates a solid foundation for advanced AWS networking scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue Your Learning&lt;/strong&gt;: The workshop series provides a comprehensive pathway through AWS networking services, building expertise incrementally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practice Implementation&lt;/strong&gt;: The hands-on nature of this workshop provides valuable experience that directly translates to real-world scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community Engagement&lt;/strong&gt;: Participating in these sessions connects you with other learners and provides opportunities for knowledge sharing and collaboration.&lt;/p&gt;

&lt;p&gt;The structured approach and comprehensive coverage make this an invaluable resource for anyone looking to master AWS networking services and advance their cloud infrastructure skills.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: While this article provides an overview based on the video content, the actual workshop includes detailed technical demonstrations and hands-on exercises that are best experienced through direct participation or video viewing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>cloud</category>
      <category>workshop</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 13: AWS Networking Workshop Part 3 - Security Controls Deep Dive</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sat, 02 Aug 2025 23:45:35 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-13-aws-networking-workshop-part-3-security-controls-deep-dive-dkg</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-13-aws-networking-workshop-part-3-security-controls-deep-dive-dkg</guid>
      <description>&lt;p&gt;Welcome back to our AWS Cloud Path journey! In Week 13, we're diving deep into Part 3 of the AWS Networking Workshop, focusing on advanced security controls that form the foundation of secure cloud networking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Missed the session? Catch up here:&lt;/strong&gt;&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/yNgFcdcUMro"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Before jumping into this session, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An AWS account with appropriate permissions&lt;/li&gt;
&lt;li&gt;Basic understanding of VPCs, subnets, and security groups&lt;/li&gt;
&lt;li&gt;Completion of the previous networking workshop sessions (Parts 1 &amp;amp; 2)&lt;/li&gt;
&lt;li&gt;The AWS CloudFormation template deployed from the &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;official workshop&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What We're Covering Today
&lt;/h2&gt;

&lt;p&gt;This session focuses on three critical foundational security topics:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Network Access Control Lists (NACLs)&lt;/strong&gt; - Subnet-level security&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Groups&lt;/strong&gt; - Instance-level security
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC Endpoint Policies&lt;/strong&gt; - Controlling access to AWS services&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Understanding the Architecture
&lt;/h2&gt;

&lt;p&gt;We're working with a multi-VPC setup consisting of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VPC A&lt;/strong&gt;: IP range 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC B&lt;/strong&gt;: IP range 10.1.0.0/16
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC C&lt;/strong&gt;: IP range 10.2.0.0/16&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each VPC contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two availability zones&lt;/li&gt;
&lt;li&gt;Public and private subnets in each AZ&lt;/li&gt;
&lt;li&gt;Internet Gateway&lt;/li&gt;
&lt;li&gt;NAT Gateway in public subnets&lt;/li&gt;
&lt;li&gt;EC2 instances for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Network Access Control Lists (NACLs) vs Security Groups
&lt;/h2&gt;

&lt;p&gt;One of the most frequently asked questions in AWS networking is: "Why do I need both NACLs and Security Groups?" Let's break down the key differences:&lt;/p&gt;

&lt;h3&gt;
  
  
  Network Access Control Lists (NACLs)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Key Characteristics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateless&lt;/strong&gt;: You must explicitly define both inbound AND outbound rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subnet-level&lt;/strong&gt;: Applied to entire subnets, affecting all resources within&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule numbering&lt;/strong&gt;: Rules are processed in numerical order (100, 200, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit deny capability&lt;/strong&gt;: Can create explicit deny rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default behavior&lt;/strong&gt;: Default NACL allows all traffic; custom NACLs deny all by default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example NACL Configuration:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rule #100: Allow ICMP from 10.1.0.0/16 (VPC B traffic)
Rule #32767: Deny all (implicit)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Security Groups
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Key Characteristics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stateful&lt;/strong&gt;: If you allow inbound traffic, the response is automatically allowed outbound&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instance-level&lt;/strong&gt;: Applied to specific EC2 instances or resources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most specific match&lt;/strong&gt;: Processes the most specific rule that matches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow-only rules&lt;/strong&gt;: Cannot create explicit deny rules (default deny)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default behavior&lt;/strong&gt;: Deny all inbound, allow all outbound&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Working Together: Layered Security
&lt;/h3&gt;

&lt;p&gt;The power comes from using both together:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;NACL&lt;/strong&gt;: Controls traffic at the subnet boundary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Group&lt;/strong&gt;: Provides granular, resource-specific control&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NACL allows traffic from VPC B and VPC C to enter the subnet&lt;/li&gt;
&lt;li&gt;Security Group on a specific server only allows ICMP traffic from VPC C&lt;/li&gt;
&lt;li&gt;Result: VPC B traffic reaches the subnet but is blocked at the instance level&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hands-On: Configuring Network Access Control Lists
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Locate Your NACL
&lt;/h3&gt;

&lt;p&gt;Navigate to VPC → Security → Network ACLs, then find "VPC A workload subnet NACL".&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Modify Inbound Rules
&lt;/h3&gt;

&lt;p&gt;Update Rule #100 to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: All ICMP - IPv4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol&lt;/strong&gt;: ICMP
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port Range&lt;/strong&gt;: All&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source&lt;/strong&gt;: 10.1.0.0/16 (VPC B CIDR block)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow/Deny&lt;/strong&gt;: ALLOW&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This configuration allows ICMP (ping) traffic only from VPC B, while blocking traffic from VPC C.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Testing Connectivity
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;From VPC B instance:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping &lt;span class="o"&gt;[&lt;/span&gt;VPC-A-instance-IP]
&lt;span class="c"&gt;# Expected: Success - packets transmitted and received&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;From VPC C instance:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping &lt;span class="o"&gt;[&lt;/span&gt;VPC-A-instance-IP]  
&lt;span class="c"&gt;# Expected: 100% packet loss - traffic blocked&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Security Groups: Fine-Grained Control
&lt;/h2&gt;

&lt;p&gt;Security Groups provide the second layer of security with more granular control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Configuration Points
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No rule numbering&lt;/strong&gt;: AWS automatically handles rule precedence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most specific match wins&lt;/strong&gt;: Smaller IP ranges take precedence over larger ones&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reference other security groups&lt;/strong&gt;: Can allow traffic from other security groups by ID&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example Security Group Rule
&lt;/h3&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;"Type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ICMP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Protocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ICMP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
  &lt;/span&gt;&lt;span class="nl"&gt;"Port Range"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"All"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"10.2.0.0/16"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Only&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;VPC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;traffic&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Description"&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 ping from VPC C only"&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;h2&gt;
  
  
  VPC Endpoint Policies
&lt;/h2&gt;

&lt;p&gt;VPC Endpoints enable private connectivity to AWS services without traversing the public internet. Endpoint policies control what actions can be performed through these endpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a VPC Endpoint
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Endpoints → Create Endpoint&lt;/li&gt;
&lt;li&gt;Select service (e.g., Amazon S3)&lt;/li&gt;
&lt;li&gt;Choose VPC and route tables&lt;/li&gt;
&lt;li&gt;Configure endpoint policy&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Example Endpoint Policy (Read-Only S3 Access)
&lt;/h3&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;"ReadOnlyAccess"&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="s2"&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="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"s3:Get*"&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:List*"&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;"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;"*"&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;p&gt;This policy restricts the endpoint to only allow GET and LIST operations on S3, blocking any write operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Troubleshooting Notes
&lt;/h2&gt;

&lt;p&gt;During the session, we encountered CloudFormation deployment issues related to Elastic IP allocation limits. Here are some common solutions:&lt;/p&gt;

&lt;h3&gt;
  
  
  CloudFormation Deployment Issues
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Elastic IP Limits&lt;/strong&gt;: Release unused Elastic IPs before deployment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Conflicts&lt;/strong&gt;: Check for existing resources with same names&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region-Specific Parameters&lt;/strong&gt;: Ensure availability zones match your deployment region&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Best Practices
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Always use custom NACLs&lt;/strong&gt;: Don't rely on default NACLs for production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layer your security&lt;/strong&gt;: Use both NACLs and Security Groups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be specific in Security Groups&lt;/strong&gt;: Use the most specific IP ranges possible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test thoroughly&lt;/strong&gt;: Always verify connectivity after configuration changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean up resources&lt;/strong&gt;: Delete CloudFormation stacks when testing is complete&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;NACLs are stateless&lt;/strong&gt; - you need explicit inbound AND outbound rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Groups are stateful&lt;/strong&gt; - return traffic is automatically allowed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use both for layered security&lt;/strong&gt; - subnet-level and instance-level protection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order matters in NACLs&lt;/strong&gt; - rules are processed numerically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Most specific wins in Security Groups&lt;/strong&gt; - smaller IP ranges take precedence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC Endpoints reduce costs and improve security&lt;/strong&gt; - private AWS service access&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;In our upcoming sessions, we'll dive into advanced networking topics including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transit Gateway configurations&lt;/li&gt;
&lt;li&gt;VPN connections and hybrid networking&lt;/li&gt;
&lt;li&gt;Network monitoring with CloudWatch and VPC Flow Logs&lt;/li&gt;
&lt;li&gt;Direct Connect implementations&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official Workshop&lt;/strong&gt;: &lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;AWS Networking Workshop&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudFormation Templates&lt;/strong&gt;: Available in the workshop repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture Diagrams&lt;/strong&gt;: Reference the multi-VPC setup diagrams in the workshop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember to clean up your resources after testing to avoid unexpected charges. If you deployed via CloudFormation, simply delete the stack to remove all resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join Us Next Week
&lt;/h2&gt;

&lt;p&gt;We'll continue with advanced networking topics in Week 14. If you're having issues with CloudFormation deployment, join 30 minutes early for troubleshooting assistance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note on Visual Content&lt;/strong&gt;: While the session included live demonstrations of AWS console interactions and architecture diagrams, this text-based format provides step-by-step instructions and code examples to guide you through the same processes. Refer to the embedded video above for visual guidance on console navigation and real-time troubleshooting.&lt;/p&gt;

&lt;p&gt;Happy networking, and see you next week for more AWS Cloud Path adventures! 🚀&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>security</category>
      <category>cloudpath</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 12: AWS Networking Workshop Part 2</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sat, 02 Aug 2025 23:10:30 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-12-aws-networking-workshop-part-2-1d0n</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-12-aws-networking-workshop-part-2-1d0n</guid>
      <description>&lt;p&gt;Welcome to Week 12 of the AWS Cloud Path series! In this continuation of our AWS networking journey, we dive deep into VPC endpoints, EC2 instance deployment, and connectivity testing. This hands-on workshop builds upon the foundational networking concepts we established in Part 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missed the session? Catch up here:
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1gJnoCbAuho"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Before diving in, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An active AWS account&lt;/li&gt;
&lt;li&gt;Basic understanding of VPC concepts (covered in Part 1)&lt;/li&gt;
&lt;li&gt;Familiarity with EC2 instances&lt;/li&gt;
&lt;li&gt;AWS CLI configured (optional but helpful)&lt;/li&gt;
&lt;li&gt;Budget awareness: This workshop costs approximately $7 in US-East-1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Cost Alert&lt;/strong&gt;: Different AWS regions have varying pricing. The $7 estimate applies to US-East-1 (Ohio). Always check your region's pricing before proceeding.&lt;/p&gt;

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

&lt;p&gt;We're building upon our existing VPC infrastructure that includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPC with public and private subnets across two availability zones&lt;/li&gt;
&lt;li&gt;Internet Gateway and NAT Gateway&lt;/li&gt;
&lt;li&gt;Route tables and Network ACLs&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today we're adding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VPC Endpoints&lt;/strong&gt;: Gateway endpoint for S3 and interface endpoint for AWS KMS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EC2 Instances&lt;/strong&gt;: One in public subnet, one in private subnet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connectivity Testing&lt;/strong&gt;: Verifying our network configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding VPC Endpoints
&lt;/h2&gt;

&lt;p&gt;VPC endpoints provide private connectivity from your AWS environment to AWS services without traversing the public internet. This is crucial for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: Traffic stays within AWS infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Optimization&lt;/strong&gt;: Avoiding data transfer charges for external traffic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Reduced latency for AWS service calls&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Types of VPC Endpoints
&lt;/h3&gt;

&lt;p&gt;There are two types of VPC endpoints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Gateway Endpoints&lt;/strong&gt;: Only available for S3 and DynamoDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface Endpoints&lt;/strong&gt;: Available for all other AWS services&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This distinction is important for AWS certification exams and architectural decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating VPC Endpoints
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Interface Endpoint for AWS KMS
&lt;/h3&gt;

&lt;p&gt;AWS Key Management Service (KMS) manages encryption keys in your AWS environment. To create a private connection to KMS:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC Console → Endpoints&lt;/li&gt;
&lt;li&gt;Click "Create endpoint"&lt;/li&gt;
&lt;li&gt;Configure the endpoint:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Name: VPC-A-KMS-endpoint
   Service category: AWS services
   Service: com.amazonaws.&amp;lt;region&amp;gt;.kms
   VPC: Select your VPC-A
   Route tables: Select all route tables
   Subnets: Choose your private subnets
   Security groups: Use default for full access
   Policy: Full access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key Configuration Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interface endpoints create elastic network interfaces (ENIs) with IP addresses&lt;/li&gt;
&lt;li&gt;You can specify custom IP addresses or let AWS auto-assign&lt;/li&gt;
&lt;li&gt;Full access policy allows all resources in your VPC to use the endpoint&lt;/li&gt;
&lt;li&gt;The endpoint will be in "pending" state initially&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gateway Endpoint for Amazon S3
&lt;/h3&gt;

&lt;p&gt;S3 gateway endpoints are simpler to configure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create endpoint with these settings:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Name: VPC-A-S3-endpoint
   Service: com.amazonaws.&amp;lt;region&amp;gt;.s3
   Type: Gateway
   VPC: Select your VPC-A
   Route tables: Select all route tables
   Policy: Full access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Gateway vs Interface Differences:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gateway endpoints don't require subnet or security group configuration&lt;/li&gt;
&lt;li&gt;They work by adding routes to your route tables&lt;/li&gt;
&lt;li&gt;No ENI creation or IP address assignment needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploying EC2 Instances
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Public Subnet Instance
&lt;/h3&gt;

&lt;p&gt;Deploy an EC2 instance for external connectivity testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Instance Configuration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VPC-A-public-ec2-server&lt;/span&gt;
  &lt;span class="na"&gt;AMI&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Amazon Linux &lt;/span&gt;&lt;span class="m"&gt;2023&lt;/span&gt;
  &lt;span class="na"&gt;Instance Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;t2.micro&lt;/span&gt;
  &lt;span class="na"&gt;Key Pair&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Create new or use existing&lt;/span&gt;
  &lt;span class="na"&gt;Network Settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;VPC&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VPC-A&lt;/span&gt;
    &lt;span class="na"&gt;Subnet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;public-subnet-AZ2&lt;/span&gt;
    &lt;span class="na"&gt;Auto-assign Public IP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Enable&lt;/span&gt;
    &lt;span class="na"&gt;Primary IP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;10.0.2.10&lt;/span&gt;
  &lt;span class="na"&gt;Security Group&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VPC-A-security-group&lt;/span&gt;
    &lt;span class="na"&gt;Rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;SSH (port 22)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;All ICMP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
  &lt;span class="na"&gt;IAM Instance Profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking-workshop-instance-profile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Private Subnet Instance
&lt;/h3&gt;

&lt;p&gt;Deploy an instance for internal connectivity testing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Instance Configuration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VPC-A-private-AZ1-server&lt;/span&gt;
  &lt;span class="na"&gt;AMI&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Amazon Linux &lt;/span&gt;&lt;span class="m"&gt;2023&lt;/span&gt;
  &lt;span class="na"&gt;Instance Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;t2.micro&lt;/span&gt;
  &lt;span class="na"&gt;Key Pair&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Same as public instance&lt;/span&gt;
  &lt;span class="na"&gt;Network Settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;VPC&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;VPC-A&lt;/span&gt;
    &lt;span class="na"&gt;Subnet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;private-subnet-AZ1&lt;/span&gt;
    &lt;span class="na"&gt;Auto-assign Public IP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Disable&lt;/span&gt;
    &lt;span class="na"&gt;Primary IP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;10.0.1.10&lt;/span&gt;
  &lt;span class="na"&gt;Security Group&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Same as public instance&lt;/span&gt;
  &lt;span class="na"&gt;IAM Instance Profile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking-workshop-instance-profile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important Security Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Private instance has NO public IP address&lt;/li&gt;
&lt;li&gt;Access is only possible through AWS Systems Manager Session Manager&lt;/li&gt;
&lt;li&gt;The IAM instance profile includes SSM permissions for management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connectivity Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Testing Public Instance Connectivity
&lt;/h3&gt;

&lt;p&gt;From your local terminal, test ICMP connectivity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Test ping to public instance&lt;/span&gt;
ping &amp;lt;public-ip-address&amp;gt;

&lt;span class="c"&gt;# Expected: Successful ping responses&lt;/span&gt;
&lt;span class="c"&gt;# This works because we opened ICMP ports in security groups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Testing Private Instance Internal Connectivity
&lt;/h3&gt;

&lt;p&gt;Access the private instance via Session Manager:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;EC2 Console → Select private instance → Connect → Session Manager&lt;/li&gt;
&lt;li&gt;Once connected, test internal connectivity:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Test connectivity to public instance (internal communication)&lt;/span&gt;
ping 10.0.2.10

&lt;span class="c"&gt;# Test external connectivity through NAT Gateway&lt;/span&gt;
ping example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why This Works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal ping succeeds because VPC allows local traffic&lt;/li&gt;
&lt;li&gt;External ping succeeds through NAT Gateway in public subnet&lt;/li&gt;
&lt;li&gt;Private instance is protected from direct internet access&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding VPC Endpoint Routing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Interface Endpoint Resolution
&lt;/h3&gt;

&lt;p&gt;Test DNS resolution for KMS endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# From private instance, check KMS endpoint resolution&lt;/span&gt;
dig kms.eu-central-1.amazonaws.com

&lt;span class="c"&gt;# Expected output shows local IP addresses within your VPC CIDR&lt;/span&gt;
&lt;span class="c"&gt;# Example: 10.0.1.x, 10.0.2.x&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;DNS queries for KMS resolve to local IP addresses&lt;/li&gt;
&lt;li&gt;Traffic stays within your VPC infrastructure&lt;/li&gt;
&lt;li&gt;No public internet traversal occurs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gateway Endpoint Routing
&lt;/h3&gt;

&lt;p&gt;Check route table entries:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Route Tables → Private Route Table&lt;/li&gt;
&lt;li&gt;Look for entries with:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Destination&lt;/strong&gt;: Prefix list (e.g., pl-xxxxxx)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target&lt;/strong&gt;: Your VPC S3 endpoint&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The prefix list contains IP address ranges for S3 in your region. When traffic matches these destinations, it routes through your gateway endpoint instead of the internet gateway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Learnings and Best Practices
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cost Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VPC endpoints reduce data transfer costs by keeping traffic within AWS&lt;/li&gt;
&lt;li&gt;Gateway endpoints are free; interface endpoints have hourly charges&lt;/li&gt;
&lt;li&gt;Consider endpoint usage patterns when designing architecture&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Private connectivity eliminates internet-based attack vectors&lt;/li&gt;
&lt;li&gt;Fine-grained access control through endpoint policies&lt;/li&gt;
&lt;li&gt;Traffic inspection and monitoring capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architectural Considerations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;One endpoint per service (can't reuse endpoints across services)&lt;/li&gt;
&lt;li&gt;Interface endpoints create ENIs that consume IP addresses&lt;/li&gt;
&lt;li&gt;Gateway endpoints use route table entries (no IP consumption)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Troubleshooting Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Endpoint status must be "Available" before use&lt;/li&gt;
&lt;li&gt;Check security group rules for interface endpoints&lt;/li&gt;
&lt;li&gt;Verify route table associations for gateway endpoints&lt;/li&gt;
&lt;li&gt;DNS resolution should return VPC-local IP addresses&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cleanup Instructions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Don't leave resources running to avoid unnecessary charges!&lt;/p&gt;

&lt;p&gt;Follow this cleanup order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Terminate EC2 instances&lt;/li&gt;
&lt;li&gt;Delete VPC endpoints (interface and gateway)&lt;/li&gt;
&lt;li&gt;Delete the VPC (removes subnets, route tables, gateways automatically)&lt;/li&gt;
&lt;li&gt;Delete the CloudFormation stack for IAM roles and prerequisites&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;In our next session, we'll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced VPC connectivity with Transit Gateway&lt;/li&gt;
&lt;li&gt;VPN configurations for hybrid connectivity&lt;/li&gt;
&lt;li&gt;Network monitoring and troubleshooting tools&lt;/li&gt;
&lt;li&gt;Security group and NACL deep dive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This workshop demonstrates how VPC endpoints provide secure, cost-effective connectivity to AWS services while maintaining network isolation. The combination of proper subnet design, security groups, and endpoint configuration creates a robust networking foundation for your AWS workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The visual demonstrations in the workshop video show real-time AWS Console interactions and terminal commands. While this text representation covers the core concepts and configurations, watching the video provides additional context for navigating the AWS Console and understanding the step-by-step process.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>vpc</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AWS Cloud Path Week 11: AWS Networking Workshop Part 1 - Building Secure VPC Infrastructure</title>
      <dc:creator>Elizabeth Adeotun Adegbaju</dc:creator>
      <pubDate>Sat, 02 Aug 2025 22:48:13 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloud-path-week-11-aws-networking-workshop-part-1-building-secure-vpc-infrastructure-4c5c</link>
      <guid>https://dev.to/aws-builders/aws-cloud-path-week-11-aws-networking-workshop-part-1-building-secure-vpc-infrastructure-4c5c</guid>
      <description>&lt;p&gt;Welcome to Week 11 of the AWS Cloud Path series! In this hands-on workshop, we dive deep into AWS networking fundamentals by working through a comprehensive AWS Networking Workshop. This tutorial covers the full spectrum of AWS networking, from basic VPC and subnet configurations to advanced setups with security groups, route tables, and NAT gateways.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missed the session? Catch up here:
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/SAm9Mwo5aTQ"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Before diving into this workshop, you should have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An active AWS account with appropriate permissions&lt;/li&gt;
&lt;li&gt;Basic understanding of networking concepts (IP addresses, CIDR blocks, subnets)&lt;/li&gt;
&lt;li&gt;Familiarity with AWS Console navigation&lt;/li&gt;
&lt;li&gt;Understanding that resources created in this workshop will incur costs (~$7 USD in us-east-1)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Cost Warning&lt;/strong&gt;: The resources created in this workshop will cost approximately $7 in the US East 1 region. Pricing may vary in different regions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workshop Overview
&lt;/h2&gt;

&lt;p&gt;This workshop is part of the AWS Networking Immersion Day and covers foundational to advanced networking topics:&lt;/p&gt;

&lt;h3&gt;
  
  
  Foundation Topics Covered:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Virtual Private Cloud (VPC) creation and configuration&lt;/li&gt;
&lt;li&gt;Public and private subnet architecture&lt;/li&gt;
&lt;li&gt;Internet Gateway setup&lt;/li&gt;
&lt;li&gt;NAT Gateway configuration&lt;/li&gt;
&lt;li&gt;Route tables and routing&lt;/li&gt;
&lt;li&gt;Network Access Control Lists (NACLs)&lt;/li&gt;
&lt;li&gt;Security group configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advanced Topics (Future Sessions):
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VPC Endpoints&lt;/li&gt;
&lt;li&gt;Transit Gateway&lt;/li&gt;
&lt;li&gt;VPN connections&lt;/li&gt;
&lt;li&gt;Gateway Load Balancers&lt;/li&gt;
&lt;li&gt;Multi-cast networking&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step-by-Step Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Environment Setup with CloudFormation
&lt;/h3&gt;

&lt;p&gt;Before creating our networking infrastructure, we need to deploy a CloudFormation template that provisions prerequisite resources.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deploying the Initial Stack
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Download the provided CloudFormation template&lt;/li&gt;
&lt;li&gt;Navigate to the CloudFormation console&lt;/li&gt;
&lt;li&gt;Create a new stack and upload the template&lt;/li&gt;
&lt;li&gt;Name your stack (e.g., "networking-workshop-prerequisites")&lt;/li&gt;
&lt;li&gt;Deploy the stack&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Resources Created:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flow logs role&lt;/li&gt;
&lt;li&gt;VPC endpoint policies&lt;/li&gt;
&lt;li&gt;Elastic IP addresses
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# The CloudFormation template creates essential resources like:&lt;/span&gt;
&lt;span class="c1"&gt;# - IAM roles for flow logs&lt;/span&gt;
&lt;span class="c1"&gt;# - Endpoint policies&lt;/span&gt;
&lt;span class="c1"&gt;# - Pre-allocated Elastic IPs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Creating Your VPC Foundation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  VPC Creation
&lt;/h4&gt;

&lt;p&gt;Navigate to the VPC console and create a new VPC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv4 CIDR block&lt;/strong&gt;: 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv6 CIDR block&lt;/strong&gt;: No IPv6 CIDR block&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tenancy&lt;/strong&gt;: Default
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CIDR Block Explanation:
10.0.0.0/16 provides approximately 65,536 IP addresses
This gives us plenty of room for multiple subnets across availability zones
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Enable DNS Hostnames
&lt;/h4&gt;

&lt;p&gt;After VPC creation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select your VPC&lt;/li&gt;
&lt;li&gt;Go to Actions → Edit VPC settings&lt;/li&gt;
&lt;li&gt;Enable DNS hostnames&lt;/li&gt;
&lt;li&gt;Save changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This allows instances in your VPC to receive public DNS hostnames when they have public IP addresses.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Subnet Architecture Design
&lt;/h3&gt;

&lt;p&gt;We'll create four subnets across two Availability Zones following AWS best practices:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Subnet Type&lt;/th&gt;
&lt;th&gt;AZ&lt;/th&gt;
&lt;th&gt;CIDR Block&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Public Subnet AZ1&lt;/td&gt;
&lt;td&gt;eu-central-1a&lt;/td&gt;
&lt;td&gt;10.0.0.0/24&lt;/td&gt;
&lt;td&gt;Resources needing direct internet access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private Subnet AZ1&lt;/td&gt;
&lt;td&gt;eu-central-1a&lt;/td&gt;
&lt;td&gt;10.0.1.0/24&lt;/td&gt;
&lt;td&gt;Backend resources, databases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public Subnet AZ2&lt;/td&gt;
&lt;td&gt;eu-central-1b&lt;/td&gt;
&lt;td&gt;10.0.2.0/24&lt;/td&gt;
&lt;td&gt;High availability public resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Private Subnet AZ2&lt;/td&gt;
&lt;td&gt;eu-central-1b&lt;/td&gt;
&lt;td&gt;10.0.3.0/24&lt;/td&gt;
&lt;td&gt;High availability private resources&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Creating Subnets
&lt;/h4&gt;

&lt;p&gt;For each subnet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Subnets → Create subnet&lt;/li&gt;
&lt;li&gt;Select your VPC (VPCA)&lt;/li&gt;
&lt;li&gt;Configure subnet settings following the table above&lt;/li&gt;
&lt;li&gt;Create the subnet&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Naming Convention Best Practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use consistent naming patterns (e.g., VPCA-public-subnet-az1)&lt;/li&gt;
&lt;li&gt;Include VPC identifier, subnet type, and availability zone&lt;/li&gt;
&lt;li&gt;This makes resource management much easier in production environments&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Network Access Control Lists (NACLs)
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Creating Custom NACLs
&lt;/h4&gt;

&lt;p&gt;Default NACLs allow all traffic, which isn't ideal for security. Let's create a custom NACL:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Network ACLs → Create network ACL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA-workload-subnet-nacl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC&lt;/strong&gt;: VPCA&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Configuring NACL Rules
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Inbound Rules:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rule # | Type | Protocol | Port Range | Source | Allow/Deny
100    | HTTP | TCP      | 80         | 0.0.0.0/0 | ALLOW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Outbound Rules:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rule # | Type | Protocol | Port Range | Destination | Allow/Deny
100    | All Traffic | All | All | 0.0.0.0/0 | ALLOW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⚠️ &lt;strong&gt;Security Note&lt;/strong&gt;: This configuration allows all traffic for demonstration purposes. In production, implement least-privilege access with specific rules for your application requirements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Associate Subnets with NACL
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Select your custom NACL&lt;/li&gt;
&lt;li&gt;Go to Subnet associations tab&lt;/li&gt;
&lt;li&gt;Edit subnet associations&lt;/li&gt;
&lt;li&gt;Associate all four subnets with the custom NACL&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5. Route Tables Configuration
&lt;/h3&gt;

&lt;p&gt;Route tables determine where network traffic from subnets is directed. We'll create separate route tables for public and private subnets.&lt;/p&gt;

&lt;h4&gt;
  
  
  Public Route Table
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Route Tables → Create route table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA-public-route-table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC&lt;/strong&gt;: VPCA&lt;/li&gt;
&lt;li&gt;Associate with public subnets&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Private Route Table
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Create another route table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA-private-route-table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC&lt;/strong&gt;: VPCA&lt;/li&gt;
&lt;li&gt;Associate with private subnets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Default Routes:&lt;/strong&gt;&lt;br&gt;
Both route tables automatically include a local route for the VPC CIDR (10.0.0.0/16) with target "local", enabling communication within the VPC.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Internet Connectivity Setup
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Internet Gateway Configuration
&lt;/h4&gt;

&lt;p&gt;Public subnets need internet access through an Internet Gateway:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → Internet Gateways → Create Internet Gateway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA-IGW&lt;/li&gt;
&lt;li&gt;Attach to VPCA&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Configure Public Route Table
&lt;/h4&gt;

&lt;p&gt;Add internet route to public route table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select VPCA-public-route-table&lt;/li&gt;
&lt;li&gt;Edit routes → Add route&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Destination&lt;/strong&gt;: 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target&lt;/strong&gt;: Internet Gateway (VPCA-IGW)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This route directs all non-local traffic to the internet gateway.&lt;/p&gt;

&lt;h4&gt;
  
  
  NAT Gateway for Private Subnets
&lt;/h4&gt;

&lt;p&gt;Private subnets need outbound internet access through a NAT Gateway:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to VPC → NAT Gateways → Create NAT Gateway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: VPCA-NAT-Gateway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subnet&lt;/strong&gt;: Select a public subnet (VPCA-public-subnet-az1)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connectivity type&lt;/strong&gt;: Public&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elastic IP&lt;/strong&gt;: Allocate Elastic IP&lt;/li&gt;
&lt;li&gt;Create NAT Gateway&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Configure Private Route Table
&lt;/h4&gt;

&lt;p&gt;Add NAT Gateway route to private route table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select VPCA-private-route-table&lt;/li&gt;
&lt;li&gt;Edit routes → Add route&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Destination&lt;/strong&gt;: 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target&lt;/strong&gt;: NAT Gateway (VPCA-NAT-Gateway)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Learning Points
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. CIDR Block Planning
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Plan your IP address space carefully&lt;/li&gt;
&lt;li&gt;Leave room for future expansion&lt;/li&gt;
&lt;li&gt;Avoid overlapping CIDR blocks&lt;/li&gt;
&lt;li&gt;Consider connectivity requirements with other networks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. High Availability Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deploy resources across multiple Availability Zones&lt;/li&gt;
&lt;li&gt;Use consistent naming conventions&lt;/li&gt;
&lt;li&gt;Implement redundancy for critical components&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Security Best Practices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use custom NACLs instead of defaults&lt;/li&gt;
&lt;li&gt;Follow least-privilege access principles&lt;/li&gt;
&lt;li&gt;Separate public and private subnets&lt;/li&gt;
&lt;li&gt;Control outbound traffic from private subnets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Route Table Strategy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create dedicated route tables for different subnet types&lt;/li&gt;
&lt;li&gt;Understand local routes vs. internet routes&lt;/li&gt;
&lt;li&gt;Plan for hybrid connectivity (VPN/Direct Connect)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  Internet Connectivity Issues
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check Internet Gateway&lt;/strong&gt;: Ensure it's attached to the VPC&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify Route Tables&lt;/strong&gt;: Confirm 0.0.0.0/0 routes point to correct targets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Groups&lt;/strong&gt;: Check that security groups allow required traffic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NACLs&lt;/strong&gt;: Ensure NACLs aren't blocking traffic&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  NAT Gateway Problems
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Subnet Selection&lt;/strong&gt;: NAT Gateway must be in a public subnet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elastic IP&lt;/strong&gt;: Ensure Elastic IP is allocated and attached&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route Configuration&lt;/strong&gt;: Private subnets should route 0.0.0.0/0 to NAT Gateway&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Production Considerations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cost Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NAT Gateway&lt;/strong&gt;: Consider NAT instances for development environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elastic IPs&lt;/strong&gt;: Release unused Elastic IP addresses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Transfer&lt;/strong&gt;: Monitor data transfer costs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Enhancements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implement AWS Config rules for compliance monitoring&lt;/li&gt;
&lt;li&gt;Use VPC Flow Logs for traffic analysis&lt;/li&gt;
&lt;li&gt;Consider AWS Network Firewall for advanced filtering&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Monitoring and Logging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enable VPC Flow Logs&lt;/li&gt;
&lt;li&gt;Set up CloudWatch monitoring for NAT Gateways&lt;/li&gt;
&lt;li&gt;Monitor Elastic IP usage and costs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;In the upcoming sessions, we'll explore:&lt;/p&gt;

&lt;h3&gt;
  
  
  VPC Endpoints (Next Session)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;S3 Gateway Endpoints&lt;/li&gt;
&lt;li&gt;Interface Endpoints for AWS services&lt;/li&gt;
&lt;li&gt;Private connectivity without internet gateway dependency&lt;/li&gt;
&lt;li&gt;Cost optimization through private connectivity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advanced Networking Topics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Transit Gateway for multi-VPC connectivity&lt;/li&gt;
&lt;li&gt;VPN connections for hybrid cloud&lt;/li&gt;
&lt;li&gt;Direct Connect for dedicated connectivity&lt;/li&gt;
&lt;li&gt;Network segmentation strategies&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This foundational networking workshop provides the essential building blocks for secure, scalable AWS network architectures. By understanding VPCs, subnets, route tables, and security controls, you're building expertise in the core networking components that underpin most AWS solutions.&lt;/p&gt;

&lt;p&gt;The hands-on approach of working through actual AWS console configurations helps solidify theoretical knowledge with practical skills. Remember to clean up resources after the workshop to avoid unnecessary costs!&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/vpc/" rel="noopener noreferrer"&gt;AWS VPC Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://networking.workshop.aws/" rel="noopener noreferrer"&gt;AWS Networking Workshops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html" rel="noopener noreferrer"&gt;VPC Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html" rel="noopener noreferrer"&gt;AWS Well-Architected Framework - Security Pillar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Join us next week as we continue with VPC Endpoints and explore how to create private connectivity to AWS services without routing traffic through the public internet!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>vpc</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
