<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kunal Shah</title>
    <description>The latest articles on Forem by Kunal Shah (@acloudguy).</description>
    <link>https://forem.com/acloudguy</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%2F788985%2F45ab82d4-a6db-4740-96b0-2f79837d0248.jpeg</url>
      <title>Forem: Kunal Shah</title>
      <link>https://forem.com/acloudguy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/acloudguy"/>
    <language>en</language>
    <item>
      <title>Secure AWS VPC using Public and Private Subnets</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Wed, 11 Dec 2024 08:37:05 +0000</pubDate>
      <link>https://forem.com/aws-builders/secure-aws-vpc-using-public-and-private-subnets-2ni3</link>
      <guid>https://forem.com/aws-builders/secure-aws-vpc-using-public-and-private-subnets-2ni3</guid>
      <description>&lt;h2&gt;
  
  
  Secure AWS VPC using Public and Private Subnets
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands-on Lab Practice Series
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Project Overview —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this lab, you will gain hands-on experience creating and configuring a Virtual Private Cloud (VPC) using the AWS Management Console. The project will culminate in the deployment of a common two-tiered cloud architecture, including front-end and back-end components.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Solutions Architecture —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe87kfori55y64rlgzfii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe87kfori55y64rlgzfii.png" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prerequisite —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Knowledge about basic networking concepts (such as IP Addressing, CIDR notation, and routing), an understanding with basic cloud operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Familiarity with navigating the AWS Management Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS LEVEL — BEGINNER — AWS 100&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;AWS Services Usage —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS VPC, EC2, SSM, IGW, NGW, Route Table, SG, NACL and IAM&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;STEP BY STEP GUIDE -&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Create VPC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS Console with an IAM user having Admin privileges&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;us-west-2&lt;/strong&gt; region.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the AWS Management Console search bar, enter &lt;strong&gt;&lt;em&gt;VPC&lt;/em&gt;&lt;/strong&gt;, and click the &lt;strong&gt;VPC&lt;/strong&gt; result under &lt;strong&gt;Services.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Your VPCs&lt;/strong&gt; in the left navigation pane.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create VPC&lt;/strong&gt; to begin creating a new VPC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specify the following VPC details:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resources to create&lt;/strong&gt;: Select &lt;strong&gt;VPC only&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name tag&lt;/strong&gt;: Enter &lt;em&gt;acloudguy-vpc-demo&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CIDR block&lt;/strong&gt;: Enter &lt;em&gt;10.0.0.0/16&lt;/em&gt; (This is a CIDR block from the private (non-publicly routable) IP address ranges as specified in RFC 1918.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tenancy&lt;/strong&gt;: Select &lt;strong&gt;Default&lt;/strong&gt; (Dedicated tenancy ensures your instances run on single-tenant hardware. For the purposes of this Lab, the default is fine though.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhkswqsk4zsl8t9ao1gb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhkswqsk4zsl8t9ao1gb.png" width="597" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Notice the &lt;strong&gt;VPC and more.&lt;/strong&gt; option. Choosing this option launches a wizard that makes setting up and configuring a new VPC very simple.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For learning the core concepts we are taking VPC only approach.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll to the bottom of the page and click &lt;strong&gt;Create VPC&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhzluewpf8ztujpvvs3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjhzluewpf8ztujpvvs3.png" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Amazon creates the requested VPC and the following linked services:&lt;br&gt;
 &lt;strong&gt;DHCP options set&lt;/strong&gt;: Enables DNS for instances that need to communicate over the VPC’s Internet gateway&lt;br&gt;
 &lt;strong&gt;Main route table&lt;/strong&gt;: Table that contains a set of rules, called routes, that are used to determine where network traffic is directed&lt;br&gt;
 &lt;strong&gt;Network ACL&lt;/strong&gt;: List of rules to determine whether traffic is allowed in or out of any subnet associated with the network ACL&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Create IGW&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An Internet Gateway is a horizontally scaled, redundant, and highly available VPC component that allows communication between instances in your VPC and the Internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It imposes no availability risks or bandwidth constraints on your network traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;strong&gt;VPC Dashboard&lt;/strong&gt;, click &lt;strong&gt;Internet Gateways&lt;/strong&gt; in the left navigation pane.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create internet gateway&lt;/strong&gt; to begin creating a new gateway with the following -&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name tag —&lt;/strong&gt; acloudguy-igw&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create Internet Gateway&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzigtposkz3lhs5u8l52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffzigtposkz3lhs5u8l52.png" width="775" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;State&lt;/strong&gt; of your Internet Gateway will be &lt;strong&gt;detached&lt;/strong&gt; to start.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now you need to attach the new gateway to the VPC you created earlier.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Actions&lt;/strong&gt; then &lt;strong&gt;Attach to VPC&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Attach internet gateway&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bt3c163lf9majou1xi5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bt3c163lf9majou1xi5.png" width="772" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;IMP *&lt;/em&gt;— An Internet Gateway can only be attached to one VPC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e92460fdkjjigipgxw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e92460fdkjjigipgxw3.png" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Create Public Subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;VPC Dashboard&lt;/strong&gt;, click &lt;strong&gt;Subnets,&lt;/strong&gt; Click &lt;strong&gt;Create subnet.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the following &lt;strong&gt;Public subnet&lt;/strong&gt; details:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC ID&lt;/strong&gt;: Select &lt;strong&gt;acloudguy-vpc-demo&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet name&lt;/strong&gt;: Enter &lt;em&gt;Public-A&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Availability Zone&lt;/strong&gt;: Select &lt;strong&gt;us-west-2a&lt;/strong&gt; from the drop-down menu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IPv4 subnet CIDR block&lt;/strong&gt;: Enter &lt;em&gt;10.0.20.0/24&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create subnet.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the left navigation pane, click &lt;strong&gt;Route Tables,&lt;/strong&gt; Click &lt;strong&gt;Create route table.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the following route table settings:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: Enter &lt;em&gt;PublicRouteTable&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC&lt;/strong&gt;: Select the &lt;strong&gt;acloudguy-vpc-demo&lt;/strong&gt; VPC from the drop-down menu.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9a9tx52dx068ve0wn6i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9a9tx52dx068ve0wn6i4.png" width="767" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scroll to the bottom of the page and click &lt;strong&gt;Create route table.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the route details page, switch to the &lt;strong&gt;Routes&lt;/strong&gt; tab and click &lt;strong&gt;Edit routes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add route&lt;/strong&gt; and Configure the following route settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: Select &lt;strong&gt;Internet Gateway&lt;/strong&gt;, then acloudguy-igw.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixuxf6u0cacnap6gzkmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixuxf6u0cacnap6gzkmb.png" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select the &lt;strong&gt;Public-A&lt;/strong&gt; subnet and click the &lt;strong&gt;Route table&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Edit route table association&lt;/strong&gt; button&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;PublicRouteTable&lt;/strong&gt; from the &lt;strong&gt;Route table ID&lt;/strong&gt; drop-down menu and confirm the following routes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygr3yfh7k12nrl1kps64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fygr3yfh7k12nrl1kps64.png" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This &lt;strong&gt;Public subnet&lt;/strong&gt; will require a route to the internet, so the associated route table has now been configured to use &lt;strong&gt;PublicRouteTable&lt;/strong&gt; to determine traffic rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Create NAT Gateway&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;VPC Dashboard&lt;/strong&gt;, click NAT Gateways.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create NAT gateway.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: Enter &lt;em&gt;NAT-GW&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet&lt;/strong&gt;: Select &lt;strong&gt;Public-A&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Connectivity type&lt;/strong&gt;: Ensure &lt;strong&gt;Public&lt;/strong&gt; is selected&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Public&lt;/strong&gt; connectivity type will allow this NAT Gateway the ability to access the public internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Allocate Elastic IP&lt;/strong&gt; next to the &lt;strong&gt;Elastic IP allocation ID&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create NAT gateway.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Create Private Subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;VPC Dashboard&lt;/strong&gt;, click &lt;strong&gt;Subnets, **Click **Create subnet.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the following &lt;strong&gt;Private subnet&lt;/strong&gt; details:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC ID&lt;/strong&gt;: Select &lt;strong&gt;acloudguy-vpc-demo&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet name&lt;/strong&gt;: Enter &lt;em&gt;Private-A&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Availability Zone&lt;/strong&gt;: Select &lt;strong&gt;us-west-2a&lt;/strong&gt; from the drop-down menu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IPv4 subnet CIDR block&lt;/strong&gt;: Enter &lt;em&gt;10.0.10.0/24&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create subnet.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the left navigation pane, click &lt;strong&gt;Route Tables,&lt;/strong&gt; Click &lt;strong&gt;Create route table.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the following route table settings:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: Enter &lt;em&gt;PrivateRouteTable&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC&lt;/strong&gt;: Select the &lt;strong&gt;acloudguy-vpc-demo&lt;/strong&gt; VPC from the drop-down menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create route table.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;PrivateRouteTable&lt;/strong&gt; details page, in the &lt;strong&gt;Routes&lt;/strong&gt; tab, click &lt;strong&gt;Edit routes&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add route&lt;/strong&gt; and configure the following route settings:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: Select &lt;strong&gt;IGW for temporary testing.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is to make you understand why Instance is not able to reach Internet even if IGW is attached.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Subnets&lt;/strong&gt; from the left navigation pane, then select the &lt;strong&gt;Private-A&lt;/strong&gt; subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Route Table&lt;/strong&gt; tab, and click &lt;strong&gt;Edit route table association&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;PrivateRouteTable&lt;/strong&gt; from the &lt;strong&gt;Route table ID&lt;/strong&gt; drop-down menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Create a Network ACL for a Private Subnet&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A **Network Access Control List (NACL) **is an optional layer of security that acts as a firewall for controlling traffic in and out of a subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Network ACLs **under **Security.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create Network ACL&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure the following Network ACL settings:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: Enter &lt;em&gt;Private-NACL&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC&lt;/strong&gt;: Select **acloudguy-vpc-demo **from the drop-down menu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create network ACL&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Private-NACL&lt;/strong&gt; from the Network ACLs list and click the &lt;strong&gt;Subnet associations&lt;/strong&gt; tab&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Edit subnet associations&lt;/strong&gt;: Select the check box for the &lt;strong&gt;Private-A&lt;/strong&gt; subnet to associate it with the network ACL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nwsmf6ecruvi5y01h4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nwsmf6ecruvi5y01h4t.png" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Add rules to a Private Network ACL.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Private-NACL&lt;/strong&gt; from the list of Network ACLs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Inbound rules&lt;/strong&gt; tab below the table and click &lt;strong&gt;Edit inbound rules&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Add new rule&lt;/strong&gt; and configure the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule number&lt;/strong&gt;: Enter &lt;em&gt;100&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Type&lt;/strong&gt;: Select &lt;strong&gt;SSH&lt;/strong&gt;&lt;br&gt;
 &lt;strong&gt;Source&lt;/strong&gt;: Enter &lt;em&gt;10.0.20.0/24&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Allow / Deny&lt;/strong&gt;: Select &lt;strong&gt;Allow&lt;/strong&gt; from the drop-down menu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For the second rule, click &lt;strong&gt;Add new rule&lt;/strong&gt; and configure the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule number&lt;/strong&gt;: Enter &lt;em&gt;200&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Type&lt;/strong&gt;: Select &lt;strong&gt;Custom TCP Rule&lt;/strong&gt;&lt;br&gt;
 &lt;strong&gt;Port Range&lt;/strong&gt;: Enter &lt;em&gt;1024–65535&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Source&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Allow / Deny&lt;/strong&gt;: Select &lt;strong&gt;Allow&lt;/strong&gt; from the drop-down menu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This will allow return traffic for the outbound rules you will add shortly (the range is specified as &lt;em&gt;1024–65535&lt;/em&gt; because these are the available ports and not reserved). This enables resources inside the subnet to receive responses to their outbound traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure the &lt;strong&gt;Private-NACL&lt;/strong&gt; is still selected then click the &lt;strong&gt;Inbound rules&lt;/strong&gt; tab below the table to verify your inbound rules match the following.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F842lqxwx3xxikwl82gll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F842lqxwx3xxikwl82gll.png" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;With the &lt;strong&gt;Private-NACL&lt;/strong&gt; still selected, switch to the &lt;strong&gt;Outbound rules&lt;/strong&gt; tab and click &lt;strong&gt;Edit outbound rules&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Click &lt;strong&gt;Add new rule&lt;/strong&gt; and configure the following:&lt;br&gt;
 &lt;strong&gt;Rule number&lt;/strong&gt;: Enter &lt;em&gt;100&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Type&lt;/strong&gt;: Select &lt;strong&gt;HTTP&lt;/strong&gt; from the drop-down menu&lt;br&gt;
 &lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Allow / Deny&lt;/strong&gt;: Select &lt;strong&gt;Allow&lt;/strong&gt; from the drop-down menu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For the second outbound rule, click &lt;strong&gt;Add new rule&lt;/strong&gt; and configure the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule number&lt;/strong&gt;: Enter &lt;em&gt;200&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Type&lt;/strong&gt;: Select &lt;strong&gt;HTTPS&lt;/strong&gt; from the drop-down menu&lt;br&gt;
 &lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Allow / Deny&lt;/strong&gt;: Select &lt;strong&gt;Allow&lt;/strong&gt; from the drop-down menu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For the third outbound rule, click &lt;strong&gt;Add new rule&lt;/strong&gt; and configure the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule number&lt;/strong&gt;: Enter &lt;em&gt;300&lt;/em&gt;&lt;br&gt;
 &lt;strong&gt;Type&lt;/strong&gt;: Select &lt;strong&gt;Custom TCP&lt;/strong&gt; from the drop-down menu&lt;br&gt;
 &lt;strong&gt;Port Range&lt;/strong&gt;: Enter*32768–61000*&lt;br&gt;
 &lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;10.0.20.0/24 *(The CIDR block of your public subnet)&lt;br&gt;
 **Allow / Deny&lt;/em&gt;&lt;em&gt;: Select **Allow&lt;/em&gt;* from the drop-down menu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbthjc6md6io4zzsl9hb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsbthjc6md6io4zzsl9hb.png" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**IMP : **When you add or remove rules from a network ACL, the changes are automatically applied to the subnets it is associated with. NACLs may take longer to propagate, as opposed to security groups, which take effect almost immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Launching EC2 Instance on a Private Subnet.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the AWS Management Console search bar, enter &lt;em&gt;EC2&lt;/em&gt;, and click the &lt;strong&gt;EC2&lt;/strong&gt; result under &lt;strong&gt;Services.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Key pair from EC2 left pane.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv2wuy5qfn3odilj9dhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv2wuy5qfn3odilj9dhv.png" width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Launch instances.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Name and tags&lt;/strong&gt; section, enter &lt;em&gt;private&lt;/em&gt; under &lt;strong&gt;Name.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8a54iw8zo5z6hwgfja2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8a54iw8zo5z6hwgfja2.png" width="800" height="731"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Instance Type&lt;/strong&gt; section, you should not change any options. Simply make sure the default **t2.micro **is selected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Key Pair created earlier from drop down.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Network settings&lt;/strong&gt; section, click &lt;strong&gt;Edit&lt;/strong&gt;, and configure the following instance details:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC&lt;/strong&gt;: Select the &lt;strong&gt;acloudguy-vpc-demo&lt;/strong&gt; VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subnet&lt;/strong&gt;: Select the **Private-A **subnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auto-assign Public IP&lt;/strong&gt;: Make sure this is &lt;strong&gt;disabled&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Firewall&lt;/strong&gt;: Select &lt;strong&gt;Create security group&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security group name&lt;/strong&gt;: Enter &lt;em&gt;SG-Private&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Enter &lt;em&gt;Security group for private subnet instances. Accept SSH inbound requests from Bastion host only&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: SSH&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocol&lt;/strong&gt;: TCP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Port&lt;/strong&gt;: 22&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source type&lt;/strong&gt;: Custom&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: SG-bastion&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Tip: *If you don’t recall the name of your bastion host’s security group, leave the **Source&lt;/em&gt;* as &lt;strong&gt;Custom&lt;/strong&gt;, and start typing “&lt;em&gt;bastion&lt;/em&gt;”. It will find the security group for you. (Example: SG-bastion)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add security group rule&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: HTTPS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocol&lt;/strong&gt;: TCP&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Port&lt;/strong&gt;: 443&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source type&lt;/strong&gt;: Custom&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;em&gt;10.0.20.0/24 (Public VPC CIDR)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: If you also needed Windows access, you would add another rule: Type RDP; Protocol TCP; Port 3389; Source &lt;em&gt;SG-bastion&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfeekqpuc4b0ikd4gbgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfeekqpuc4b0ikd4gbgm.png" width="800" height="765"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the &lt;strong&gt;Summary&lt;/strong&gt; section and click &lt;strong&gt;Launch instance&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Test Internet access from EC2 Instance on a Private Subnet.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect to EC2 instance &amp;amp; hit sudo yum update&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vlse7xihicr5lx0hzhc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vlse7xihicr5lx0hzhc.png" width="800" height="46"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Although the private instance security group is configured correctly, and you should have outbound access to the internet, it still timed out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The time out is caused by the private NACL denying inbound HTTP traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will need Network Address Translation (NAT) to allow your private instance *outgoing *connectivity to the Internet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : Change Routes for Private Subnet from IGW to NGW.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;PrivateRouteTable&lt;/strong&gt; details page, in the &lt;strong&gt;Routes&lt;/strong&gt; tab, click &lt;strong&gt;Edit routes&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add route&lt;/strong&gt; and configure the following route settings:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destination&lt;/strong&gt;: Enter &lt;em&gt;0.0.0.0/0&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: Remove IGW &amp;amp; ADD NGW created in STEP 3*&lt;em&gt;.&lt;/em&gt;*&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This route will eventually send traffic originating from your private subnet and bound for the public internet, to a NAT device.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save changes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Subnets&lt;/strong&gt; from the left navigation pane, then select the &lt;strong&gt;Private-A&lt;/strong&gt; subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Route Table&lt;/strong&gt; tab, and click &lt;strong&gt;Edit route table association&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;PrivateRouteTable&lt;/strong&gt; from the **Route table ID **drop-down menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Final Test Internet access from EC2 Instance on a Private Subnet.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Important!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are &lt;strong&gt;two important configurations worth mentioning&lt;/strong&gt; again as to why this command should work in your lab environment:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The private NACL has an Outbound Rule permitting HTTP (port 80) or HTTPS (port 443) access to anywhere on the internet (0.0.0.0/0)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The security group for the NAT device allows HTTP/S access from any instance in the private subnet (that uses the private instance security group, which permits any destination as well)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect to EC2 instance and Run &lt;strong&gt;sudo yum update -y&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SUCCESS !! It worked!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlsg1a8dq38l6floysom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlsg1a8dq38l6floysom.png" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  STEP 11 : Decommission:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to EC2 -&amp;gt; Terminate the Instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Nat Gateways -&amp;gt; Delete the Nat Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Elastic IP address -&amp;gt; release IP address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to VPC -&amp;gt; Delete VPC&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The VPC has been configured with two subnets, a public subnet, and a private subnet. If a subnet’s traffic is routed to an Internet gateway, the subnet is known as a &lt;em&gt;public subnet.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If a subnet doesn’t have a route to the Internet gateway, the subnet is known as a &lt;em&gt;private subnet&lt;/em&gt;. Instances launched in a private subnet do not have publicly routable internet addresses either.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Both subnets have a route table associated with them. Instances on the public subnet route internet traffic through the internet gateway. The private subnet routes internet traffic through the NAT device (gateway or instance).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each instance launched in either subnet has its own security group with inbound and outbound rules, to guarantee access is locked down to specific ports and protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For example, private instances on the private subnet allow any outbound traffic but only allow SSH access from the bastion host.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As another example, although the NAT device is in the public subnet, it cannot be reached from the internet. It has an inbound rule that only grants instances from the private security group (private instances) access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Note that you might allow SSH access from your personal IP address or specific administrator’s as well, or perhaps grant ICMP (ping) access during setup and troubleshooting efforts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In addition to security groups, the private subnet also has a network access control list (NACL) as an added measure of security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NACL’s allow for inbound and outbound rules, specified in priority order. They are set up as implicit allow rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If none of them are matched, all other traffic is denied.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This was proven to work in the Lab by performing operating system updates once the NAT device was in place. The private route table sends the traffic from the instances in the private subnet to the NAT device in the public subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The NAT device sends the traffic to the Internet gateway for the VPC. The traffic is attributed to the Elastic IP address of the NAT device.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2FNaN%2F1%2AGN_aGfeBV2IY9xWCje9LCg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2FNaN%2F1%2AGN_aGfeBV2IY9xWCje9LCg.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am **Kunal Shah&lt;/em&gt;&lt;em&gt;, AWS Community Builder, AWS Certified Professional Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 9+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Cloud Native, Generative AI, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #VPC #network #security #troubleshoot #hybrid #network #peering #segmentation #validatations #isolated #solution #war #reliability #operations #Excellence #infrastructure #deployment #private #secure #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;*You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;*acloudguy.in&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>vpc</category>
      <category>security</category>
    </item>
    <item>
      <title>AWS Network Access Analyzer Overview</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Tue, 27 Aug 2024 11:26:00 +0000</pubDate>
      <link>https://forem.com/aws-builders/improve-and-analyze-aws-vpc-security-posture-with-network-access-analyzer-22ke</link>
      <guid>https://forem.com/aws-builders/improve-and-analyze-aws-vpc-security-posture-with-network-access-analyzer-22ke</guid>
      <description>&lt;h3&gt;
  
  
  AWS Cloud Hands-on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fde8elcfiehsb9m6be5zp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fde8elcfiehsb9m6be5zp.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Project Overview —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS Network Access Analyzer project aims to provide a comprehensive understanding and practical demonstration of the Network Access Analyzer (NAA) feature within Amazon VPC. This lab will equip participants with the knowledge and skills to effectively assess, verify, and improve their VPC network security posture.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Solutions Architecture —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwwyy7l1x8k1ixlb5fhaa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwwyy7l1x8k1ixlb5fhaa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;First Let’s understand the real world use case :&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Network Access Analyzer uses automated reasoning algorithms to analyze the network paths that a packet can take between resources in an AWS network.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The key concepts of the Network Access Analyzer are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Network Access Scope&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Findings&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;strong&gt;Network Access Scope&lt;/strong&gt; determines the types of findings that the analysis produces. You add entries to &lt;strong&gt;MatchPaths&lt;/strong&gt; to specify the types of network paths to identify. You add entries to &lt;strong&gt;ExcludePaths&lt;/strong&gt; to specify the types of network paths to exclude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Findings&lt;/strong&gt; are potential paths in your network that match any of the MatchPaths entries in your Network Access Scope, but do not match any of the ExcludePaths entries in your Network Access Scope.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Security Audits and Compliance Verification:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; A financial services company needs to ensure that their network configurations comply with industry regulations such as PCI-DSS or HIPAA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; The Network Access Analyzer can be used to scan the VPC configurations and identify any non-compliant access patterns, helping the company verify that their network setup adheres to the required security standards.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Proactive Threat Detection:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; A healthcare provider wants to minimize the risk of unauthorized access to sensitive patient data stored in their AWS environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; The analyzer helps identify potential security gaps or misconfigurations, such as overly permissive security groups, that could be exploited by malicious actors, allowing the provider to tighten security controls before an incident occurs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Network Segmentation Validation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; An e-commerce platform separates its production, development, and testing environments within the same VPC to maintain strict isolation between them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; The Network Access Analyzer can verify that the segmentation is correctly configured, ensuring that there is no unintended communication between environments that could lead to data leakage or cross-environment attacks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Incident Response and Forensics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; A tech company experiences a potential security breach and needs to quickly assess if the VPC’s network configuration contributed to the incident.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; The Network Access Analyzer can be used to analyze the network access paths that existed at the time of the incident, helping the incident response team identify misconfigurations or unauthorized access that may have facilitated the breach.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prerequisite —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Knowledge about basic networking concepts (such as IP Addressing, CIDR notation, and routing), an understanding with basic cloud operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Familiarity with navigating the AWS Management Console.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;AWS Services Usage —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS VPC, EC2, SSM, S3, Endpoints, Network Analyzer, CloudFormation and IAM&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;STEP BY STEP GUIDE -&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Clone the GitHub Repo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to following GitHub Repository &lt;a href="https://github.com/Kunal-Shah107/VPC-Network-Access-Analyzer.git" rel="noopener noreferrer"&gt;**VPC-Network-Access-Analyzer&lt;/a&gt;**&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the repo to download the CloudFormation Template used for this project lab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation template name — &lt;strong&gt;custom-vpc-cfn-template.yaml&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgfcyh5ukiwrsobmlm8iy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgfcyh5ukiwrsobmlm8iy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS resources through CloudFormation service.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS CloudFormation Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Head over &amp;amp; change the region of the aws console where you want to deploy the Primary region resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NOTE :&lt;/strong&gt; CODE IS TESTED IN &lt;strong&gt;Middle East (Bahrain) me-south-1&lt;/strong&gt; region.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you want to use other region then you will have to modify the CloudFormation template accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Create Stack &amp;amp; upload the template downloaded in the &lt;strong&gt;step 1.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F3b1s5j6wr8jlub6i17nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3b1s5j6wr8jlub6i17nq.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This stack will create Three VPC and 3 EC2 Instances as depicted on the architecture diagram with public and private subnet, an internet gateway, Nat Gateway, Security Groups required for this lab exercise.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can verify the deployments by exploring VPC, EC2 sections on AWS management Console.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fei2jcjgfi3ehasxoox23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fei2jcjgfi3ehasxoox23.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fdbgz7385iqmn52xi3z8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fdbgz7385iqmn52xi3z8b.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Explore and Analyze&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TASK 1 : Use a Network Access Scope template to analyze ingress traffic&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In this scenario, we will use a pre-built template to analyze available traffic paths from an internet gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the left navigation pane, scroll down to the bottom of the page, and choose &lt;strong&gt;Network Manager&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1gb1d66ba2ggm1k6z16q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1gb1d66ba2ggm1k6z16q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now In the left navigation pane, choose &lt;strong&gt;Network Access Analyzer&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Get started&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fy4vqsv0e8u0sz9k1y46b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fy4vqsv0e8u0sz9k1y46b.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We are going to use templates to create new Network Access Scopes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fn004dumc8pq4mcjret0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fn004dumc8pq4mcjret0s.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose the template named &lt;strong&gt;Identify access from Internet Gateways&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; , then configure:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fh7qriowe0f96gsq9u1m6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fh7qriowe0f96gsq9u1m6.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: naa-ingress-routes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave the default configuration in the rest of the fields.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review the template and conditions within the Network Access Scope.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fxplbke0vo2aj1mqopox3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fxplbke0vo2aj1mqopox3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fmwxhoog7z966jk44q013.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fmwxhoog7z966jk44q013.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select the naa-ingress-routes and click on Analyze.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The analysis takes a few minutes or less to complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After completion, the result is &lt;strong&gt;Findings detected&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fm38kr7jzklrs2ybxs7hb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fm38kr7jzklrs2ybxs7hb.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This page also presents a path display. The display presents the network elements within the ingress path from &lt;strong&gt;Source&lt;/strong&gt; to &lt;strong&gt;Destination&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The ingress path analysis starts from the internet gateway of &lt;strong&gt;VPC3&lt;/strong&gt; all the way up to the network interface of &lt;strong&gt;VPC3-public-ec2.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F3bimfle9cw4dstwvasfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3bimfle9cw4dstwvasfy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Review the network architect diagram provided at the top Both &lt;strong&gt;VPC2&lt;/strong&gt; and &lt;strong&gt;VPC3&lt;/strong&gt; have an internet gateway. But Findings are only of &lt;strong&gt;VPC3.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The reason is — the &lt;strong&gt;Network Access Scope definition&lt;/strong&gt; for this analysis has a source of &lt;strong&gt;internet gateway&lt;/strong&gt; and a destination of &lt;strong&gt;network interface&lt;/strong&gt;, in this case &lt;strong&gt;VPC2-private-ec2&lt;/strong&gt; is in a private subnet, and internet gateways do not have a direct path to network interfaces in a private subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This analysis helps verify ingress traffic paths, and even demonstrate compliance in certain use cases.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TASK 2 : Verify the use of a NAT gateway for internet traffic&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A very common use case for having a NAT gateway in a VPC is to enable internet access for a private subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are some use cases where you have a private subnet that does not require access to the internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In our architecture Both &lt;strong&gt;VPC1&lt;/strong&gt; and &lt;strong&gt;VPC2&lt;/strong&gt; have private subnets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;However, Only VPC2 contains NAT gateway which means only Private subnet in VPC2 requires access to Internet, while private subnet in VPC1 does not require internet access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lets use Network Access Analyzer to validate this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Network Access Analyzer&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Empty template.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F4mgcccha8ykag7vk5hca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F4mgcccha8ykag7vk5hca.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; , then configure:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: NAT-Gateway-usecase&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fkd7hztdcrhdkhhak8wwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fkd7hztdcrhdkhhak8wwp.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Add match condition&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No conditions configured under &lt;strong&gt;Source&lt;/strong&gt; section.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Destination&lt;/strong&gt; section:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource selection&lt;/strong&gt;: choose ‘Resource types’&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource types&lt;/strong&gt;: choose ‘Internet Gateways’&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; and Review the Network Access Scope definition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F0td4vpqct0szktwossx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0td4vpqct0szktwossx3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select the &lt;strong&gt;NAT-Gateway-usecase&lt;/strong&gt; and click on Analyze.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The analysis takes a few minutes or less to complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After completion, the result is &lt;strong&gt;Findings detected&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F72qhiufu62k6um5yqmw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F72qhiufu62k6um5yqmw1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fkz6it5zs4tpi7zup4w1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fkz6it5zs4tpi7zup4w1b.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As expected, there are two &lt;strong&gt;Findings&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;private&lt;/strong&gt; EC2 Instance in &lt;strong&gt;VPC2&lt;/strong&gt; accessing the internet gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;public&lt;/strong&gt; EC2 Instance in &lt;strong&gt;VPC3&lt;/strong&gt; accessing the internet gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The findings do not include the private EC2 instance in &lt;strong&gt;VPC1&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Toggle between the two findings and review the display path for each finding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You see a NAT gateway within the path for &lt;strong&gt;VPC2&lt;/strong&gt; instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This validates the architecture diagram, showing internet access is enabled for the private subnet in VPC2 through the NAT gateway; while the private subnet in VPC1 does not have access to the internet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fcu9m3ftczgrk0n0sxmmo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fcu9m3ftczgrk0n0sxmmo.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TASK 3 : Duplicate and modify a Network Access Scope&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Network Access Scopes can be duplicated, modified, then used to run a new analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This can help save time from creating a new Network Access Scope.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In this task, duplicate the &lt;strong&gt;NAT-Gateway-usecase&lt;/strong&gt; Network Access Scope created in the previous task, and use the new scope to check any internet access path that &lt;strong&gt;doesn’t&lt;/strong&gt; include a NAT gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;NAT-Gateway-usecase.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the &lt;strong&gt;Actions&lt;/strong&gt; button, choose ‘Duplicate and modify’.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fiml5c4fqshdfnil7ll9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fiml5c4fqshdfnil7ll9d.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the Duplicate Network Access Scope page, configure:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: &lt;strong&gt;NO-NAT-Gateway-usecase.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;Exclusion conditions&lt;/strong&gt; section, choose &lt;strong&gt;Add exclusion condition&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Through&lt;/strong&gt; section, choose &lt;strong&gt;Resource types&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource Types&lt;/strong&gt;: NAT Gateways&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Duplicate and analyze Network Access Scope&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fczayuxmer8pziumcjdzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fczayuxmer8pziumcjdzl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fr8i0jvm0bbu1tmthd8uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fr8i0jvm0bbu1tmthd8uy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After a few moments the ‘Analysis status’ for the newly created scope transitions to Complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is one &lt;strong&gt;Finding&lt;/strong&gt; -&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;EC2 Instance (VPC3-public-ec2) in &lt;strong&gt;VPC3&lt;/strong&gt; accessing the internet gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is because instance is in a public subnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This confirms what we observed in the architecture diagram.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPC3&lt;/strong&gt; can access the internet directly, without the need of a NAT gateway.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TASK 4 : Demonstrate a network configuration meets compliance requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In this final task, We configure a network change and demonstrate a compliant configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here the private instance in &lt;strong&gt;VPC2&lt;/strong&gt; is required to access a specific IP address and port number.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow egress traffic to destination IP address — 172.217.164.110 &lt;em&gt;(this is an google.com IP address)&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Destination port number — 443.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lets review the current internet bound configuration path for &lt;strong&gt;VPC2-private-ec2.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Network Access Analyzer&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Empty template.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; , then configure:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;: VPC2-private-outbound-path&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Add match condition&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Source&lt;/strong&gt; section:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource selection&lt;/strong&gt;: choose ‘Resource IDs’&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource types&lt;/strong&gt;: choose EC2 Instances&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource IDs&lt;/strong&gt;: choose VPC2-private-ec2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Destination&lt;/strong&gt; section:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource selection&lt;/strong&gt;: choose ‘Resource types’&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource types&lt;/strong&gt;: choose Internet Gateways&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fomj3q3qgds4mlw78dfrn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fomj3q3qgds4mlw78dfrn.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fmukqfrjcvfhu9u5iyoko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fmukqfrjcvfhu9u5iyoko.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Next&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review the Network Access Scope definition.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create Network Access Scope&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;select VPC2-private-outbound-path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit &lt;strong&gt;Analyze&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fw7jja9jlmiwoxkx1io7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fw7jja9jlmiwoxkx1io7f.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fxennql08jhpubk4uwhg9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fxennql08jhpubk4uwhg9.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When the analysis is complete, the result is: &lt;strong&gt;Findings detected&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review the path analysis and notice the second element in the path is the Security Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Destination&lt;/strong&gt; address is 0.0.0.0/0 ; and the outbound port is 80&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now lets &lt;strong&gt;Update the security group to match the requirement.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the security group label.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the security group Resource ID.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Outbound rules&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Edit outbound rules&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;HTTP **drop down list, choose **HTTPS&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Replace the 0.0.0.0/0 destination address with 172.217.164.110/32&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Save rules&lt;/strong&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fjth74a9oijtpr92tk869.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fjth74a9oijtpr92tk869.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now select VPC2-private-outbound-path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit &lt;strong&gt;Analyze&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review the path analysis and notice the second element in the path is the Security Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Destination&lt;/strong&gt; address is 172.217.164.110/32 ; and the outbound port is 443&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F50cwugo8y2ekl1hlhqlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F50cwugo8y2ekl1hlhqlp.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This analysis validates the current configuration is compliant with the requirement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understood, verified, and improved a network security posture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Demonstrated a network configuration meets compliance requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  STEP 4 : Decommission:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to CloudFormation Stack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete the CloudFormation Stack created for this lab.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab to Improve and Analyze AWS VPC Security Posture with AWS Network Access Analyzer.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fxzh9rbdv4uxfy9ucggkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fxzh9rbdv4uxfy9ucggkl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Community Builder, AWS Certified Professional Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 9+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Cloud Native, Generative AI, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #VPC #network #access #analyzer #cloudformation #compliance #troubleshoot #network #security #hybrid #network #peering #segmentation #validatations #isolated #solution #war #reliability #operations #Excellence #infrastructure #deployment #private #secure #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>vpc</category>
      <category>networking</category>
      <category>community</category>
    </item>
    <item>
      <title>Deploy Rancher on Azure AKS using Azure Cli &amp; Helm Charts</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Wed, 01 May 2024 08:20:10 +0000</pubDate>
      <link>https://forem.com/aws-builders/deploy-rancher-on-azure-aks-using-azure-cli-helm-charts-2825</link>
      <guid>https://forem.com/aws-builders/deploy-rancher-on-azure-aks-using-azure-cli-helm-charts-2825</guid>
      <description>&lt;h3&gt;
  
  
  Azure Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3280%2F1%2AE-724eqDeotx06J34MhSKQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3280%2F1%2AE-724eqDeotx06J34MhSKQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Project Overview —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project revolves around Azure AKS where we deploy Rancher (platform for Kubernetes management). Rancher is a Kubernetes management tool to deploy and run clusters anywhere and on any provider. Azure AKS &amp;amp; Rancher is very vital combination when it comes to managing multi-cluster Kubernetes workloads from Single Dashboard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ACbvQVWtApLE2j4d53riXjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ACbvQVWtApLE2j4d53riXjg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case :&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hybrid Cloud Management for a Global E-Commerce Platform:&lt;/strong&gt; Imagine a large e-commerce platform that serves customers globally. The platform’s infrastructure spans multiple regions to ensure low-latency access and high availability. The architecture includes microservices running on Kubernetes clusters managed by AWS EKS. Additionally, the company has on-premises data centers hosting legacy applications. Rancher provides a unified dashboard for managing EKS clusters spread across various regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finance: Multi-Tiered Application Deployment:&lt;/strong&gt; A financial institution is migrating its legacy monolithic applications to microservices architecture on AWS EKS. The institution operates in multiple regions and requires secure and efficient deployment of multi-tiered applications. Rancher simplifies the deployment of microservices across EKS clusters in different regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retail: Seasonal Application Scaling:&lt;/strong&gt; A retail chain experiences significant fluctuations in website traffic during holiday seasons. They need a solution to dynamically scale their applications on EKS to handle increased demand. Rancher enables automated scaling of applications based on predefined policies. Provides visibility into application performance, helping to optimize resource allocation during peak times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manufacturing: Edge Computing for IoT Devices:&lt;/strong&gt; A manufacturing company utilizes IoT devices across its facilities to monitor and optimize production processes. They need a solution to manage Kubernetes clusters at the edge for real-time data processing. Rancher supports the deployment of Kubernetes clusters at the edge, close to IoT devices. It also enables centralized management of edge clusters for easier monitoring and updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Media and Entertainment: Content Delivery Optimization:&lt;/strong&gt; A media streaming service operates globally and needs to optimize content delivery for users. They want to deploy and manage Kubernetes clusters efficiently to ensure low-latency streaming. It Integrates with AWS services like Amazon CloudFront for efficient content caching. Allows for easy scaling and updating of streaming applications across clusters. Facilitates the deployment of edge-native applications to process data locally.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These diverse use cases demonstrate the versatility of Rancher on &lt;strong&gt;AZURE AKS&lt;/strong&gt; in addressing industry-specific challenges and enhancing the management of Kubernetes clusters in various contexts. &lt;strong&gt;Rancher&lt;/strong&gt; simplifies operations, enhances security, and provides a unified platform for managing the hybrid cloud environment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prerequisite —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;AZURE ACCOUNT with valid Subscription ID.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource Group for creating Azure resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux" rel="noopener noreferrer"&gt;AZURE CLI&lt;/a&gt; (on local machine)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;HELM&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;KUBECTL&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Azure Services Usage —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Azure Resources Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure AKS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Vnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Loadbalancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Managed Identity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual Machine Scale Set&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;STEP BY STEP GUIDE -&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Setting environment variables&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start the new terminal on local machine (linux/ubuntu/wsl)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set following env variables :&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AZURE_LOCATION=Azure Region (example uaenorth)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CERT_MANAGER_VERSION=v1.12.5 (Cert Manager Version)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;KUBERNETES_VERSION=v1.26.6 (K8s Version)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NODE_COUNT=2 (Number of Nodes required)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RANCHER_VERSION=2.7.6 (Rancher Manager Version)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RESOURCE_PREFIX=aks-demo (Name of Resource Group in Azure)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SUBSCRIPTION_ID=XXXXXXX-XXXXXX (Subscription ID of Azure)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VM_SIZE=Standard_D2s_v3 (Azure VM Instance Type)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;EMAIL_ADDRESS=&lt;a href="mailto:youremail@domain.com"&gt;youremail@domain.com&lt;/a&gt; (Azure account email)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Add Helm Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;helm repo add devpro &lt;a href="https://devpro.github.io/helm-charts" rel="noopener noreferrer"&gt;https://devpro.github.io/helm-charts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This repository contains Helm charts to build clusters with all components running in containers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;helm repo add jetstack &lt;a href="https://charts.jetstack.io" rel="noopener noreferrer"&gt;https://charts.jetstack.io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;helm repo add ingress-nginx &lt;a href="https://kubernetes.github.io/ingress-nginx" rel="noopener noreferrer"&gt;https://kubernetes.github.io/ingress-nginx&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;helm repo add rancher-latest &lt;a href="https://releases.rancher.com/server-charts/latest" rel="noopener noreferrer"&gt;https://releases.rancher.com/server-charts/latest&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;helm repo update&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;helm repo list&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AgS1uypVKnzzlxXYsQIltDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AgS1uypVKnzzlxXYsQIltDQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Login to Azure through Azure CLI for Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run &lt;strong&gt;az login&lt;/strong&gt; on local terminal (It will open a window in your browser automatically.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If not then you will get a link in CLI output, copy that generated link &amp;amp; paste in your browser to authenticate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set Subscription if you have multiple subscription. (optional if you have only one subscription)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;az account set —subscription $SUBSCRIPTION_ID&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create the resource group. (optional if you have already created)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;az group create —name $RESOURCE_PREFIX —location ${AZURE_LOCATION}&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2672%2F1%2ANUYKQM_iDDTKNxWpZSNbBg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2672%2F1%2ANUYKQM_iDDTKNxWpZSNbBg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2ALc0mWL7t3FPi9-sxG1nOgQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2ALc0mWL7t3FPi9-sxG1nOgQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Creating Kubernetes Cluster (AKS) in NEW VNET&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CASE 1&lt;/strong&gt; : AKS in new VNET&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;az aks create —resource-group $RESOURCE_PREFIX —name $RESOURCE_PREFIX —kubernetes-version $KUBERNETES_VERSION -node-count $NODE_COUNT —node-vm-size $VM_SIZE&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CASE 2&lt;/strong&gt; : AKS in existing VNET&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;az aks create —resource-group $RESOURCE_PREFIX —name $RESOURCE_PREFIX —kubernetes-version $KUBERNETES_VERSION -node-count $NODE_COUNT —node-vm-size $VM_SIZE —network-plugin azure -vnet-subnet-id/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_PREFIX/providers/Microsoft.Network/virtualNetworks/AZURE_VNET_NAME/subnets/AZURE_SUBNET_NAME&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We are demonstrating &lt;strong&gt;CASE 1&lt;/strong&gt; — NEW VNET&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After running the command from &lt;strong&gt;CASE 1&lt;/strong&gt; — This will take some time to create AKS &amp;amp; store ssh keys at your &lt;strong&gt;/home/username/.ssh&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;These keys are used to ssh into the worker nodes (VMs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the AKS is ready it will give you cluster information in the CLI output.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2660%2F1%2AEljAJIJR5FXmbU8BDzrZEQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2660%2F1%2AEljAJIJR5FXmbU8BDzrZEQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2AUi6VuhIBKAKv_PPvWtQ7Vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2646%2F1%2AUi6VuhIBKAKv_PPvWtQ7Vw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Access the AKS Cluster through kubectl&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;let’s add cluster credentials to local config of kubectl.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;az aks get-credentials — resource-group $RESOURCE_PREFIX -name $RESOURCE_PREFIX&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the nodes &amp;amp; all resources using kubectl.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl get nodes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl get all -A&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TIP&lt;/strong&gt; — If you face any permission issue then change permission for ~/.kube/config&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vanilla Cluster on AKS is ready with requested worker nodes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A2MQy_3QJZNw3WNnmNFOhrg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A2MQy_3QJZNw3WNnmNFOhrg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Ngnix Ingress Installation (exposing to Internet)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run below mentioned commands from local machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;helm upgrade —install ingress-nginx ingress-nginx/ingress-nginx —namespace ingress-nginx —create-namespace —set controller.service.annotations.”service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path”=/healthz&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the services:&lt;/strong&gt; kubectl get services -n ingress-nginx&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AWBxfkYrqGq4RHTl8g9gyfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AWBxfkYrqGq4RHTl8g9gyfg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Let’s store value of Public IP which needs to be used at the time of Rancher Installation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PUBLIC_IP_NGINX=&lt;/strong&gt; &lt;code&gt;kubectl get service -n ingress-nginx ingress-nginx-controller —output jsonpath=’{.status.loadBalancer.ingress[0].ip}’&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;echo &lt;strong&gt;$PUBLIC_IP_NGINX&lt;/strong&gt; (It should give Public IP)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Install Certificates manager.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run below mentioned commands from local machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl apply -f &lt;a href="https://github.com/cert-manager/cert-manager/releases/download/$%7BCERT_MANAGER_VERSION%7D/cert-manager.crds.yaml" rel="noopener noreferrer"&gt;https://github.com/cert-manager/cert-manager/releases/download/$CERT_MANAGER_VERSION/cert-manager.crds.yaml&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;helm upgrade —install cert-manager jetstack/cert-manager —namespace cert-manager —create-namespace —version $CERT_MANAGER_VERSION&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl get pods — namespace cert-manager ( 3 pods should be in Running status)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2118%2F1%2A9thgbUsorCFYUEFif7Z9_g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2118%2F1%2A9thgbUsorCFYUEFif7Z9_g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;helm upgrade —install letsencrypt devpro/letsencrypt —set registration.emailAddress=$EMAIL_ADDRESS —namespace cert-manager&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl get clusterissuer -n cert-manager ( 2 Cluster issuers should be True)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2052%2F1%2AUT3MqirozrW9kDo_1VdXzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2052%2F1%2AUT3MqirozrW9kDo_1VdXzg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Rancher Installation.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run below mentioned commands from local machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl create namespace cattle-system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;helm upgrade —install rancher rancher-latest/rancher —namespace cattle-system —set hostname=rancher.$PUBLIC_IP_NGINX.sslip.io -set ‘ingress.extraAnnotations.cert-manager\.io/cluster-issuer=letsencrypt-prod’ —set ingress.ingressClassName=nginx —set ingress.tls.source=secret —set ingress.tls.secretName=tls-rancher —set replicas=2 —version $RANCHER_VERSION&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check the status of installation &amp;amp; wait for it to complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl -n cattle-system rollout status deploy/rancher&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2324%2F1%2AmgF2V72nC8dfOGNO691JyA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2324%2F1%2AmgF2V72nC8dfOGNO691JyA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fetch the generated password &amp;amp; copy it&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kubectl get secret —namespace cattle-system bootstrap-secret -o go-template=’ .data.bootstrapPassword|base64decode“\n”’&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Accessing the Rancher UI :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;echo &lt;a href="https://rancher.$PUBLIC_IP_NGINX.sslip.io/" rel="noopener noreferrer"&gt;https://rancher.$&lt;strong&gt;PUBLIC_IP_NGINX&lt;/strong&gt;.sslip.io/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copy URL &amp;amp; Paste on browser for Initial setup of Rancher.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2628%2F1%2AeQYgvS2-vE4DkTdsycARpA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2628%2F1%2AeQYgvS2-vE4DkTdsycARpA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the logs&lt;/strong&gt; → kubectl logs -n ingress-nginx -l &lt;a href="http://app.kubernetes.io/component=controller" rel="noopener noreferrer"&gt;app.kubernetes.io/component=controller&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You will be asked for password ( copied earlier )&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hit Log in with Local User.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Define the admin password, check the box and click on “Continue”. (store it)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finally Rancher is running and you can explore “local” cluster.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3824%2F1%2AxqLf4YNJooQgxUvxZa9OSA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3824%2F1%2AxqLf4YNJooQgxUvxZa9OSA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run below command to destroy all resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;kubectl delete ns cert-manager&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;kubectl delete ns ingress-nginx&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decommission the resources under the Azure Resources group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete the Resources Group at the end.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for Deploying Rancher on Azure AKS using Azure CLI &amp;amp; Helm Charts.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2ABSmZ66aQTjoRSLkOrd8dpA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2400%2F1%2ABSmZ66aQTjoRSLkOrd8dpA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 9+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #azure #aks #managed #kubernetes #solution #rancher #solution #management #centralize #dashboard #easy #management #scalability #operational #efficiency #robust #infrastructure #highly #available #reliable #controlled #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>containers</category>
    </item>
    <item>
      <title>Failover Mechanism in Amazon Route 53 Private Hosted Zones</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Wed, 20 Mar 2024 11:11:50 +0000</pubDate>
      <link>https://forem.com/aws-builders/failover-mechanism-in-amazon-route-53-private-hosted-zones-lb</link>
      <guid>https://forem.com/aws-builders/failover-mechanism-in-amazon-route-53-private-hosted-zones-lb</guid>
      <description>&lt;h2&gt;
  
  
  Failover Mechanism in Amazon Route 53 Private Hosted Zones
&lt;/h2&gt;

&lt;p&gt;AWS Cloud Hands-on Lab Practice Series&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oepx0kdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2AOuZYlj9p9s8ag2_4qWMXfQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oepx0kdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2AOuZYlj9p9s8ag2_4qWMXfQ.png" alt="" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Project Overview —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS Route 53 Failover project aims to architect a secure, cost-efficient, Fault tolerant and Highly available cloud environment. The project’s primary goal is to provide how to configure DNS entries on Amazon Route 53 to do dynamic routing between resources in different AWS regions while adhering to AWS best practices and compliance requirements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fm6gUUD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A2VNps5Suj_TtwvHWtSK0KQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fm6gUUD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A2VNps5Suj_TtwvHWtSK0KQ.png" alt="" width="641" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;First Let’s understand the real world use case :&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1.Disaster Recovery:&lt;/strong&gt; In a disaster recovery setup, where you have primary and secondary data centers or regions, failover policies can automatically redirect traffic from the primary to the secondary site in case of a failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; let’s say you have a primary data center in US-East (Virginia) and a secondary data center in US-West (Oregon). If the primary data center experiences an outage, Route 53 failover policies can redirect traffic to the secondary data center.&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Multi-Region Redundancy:&lt;/strong&gt; For global applications that require high availability, you may deploy identical application stacks in multiple AWS regions. Failover policies can route traffic to the closest healthy region or distribute traffic evenly across regions based on health checks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; If your application is deployed in US-East (Virginia) and EU-West (Ireland), Route 53 can route traffic to the region with the lowest latency or the region that passes health checks.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Blue/Green Deployments:&lt;/strong&gt; During software updates or deployments, you can use failover policies to perform blue/green deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example :&lt;/strong&gt; For instance, suppose you have a production environment (blue) and a staging environment (green). You can update the staging environment, run health checks, and then switch traffic from the production environment to the staging environment using failover policies once the update is successful.&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Highly Available Database Replication&lt;/strong&gt;: Failover policies can be used to manage database failover scenarios where you have active-passive or active-active database replication setups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; For instance, if you have a primary database in one availability zone and a standby database in another availability zone, Route 53 can automatically redirect traffic to the standby database if the primary database becomes unavailable.&lt;/p&gt;

&lt;p&gt;5.&lt;strong&gt;Content Delivery Networks (CDNs):&lt;/strong&gt; In CDN setups, failover policies can be employed to route traffic to alternate CDN endpoints in case of CDN node failures or performance degradation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; If you have CDN endpoints in different regions or with different providers, Route 53 can direct traffic to the next best endpoint if the primary endpoint experiences issues.&lt;/p&gt;

&lt;p&gt;Also when considering the use of failover policies in Amazon Route 53 Private Hosted Zones within the context of the Well-Architected Framework (AWS WAR), it primarily aligns with the “&lt;strong&gt;Reliability&lt;/strong&gt;” and “&lt;strong&gt;Operational Excellence&lt;/strong&gt;” pillars.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prerequisite —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS CLI user with Access key &amp;amp; Secret Key.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;AWS Services Usage —&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS Route53, VPC, EC2, SSM, S3, CloudFormation and IAM&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;STEP BY STEP GUIDE -&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Clone the GitHub Repo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to following GitHub Repository &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover"&gt;AWS-Route53-Failover&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the repo to download the CloudFormation Template &amp;amp; code used for this lab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation template name — &lt;strong&gt;route53-vpc-cfn-template.yaml&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J4pmj0dZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3764/1%2AI1WlFpD03lFgcN3YkydwCQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J4pmj0dZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3764/1%2AI1WlFpD03lFgcN3YkydwCQ.png" alt="" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS resources through CloudFormation service.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS CloudFormation Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Head over &amp;amp; change the region of the aws console where you want to deploy the Primary region resources. (SITE-A)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Create Stack &amp;amp; upload the template downloaded in the step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPC CIDR (SITE-A) : 10.0.0.0/16&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PublicSubnet : 10.0.1.0/24&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HEbuibwd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3596/1%2APFkP0nvQEyb8lVXgy5dcLQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HEbuibwd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3596/1%2APFkP0nvQEyb8lVXgy5dcLQ.png" alt="" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This stack will create one VPC and create a public subnet with two EC2 instances, an internet gateway, with a default route on the public subnet in regions you deployed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0GnR1nXO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AWa3aFMcydJeJaXES0_ey3Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0GnR1nXO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AWa3aFMcydJeJaXES0_ey3Q.png" alt="" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;NOW Head over &amp;amp; change the region of the aws console where you want to deploy the Secondary region resources. (SITE-B)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Create Stack &amp;amp; upload the template downloaded in the step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPC CIDR (SITE-B) : 10.1.0.0/16&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PublicSubnet : 10.1.1.0/24&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wHs3-Pb2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3614/1%2AD16WjG2l7Pn3wpJkCe_8LQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wHs3-Pb2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3614/1%2AD16WjG2l7Pn3wpJkCe_8LQ.png" alt="" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This stack will create one VPC and create a public subnet with two EC2 instances, an internet gateway, with a default route on the public subnet in regions you deployed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aFW9fK8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AdRVP3nPnUC2YswyEqfxJHw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aFW9fK8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AdRVP3nPnUC2YswyEqfxJHw.png" alt="" width="774" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Creating a VPC Peering to connect both regions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Option 1: Use AWS CloudShell to run the commands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Option 2: From your local machine where you have aws cli working with appropriate access key &amp;amp; secret key.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure to edit the regions before running the commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the commands given in &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/VPC%20env%20variable%20script.txt"&gt;VPC env variable script.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ctZBXevC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Avujf-YPJqtb9JBTHZibAeQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ctZBXevC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Avujf-YPJqtb9JBTHZibAeQ.png" alt="" width="594" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get the VPC ID of the respective VPC’s created.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now Run the commands given &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/VPC%20Peering%20Script.txt"&gt;VPC Peering Script.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This will create VPC peering between two VPCs from different AWS Regions (SITE A &amp;amp; SITE B).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cX-hhtT_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AvpIo53T_y10pGNCJ_qhNEQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cX-hhtT_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AvpIo53T_y10pGNCJ_qhNEQ.png" alt="" width="586" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--49m_OhK_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A5Q4CtEh9eKLwXBoXo_0KEg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--49m_OhK_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A5Q4CtEh9eKLwXBoXo_0KEg.png" alt="" width="376" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xeZGOBz5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2532/1%2A6ywNE9OxSncF2e5H1Iti1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xeZGOBz5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2532/1%2A6ywNE9OxSncF2e5H1Iti1g.png" alt="" width="800" height="106"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Creating Private DNS entries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a Route 53 — Private Hosted Zone for the &lt;strong&gt;acloudguy.internal&lt;/strong&gt; DNS entries by associating the Site A.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can change the hosted zone name according to your wish.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the commands from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/private%20DNS%20entries.txt"&gt;private DNS entries.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7hBB2F6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AfcF3mOmkuntix_ZRxNiVDA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7hBB2F6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AfcF3mOmkuntix_ZRxNiVDA.png" alt="" width="730" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fi0ptshA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3104/1%2A1IRJ99k3kp-EWw0N8LqIBw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fi0ptshA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3104/1%2A1IRJ99k3kp-EWw0N8LqIBw.png" alt="" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j6vdxOFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AFPLKj5-E_-boghcjOoCXnA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j6vdxOFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AFPLKj5-E_-boghcjOoCXnA.png" alt="" width="475" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Creating Route 53 Health Check:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get the &lt;strong&gt;public&lt;/strong&gt; IP of both Web Servers. This is because Route 53 health checkers are public and they can only monitor hosts with IP addresses that are publicly routable on the internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/Public-IP-For-Route53-HealthChecks.txt"&gt;Public-IP-For-Route53-HealthChecks.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sGKKNBBG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADDokOBLmoqIAMTqfHSkitA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sGKKNBBG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADDokOBLmoqIAMTqfHSkitA.png" alt="" width="615" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to create a health check policy file: &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/health%20check%20policy.txt"&gt;health check policy.txt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bK1H5X-H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALBqofR-nMc2e8P9E0l2I3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bK1H5X-H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALBqofR-nMc2e8P9E0l2I3w.png" alt="" width="462" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now, Let’s create the health check for our primary endpoint that is in SITE A region.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/Primary-HealthCheck-Record.txt"&gt;Primary-HealthCheck-Record.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The health check will be active in 30–60 seconds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Route53 Console &amp;amp; check the health check section.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4n3mXyN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3414/1%2AHI1s39KHQiZ1Hc_uq7jpDg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4n3mXyN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3414/1%2AHI1s39KHQiZ1Hc_uq7jpDg.png" alt="" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Creating Route 53 Failover Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get the &lt;strong&gt;private&lt;/strong&gt; IP of both Web Servers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/Private-IP-For-Route53-HealthChecks.txt"&gt;Private-IP-For-Route53-HealthChecks.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Esdhji1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AfOQ1VYdAxvfDNkcpfOfZbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Esdhji1t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AfOQ1VYdAxvfDNkcpfOfZbg.png" alt="" width="645" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the Failover routing policy from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/Failover%20policy.txt"&gt;Failover policy.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TIP :&lt;/strong&gt; It’s being used Private IP to keep the communication through VPC Peering.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8F9XPSJx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2As5Ff47aTtDZ3o45aMmu4oQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8F9XPSJx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2As5Ff47aTtDZ3o45aMmu4oQ.png" alt="" width="429" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now Associate the traffic policy to Route53 Private Hosted Zone.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the command from &lt;a href="https://github.com/Kunal-Shah107/AWS-Route53-Failover/blob/main/Associate%20Failover%20Policy.txt"&gt;Associate Failover Policy.txt&lt;/a&gt; file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VgTSu2cB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AodV7qqseXhcnvTkS9Mf7_Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VgTSu2cB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AodV7qqseXhcnvTkS9Mf7_Q.png" alt="" width="739" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We just created a policy similar to the image below: (your public IP &amp;amp; Private IP will be different)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKiINmqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2184/1%2AnElTkyxnq8bDrUkczDO9lQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKiINmqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2184/1%2AnElTkyxnq8bDrUkczDO9lQ.png" alt="" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;STEP 7 : Test the failover policy:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect to EC2 Instance through EC2 Connect from SITE A.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try to access the website using “service.acloudguy.internal”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;dig +short service.acloudguy.internal&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;curl service.acloudguy.internal&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will below responses from it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IuqSJLp3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AYSwEyl1yGfyUmP1Fd4ilxA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IuqSJLp3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AYSwEyl1yGfyUmP1Fd4ilxA.png" alt="" width="660" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now to test the failover, remove Security Group Inbound rules of Primary Site A EC2 Instance from AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once there is no Inbound rule to EC2 Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After 2 minutes, the Health Check will mark the &lt;strong&gt;PRIMARY EC2 Instance&lt;/strong&gt; as &lt;strong&gt;UNHEALTHY&lt;/strong&gt; and will trigger the failover mechanism.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VlySluDT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2634/1%2A0hytNIQON15J7kozJyzCAQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VlySluDT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2634/1%2A0hytNIQON15J7kozJyzCAQ.png" alt="" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Health Check will fail &amp;amp; route the traffic to Secondary Site B EC2 Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We can run the commands again&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;dig +short service.acloudguy.internal&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;curl service.acloudguy.internal&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9M6jHE88--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3410/1%2APDX8IYvxnTJ2ZxHRKKzg7w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9M6jHE88--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3410/1%2APDX8IYvxnTJ2ZxHRKKzg7w.png" alt="" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vzRDFTmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AtDzY9EorKUlMYWLj-UAP3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vzRDFTmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AtDzY9EorKUlMYWLj-UAP3g.png" alt="" width="657" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  STEP 8 : Decommission:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delete all the resources created during the lab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;aws ec2 delete-vpc-peering-connection — vpc-peering-connection-id $PEERING_ID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete the CloudFormation Stacks from SITE A &amp;amp; SITE B Regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete Route53 Health Checks from AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete Route53 Traffic Policy and Private Hosted Zone from Console&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete files health-check-config.json &amp;amp; failover-policy.json&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for How to Implement Failover Policies in Amazon Route 53 Private Hosted Zones.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" alt="" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #VPC #route53 #failover #mechanism #cloudformation #disaster #recovery #network #security #hybrid #network #peering #isolated #solution #war #reliability #operations #Excellence #infrastructure #scalable #highly #available #blue #green #deployment #private #secure #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awscommunity</category>
      <category>route53</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Shielding Your Data: Safeguarding AWS S3 via VPC Endpoints.</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Mon, 19 Feb 2024 10:24:31 +0000</pubDate>
      <link>https://forem.com/aws-builders/shielding-your-data-safeguarding-aws-s3-via-vpc-endpoints-2lic</link>
      <guid>https://forem.com/aws-builders/shielding-your-data-safeguarding-aws-s3-via-vpc-endpoints-2lic</guid>
      <description>&lt;h2&gt;
  
  
  Shielding Your Data: Safeguarding AWS S3 via VPC Endpoints.
&lt;/h2&gt;

&lt;p&gt;Security &amp;amp; Cost Optimization at the same time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--faZCpQK2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AEXyCYyu98comcR5t0XPd8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--faZCpQK2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AEXyCYyu98comcR5t0XPd8w.png" alt="" width="800" height="657"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS VPC Endpoint project aims to architect a secure, cost-efficient, and scalable cloud environment. The project’s primary goal is to provide a standardized framework for setting up AWS VPC endpoint for accessing AWS services privately while adhering to AWS best practices and compliance requirements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CmXWRQwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AUYWcKb0bBCZfrUFrARUJ2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CmXWRQwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AUYWcKb0bBCZfrUFrARUJ2g.png" alt="" width="521" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1.Securing Access to AWS Services:&lt;/strong&gt; VPC endpoints will let you get admission to AWS services inclusive of S3, DynamoDB, or Amazon RDS from within your VPC with out exposing them to the general public net. This enables enhance security by means of reducing the attack floor and gets rid of the need to configure public-dealing with security controls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A enterprise’s application jogging in an AWS VPC desires to get right of entry to records saved in Amazon S3 buckets securely. By the use of VPC endpoints for S3, the employer guarantees that data switch among the application and S3 stays within the AWS community, decreasing exposure to external threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Cost Optimization:&lt;/strong&gt; VPC endpoints can help optimize expenses through decreasing information transfer prices incurred when getting access to AWS services over the public internet. Since information transfer between your VPC and the endpoint service stays in the AWS network, you can avoid information transfer costs associated with net traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; An employer regularly transfers large volumes of facts between its AWS VPC and Amazon S3 buckets for backup and storage functions. By the usage of VPC endpoints for S3, the organization can extensively reduce facts switch costs compared to having access to S3 over the internet.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Compliance Requirements:&lt;/strong&gt; VPC endpoints can assist meet regulatory and compliance necessities with the aid of ensuring that statistics transfer between your VPC and AWS offerings stays private and stable. This is in particular crucial for industries with strict information privateness and compliance requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A healthcare business enterprise desires to ensure that patient data saved in Amazon DynamoDB stays blanketed and compliant with HIPAA regulations. By using VPC endpoints for DynamoDB, the agency ensures that data get entry to is confined to authorized sources inside the VPC, supporting meet compliance necessities.&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Improved Network Performance:&lt;/strong&gt; VPC endpoints can enhance community performance by using lowering latency and enhancing throughput for accessing AWS offerings. Since facts transfer takes place within the AWS community, it may bring about quicker and greater reliable conversation between your VPC and endpoint services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A gaming organization's multiplayer online game calls for actual-time get entry to to Amazon DynamoDB for storing player profiles and sport nation. By the usage of VPC endpoints for DynamoDB, the business enterprise guarantees low-latency get right of entry to to the database, providing a continuing gaming revel in for players.&lt;/p&gt;

&lt;p&gt;Overall, AWS VPC endpoints provide a steady, cost-powerful, and green way to get entry to AWS services from inside your VPC, making them an vital thing of many AWS architectures. By leveraging VPC endpoints, organizations can &lt;strong&gt;increase&lt;/strong&gt; &lt;strong&gt;protection&lt;/strong&gt;, &lt;strong&gt;reduce charges&lt;/strong&gt;, and &lt;strong&gt;enhance performance&lt;/strong&gt; for your AWS cloud workloads.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS Account with Admin Access.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS VPC, Endpoints, EC2, SSM, S3, CloudFormation and IAM&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Clone the GitHub Repo&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to following GitHub Repository &lt;a href="https://github.com/Kunal-Shah107/s3-vpc-endpoint-lab"&gt;**s3-vpc-endpoint-lab&lt;/a&gt;**&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the repo to download the CloudFormation Template for this lab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation template name — &lt;strong&gt;endpoint-lab-cft.yml&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kR7YPiAa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2054/1%2AMYEjAq0MGkRlBR4HBkBYmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kR7YPiAa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2054/1%2AMYEjAq0MGkRlBR4HBkBYmw.png" alt="" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS resources through CloudFormation service.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS CloudFormation Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Head over &amp;amp; change the region of the aws console where you want to deploy the resources. (default is ap-south-1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you want to deploy in any other region you will have modify prefix list in CloudFormation template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Create Stack &amp;amp; upload the template downloaded in the step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as default &amp;amp; hit create.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This stack will create a VPC, EC2, VPC endpoints, Instance profile, Security Group, subnets, route tables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKrc--9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3602/1%2AI_cFlxc6fx6_9H5EEJTSTg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKrc--9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3602/1%2AI_cFlxc6fx6_9H5EEJTSTg.png" alt="" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Verify the CloudFormation deployment.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Check all the resources created/deployed through CloudFormation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify Security group of EC2 to check there is no inbound rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify &amp;amp; validate Security group of endpoints where only VPC CIDR is allowed in inbound rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;all endpoints — ssm, ec2, s3 are deployed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CNPFs0S1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3216/1%2ACHQTymtswKDyFrjmsoDnQg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CNPFs0S1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3216/1%2ACHQTymtswKDyFrjmsoDnQg.png" alt="" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Creating two AWS s3 buckets.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to AWS S3 on aws console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a bucket in the same region where CloudFormation is deployed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is to have a bucket in same region as of s3 gateway endpoint.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create another bucket in different region for testing use case.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rjpTkm7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALjmS0zCGwFjNXdOKaf9Paw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rjpTkm7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALjmS0zCGwFjNXdOKaf9Paw.png" alt="" width="744" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_emb_xf3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A_QpvQqHAsItI9D_8zA99sw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_emb_xf3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A_QpvQqHAsItI9D_8zA99sw.png" alt="" width="742" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Connect to AWS EC2 Instance through SSM&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;As we have deployed AWS ssm endpoint, we should be able to connect the private ec2 instance through ssm connect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is entirely secure &amp;amp; traffic remains in isolated VPC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once connected to EC2, list S3 buckets through usual aws cli command&lt;/p&gt;

&lt;p&gt;aws s3 ls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should get &lt;strong&gt;no response&lt;/strong&gt; as EC2 is private &amp;amp; no traffic is intended to Internet. Hence it is not able to query &lt;strong&gt;s3.ap-south-1.amazonaws.com&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5npgbxTr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AcYoEBRVhykw7LQE6GOabrQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5npgbxTr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AcYoEBRVhykw7LQE6GOabrQ.png" alt="" width="753" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CrlzF8xp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2As6YBJAUoPSjifzrOHe4shg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CrlzF8xp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2As6YBJAUoPSjifzrOHe4shg.png" alt="" width="738" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Accessing AWS S3 via AWS VPC Gateway endpoint&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now we will use AWS VPC Gateway endpoint to access our regional AWS s3 buckets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From EC2 console hit the command —&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;aws s3 ls — region  (same region)&lt;/p&gt;

&lt;p&gt;aws s3 ls --region ap-south-1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---oneoQXC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AuYGwSTLVtmTPwzu0aOJU2A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---oneoQXC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AuYGwSTLVtmTPwzu0aOJU2A.png" alt="" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;List contents from a bucket via s3 gateway endpoint. (same region)&lt;/p&gt;

&lt;p&gt;aws s3 ls s3://mybucket --region ap-south-1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--skrz9m5Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ACc4GJ8Ya9swxUeJ9iYyHVQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--skrz9m5Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ACc4GJ8Ya9swxUeJ9iYyHVQ.png" alt="" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;List contents from a bucket via s3 gateway endpoint. (different region)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This will give no response as there is no regional Gateway for it.&lt;/p&gt;

&lt;p&gt;aws s3 ls s3://mybucket --region us-east-1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Accessing AWS S3 via PrivateLink&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy the S3InterfaceEndpointDnsEntry from CloudFormation Output or find the entry from the VPC endpoint console where the s3 PrivateLink is created.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;List all buckets via S3 PrivateLink using endpoint dns&lt;/p&gt;

&lt;p&gt;aws s3 ls --endpoint-url &lt;a href="https://bucket.vpce-111111111111-aaaaaaaa.s3.ap-south-1.vpce.amazonaws.com"&gt;https://bucket.vpce-111111111111-aaaaaaaa.s3.ap-south-1.vpce.amazonaws.com&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--buDxE0Nu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2124/1%2AXmWTxwDVHDDKKiOqXpiTzQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--buDxE0Nu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2124/1%2AXmWTxwDVHDDKKiOqXpiTzQ.png" alt="" width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;List contents from a S3 bucket created in Step 4.&lt;/p&gt;

&lt;p&gt;aws s3 ls s3://newbucket --endpoint-url &lt;a href="https://bucket.vpce-111111111111-aaaaaaaa.s3.ap-south-1.vpce.amazonaws.com"&gt;https://bucket.vpce-111111111111-aaaaaaaa.s3.ap-south-1.vpce.amazonaws.com&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XhD_8rKM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2654/1%2AvKEmKi8dmd123iBZ23dxFw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XhD_8rKM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2654/1%2AvKEmKi8dmd123iBZ23dxFw.png" alt="" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can run the same command from another VPC or On-Premises that has connectivity with current VPC and be able to access the bucket via PrivateLink.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delete the CloudFormation Stack to delete all the deployed resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete the s3 buckets created in step 4.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : More to read -&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;PrivateLink : &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html"&gt;https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gateway Endpoints: &lt;a href="https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html"&gt;https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for Shielding Your Data: Safeguarding AWS S3 via VPC Endpoints.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" alt="" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #VPC #endpoints #privatelink #connectivity #cloudformation #cost #optimization #network #security #hybrid #network #prefixlist #isolated #solution #centralize #secure #access #performance #edge #locations #operations #infrastructure #scalable #reliable #highly #available #private #secure #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>endpoints</category>
      <category>security</category>
    </item>
    <item>
      <title>Multi-Cloud Harmony: Connecting AWS and Azure with Site-to-Site VPN</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Tue, 19 Dec 2023 10:22:16 +0000</pubDate>
      <link>https://forem.com/aws-builders/multi-cloud-harmony-connecting-aws-and-azure-with-site-to-site-vpn-4ce0</link>
      <guid>https://forem.com/aws-builders/multi-cloud-harmony-connecting-aws-and-azure-with-site-to-site-vpn-4ce0</guid>
      <description>&lt;h2&gt;
  
  
  Multi-Cloud Harmony: Connecting AWS and Azure with Site-to-Site VPN
&lt;/h2&gt;

&lt;p&gt;For Seamless Secure Private Cross-Cloud Integration&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands-on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2F24x1xpx2ealjz6d0sbx4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F24x1xpx2ealjz6d0sbx4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the evolving landscape of cloud computing, the adoption of multicloud architectures has become a common strategy for businesses aiming to address diverse operational needs. This approach involves distributing data and resources across multiple cloud providers, with AWS, Azure and GCP standing out as the most prevalent choices. As a solution architect, mastering the management of the entire multicloud perimeter is crucial. One fundamental aspect is establishing connections between cloud environments to enable seamless communication across resources.&lt;/p&gt;

&lt;p&gt;This blog focuses on bridging AWS and Azure through the implementation of a Virtual Private Network (VPN). By doing so, you can create a unified cloud environment, promoting collaboration and resource sharing. To enhance resilience, security and ensure private connectivity, the setup will involve the creation of a VPN tunnel.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fh3d8m0fnx7wc8x2n6aqo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fh3d8m0fnx7wc8x2n6aqo.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case :&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. Hybrid Cloud Deployments:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use Case: Organizations may have existing infrastructure on both AWS and Azure due to historical reasons, mergers, or specific service preferences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits: Linking the two environments allows for a cohesive hybrid cloud strategy, enabling seamless data and workload movement between the on-premises, Azure, and AWS environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Multi-Cloud Disaster Recovery:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use Case: Ensuring business continuity is crucial, and some enterprises choose to leverage both Azure and AWS for disaster recovery purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits: Establishing VPN connections enables the replication of critical data and applications across clouds, providing redundancy and quick recovery in case of a failure in one cloud provider.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Vendor Diversification and Risk Mitigation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use Case: Companies seeking to mitigate vendor lock-in risks or wanting to take advantage of specific services from each provider.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits: By linking AWS and Azure, businesses can maintain flexibility in choosing the best services from each provider while avoiding dependency on a single vendor. It also provides a fallback option in case of service outages or disruptions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Compliance and Data Residency:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use Case: Adherence to specific data residency or compliance requirements may necessitate the use of different cloud providers for different regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benefits: Establishing VPN connections ensures that data can be securely transferred and accessed across compliant regions, helping businesses meet regulatory requirements without compromising on operational efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with IAM Admin privileges.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Account with Admin privileges.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS &amp;amp; AZURE Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS VPC, IAM, EC2, SG, CLOUDFORMATION, VPG, CGW, VPN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AZURE VNET, Resource group, VPN Gateway, Local Gateway, S2S Connection, Virtual Machines.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Clone the GitHub Repo.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to following GitHub Repository &lt;a href="https://github.com/Kunal-Shah107/AWS-AZURE-S2S-VPN" rel="noopener noreferrer"&gt;AWS-AZURE-S2S-VPN&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the repo to download the CloudFormation Template for VPC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation template name — VPC_With_Managed_NAT_And_Private_Subnet.yaml&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fvkdmx59l53yxq629j2hz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fvkdmx59l53yxq629j2hz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS VPC through CloudFormation service.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS CloudFormation Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Head over &amp;amp; change the region of the aws console where you want to deploy the resources &amp;amp; VPN.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Create Stack &amp;amp; upload the template downloaded in the step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as default &amp;amp; hit create.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It will create a New VPC along with IGW, NAT Gateway, Public &amp;amp; Private subnets, Route Tables, IAM roles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AS NAT Gateway is involved we are going to get charged for NAT Gateway as per the &lt;a href="https://aws.amazon.com/vpc/pricing/" rel="noopener noreferrer"&gt;AWS VPC Pricing.&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fuyyi9melvlm5r5f73r6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fuyyi9melvlm5r5f73r6u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Creatin Azure Vnet through Azure console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to Azure account, Navigate to Resources groups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a resource group on Azure to deploy the resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the subscription you want to use for this activity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource Group Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review + Create = Deployment complete.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwp8rh7d38yy1a4pz7hi5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwp8rh7d38yy1a4pz7hi5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now head over to Create Virtual Network&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Resource Group Name created above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the same Region as above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VNet Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VNet IPv4 Address Space: 192.168.0.0/16&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subnet Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subnet IPv4 Address Space: 192.168.1.0/24&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review + Create = Deployment complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IMP :&lt;/strong&gt; Go ahead to subnets section &amp;amp; create a new GatewaySubnet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This subnet will be used by Azure VPN Gateway as depicted in architecture diagram.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fpqf37chlck92p62yjsfv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpqf37chlck92p62yjsfv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fy451jltnjc42wl0qr2vu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fy451jltnjc42wl0qr2vu.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Creating Azure VPN Gateway through Azure console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Azure VPN Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPN Gateway Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gateway Type: VPN&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SKU: VpnGw1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generation: Generation 1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual Network: vnet-azure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Public IP Address Name: pip-vpn-azure-aws&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Public IP Address Type: Standard&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assignment: Assignment&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable active-active mode: Disabled&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure BGP: Disabled&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review + Create = Deployment complete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It will take around 45–60 minutes for Azure VPN deployment to get completed &amp;amp; come active.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fugxrogpy2x9aqv83qqeq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fugxrogpy2x9aqv83qqeq.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Create a customer gateway pointing to the Public IP Address of Azure VPN Gateway&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to AWS VPC -&amp;gt; Customer Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NAME : Enter the name for AWS Customer Gateway. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;BGP ASN : Keep it as it is&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IP address : Enter the Public IP address of Azure VPN Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit Create &amp;amp; let it become active.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F6fnr9pfqftva6rr2hf32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F6fnr9pfqftva6rr2hf32.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Create the AWS Virtual Private Gateway then attach to the VPC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to AWS VPC -&amp;gt; Virtual Private Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit Create &amp;amp; after its status shows detached.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Actions on right hand of screen &amp;amp; select Attach VPC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Attach the VPC created in Step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait for its status to change to attached.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F98hmahu2a3i153y83hxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F98hmahu2a3i153y83hxp.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ffal54dkdpai2ptjietp6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ffal54dkdpai2ptjietp6.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7: Create a site-to-site VPN Connection in AWS Console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to AWS VPC -&amp;gt; Site-to-Site VPN connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a New VPN Connection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Target gateway type: Virtual private gateway (Select your Virtual private gateway created in step 6)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Customer gateway: Existing (Select your Customer gateway created in step 5)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Routing options: Static&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Static IP prefixes: 192.168.1.0/24 (Azure Subnet created in step 3)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave rest of them as default&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit &lt;strong&gt;Create VPN connection.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 8: Download the AWS VPN configuration file for Azure Tunnel Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to AWS VPC -&amp;gt; Site-to-Site VPN connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the VPN connection is active in status.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Download Configuration &amp;amp; select dropdown.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vendor: Generic, Platform: Generic, Software: Vendor Agnostic&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In this configuration file you will note that there are the Shared Keys and the Public Ip Address for each of one of the two IPSec tunnels created by AWS. ( Highly Confidential Information )&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 9: Creating Azure Local Gateway.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Azure Console -&amp;gt; Search &lt;strong&gt;Local network gateways&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new Local network gateways&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource Group Name: created in step 3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: same as previous choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IP address: Get the Outside IP address from the configuration file downloaded in step 8. (You can also get this info from AWS VPN Connection Section -&amp;gt; Tunnel Status.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Address Space(s): 10.10.0.0/16 (AWS VPC CIDR Created in Step 2)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave rest of them as default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review + Create = Deployment complete.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F243lrvji55btoebfsxrz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F243lrvji55btoebfsxrz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10: Create the connection on the Virtual Network Gateway in Azure&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Azure Console -&amp;gt; Search &lt;strong&gt;Virtual Network Gateway&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to connections -&amp;gt; Add&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name: your choice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connection Type: Site-to-Site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Local Network Gateway: Select the Local Network Gateway which you created in step 9.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shared Key: Get the Shared Key from the configuration file downloaded in step 8.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait till the Connection Status changes to — Connected&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the same way, check in AWS Console for the status of 1st tunnel in VPN Connection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once both side shows connected, It means your phase 1 tunnel is UP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If not then it means you made a mistake along the way.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fvbqz0me0davo9jcw120n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fvbqz0me0davo9jcw120n.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fnyxujtjjid3nlplglgwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fnyxujtjjid3nlplglgwa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VERY IMPORTANT STEP:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 11: Edit the route table associated with our AWS VPC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add the route for Azure subnet through the AWS Virtual Private Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Goto Public Route Table ( It will have IGW attached in routes )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Destination: 192.168.1.0/24&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Target: Virtual Private Gateway that we created in step 6.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5exsspf3no10z513q2en.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5exsspf3no10z513q2en.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 12: Create Virtual Machines in both AWS &amp;amp; Azure cloud.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a AWS Linux/Windows VM in the same AWS VPC Network, Public Subnet with Public IP address Assignment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure Security Group allows traffic for ICMP, SSH.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Azure Virtual Machine (Ubuntu/Windows) in the same Azure Vnet &amp;amp; Subnet allowing traffic for ICMP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the VM are active try ping AWS to Azure &amp;amp; Azure to AWS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This successful private IP ping shows that we have created VPN Tunnel between AWS &amp;amp; Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS TO AZURE PING RESULTS :&lt;br&gt;
&lt;a href="https://media.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%2Fpjaxeuvuek4as406um1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpjaxeuvuek4as406um1z.png" alt="AWS TO AZURE"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AZURE TO AWS PING RESULTS :&lt;br&gt;
&lt;a href="https://media.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%2Fa18ifes12viooay7faiq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fa18ifes12viooay7faiq.png" alt="AZURE TO AWS"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 13: Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For AWS : Delete VPN Connection, Customer Gateway, Virtual Private Gateway &amp;amp; Detach it. Delete AWS EC2 VM, SG &amp;amp; then delete the CloudFormation Stack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Azure : Delete Connections, Local Gateway, VPN Gateway, Virtual Machines, VNET, Subnets&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross check in AWS NAT Gateways are deleted &amp;amp; EIP are not available.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for Connecting AWS and Azure with Site-to-Site VPN.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #VPN #cloudformation #s2s #azure #connectivity #hybrid #network #solution #multicloud #management #centralize #secure #speed #performance #edge #locations #operations #infrastructure #scalable #reliable #highly #available #private #secure #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS CloudFront for High Availability</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Tue, 28 Nov 2023 11:07:11 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-cloudfront-for-high-availability-4l77</link>
      <guid>https://forem.com/aws-builders/aws-cloudfront-for-high-availability-4l77</guid>
      <description>&lt;h2&gt;
  
  
  AWS CloudFront for High Availability
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project revolves around AWS CloudFront where we configure an distribution, origin groups for a website to be highly available, accessible globally to securely deliver content with low latency and high transfer speeds. By leveraging AWS S3 static website hosting we configure our bucket as a static website, along with it we deploy one more website on AWS EC2 which can act as failover/redundant website target.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AADMQ36RpchpP66ZMawScSw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AADMQ36RpchpP66ZMawScSw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case :&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;E-commerce Product Images and Static Assets:&lt;/strong&gt; An e-commerce platform wants to optimize the delivery of product images, style sheets, and other static assets to enhance the online shopping experience for users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; AWS CloudFront can be utilized to cache and deliver these static assets from edge locations, ensuring faster page loads and a more responsive user interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accelerated Gaming Content Delivery:&lt;/strong&gt; Online gaming platforms want to deliver game updates, patches, and in-game assets with low latency for a seamless gaming experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; AWS CloudFront accelerates the delivery of gaming content by caching frequently accessed assets at edge locations. This minimizes download times for users and enhances the overall gaming experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High-Traffic Event Websites:&lt;/strong&gt; Event organizers are expecting a high volume of traffic for a specific event website, such as ticket sales or live streaming of an event.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt; AWS CloudFront helps handle the surge in traffic by distributing content across multiple edge locations, ensuring that users experience minimal latency and preventing the origin server from being overwhelmed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS Account with Admin privileges&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS CloudFront&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS S3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS EC2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS IAM&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Creating AWS S3 bucket through console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS S3 Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on create bucket&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide Unique Bucket Name (It will be website name)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the AWS Region according to nearest user location.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uncheck the Block all public access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tick Mark — I acknowledge that the current settings might result in this bucket and the objects within becoming public.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as is &amp;amp; hit Create bucket.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ae60PZFdePEf2j4l374IUxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ae60PZFdePEf2j4l374IUxw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A7ztB4y_ebX7bHjN4ZHaXig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A7ztB4y_ebX7bHjN4ZHaXig.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS S3 bucket policy through console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to permissions tab of newly created s3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy, edit &amp;amp; paste it in the policy section&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit the bucket ARN &amp;amp; validate the json formatting &amp;amp; save it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This policy allow anyone to make GET request from Internet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;{&lt;br&gt;
 “Version”: “2012–10–17”,&lt;br&gt;
 “Statement”: [&lt;br&gt;
 {&lt;br&gt;
 “Effect”: “Allow”,&lt;br&gt;
 “Principal”: “&lt;em&gt;”,&lt;br&gt;
 “Action”: “s3:GetObject”,&lt;br&gt;
 “Resource”: “/&lt;/em&gt;”&lt;br&gt;
 }&lt;br&gt;
 ]&lt;br&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AyLeHU002uGCVGv42kHVAfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AyLeHU002uGCVGv42kHVAfw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Enable Static website hosting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to properties tab on your bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll till down to enable static website hosting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;select Host a static website&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;index document → index.html -&amp;gt; save&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will get a FQDN which is accessible over internet to serve the content.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AG8KDCYbVpsl7hDOv3FV3hA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AG8KDCYbVpsl7hDOv3FV3hA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Create index.html &amp;amp; upload it.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a file named index.html in notepad, Copy the content from &lt;a href="https://github.com/Kunal-Shah107/aws-cloudfront-lab" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can update the content of index.html as per your choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload the index.html on s3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your website is up &amp;amp; ready to be shared !! Congrats…&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AtTzJ7Kfz9-9ryh0BUnJ1VA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AtTzJ7Kfz9-9ryh0BUnJ1VA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3218%2F1%2ASCDrIWNxwrWZlzwuxPvL3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3218%2F1%2ASCDrIWNxwrWZlzwuxPvL3g.png" alt="s3 static website"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Launch an EC2 Instance with User Script:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to EC2 &amp;amp; hit the Launch Instance in the region of your choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter Name -&amp;gt; Select OS -&amp;gt; Select EC2 Type (t2.micro) -&amp;gt; no key pair.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Network select default VPC -&amp;gt; Enable Auto Assign Public IP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create New Security Group with Inbound access of HTTP &amp;amp; HTTPS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;strong&gt;ADVANCE SETTING *&lt;em&gt;scroll down till last &amp;amp; copy/upload the **userscript_for_ec2 **from this *&lt;/em&gt;&lt;a href="https://github.com/Kunal-Shah107/aws-cloudfront-lab" rel="noopener noreferrer"&gt;GitHub Repo.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit the Launch Instance &amp;amp; wait for its status to running.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2390%2F1%2AhY7QnSit4voXr7ZtbJHAeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2390%2F1%2AhY7QnSit4voXr7ZtbJHAeg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A-lLiZEEaesOiC4viOo8hVQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A-lLiZEEaesOiC4viOo8hVQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARViIuSalKzzFKXa5kWL9RA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARViIuSalKzzFKXa5kWL9RA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARlbZWd8qtnNpaPjBMNfXTw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARlbZWd8qtnNpaPjBMNfXTw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enter the &lt;strong&gt;PUBLIC IPv4 / EC2 PUBLIC DNS&lt;/strong&gt; in the browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http://&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http:///index.html&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http:///index2.html&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can notice we have deployed 2 index pages &amp;amp; are serving as expected from AWS EC2 Instance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3842%2F1%2A2BVBic-IlvkWli9p0tO-xA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3842%2F1%2A2BVBic-IlvkWli9p0tO-xA.png" alt="index.html"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3840%2F1%2APNMcPD7RnYSrXiPxxHKg6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3840%2F1%2APNMcPD7RnYSrXiPxxHKg6w.png" alt="index2.html"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Create CloudFront Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to CloudFront Service on AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Origin -&amp;gt; S3 Bucket Endpoint (Bucket created in step 1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protocol -&amp;gt; HTTP Only&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as default &amp;amp; hit the create distribution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the CloudFront distribution is deployed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visit the CloudFront distribution Domain Name from Browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will be redirected to S3 static website.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ahy6Kj8J4IXZVCnRXseM_iw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ahy6Kj8J4IXZVCnRXseM_iw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3668%2F1%2A4YIi1LvEuTBavmhssdOGAg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3668%2F1%2A4YIi1LvEuTBavmhssdOGAg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3870%2F1%2APuVaT5QvxeQz0WdBbKI8LQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3870%2F1%2APuVaT5QvxeQz0WdBbKI8LQ.png" alt="CDN"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Add EC2 as Origin in CDN Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Origin Tab of CloudFront Service on AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Origin -&amp;gt; Enter EC2 PUBLIC DNS as Origin Domain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;NOTE : ONLY EC2 PUBLIC DNS WILL WORK NOT PUBLIC IP.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protocol -&amp;gt; HTTP Only&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as default &amp;amp; hit the create Origin.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3260%2F1%2AE9oVCgQLSJp_WJk1Y34Ftw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3260%2F1%2AE9oVCgQLSJp_WJk1Y34Ftw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Create Origin Groups of S3 &amp;amp; EC2:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Origin Tab of CloudFront Service on AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create &lt;strong&gt;Origin Group&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Origins -&amp;gt; 1st s3 Origin &amp;amp; 2nd EC2 Origin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter Name for **Origin Group **of your choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select all Failover Criteria.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, Create Origin Group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;*&lt;em&gt;IMP: **This is for origin failover for scenarios that require high availability. We created an *origin group&lt;/em&gt; with two origins, a primary(S3) and a secondary(EC2). If the primary origin is unavailable, or returns specific HTTP response status codes that indicate a failure, CloudFront automatically switches to the secondary origin.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Axg1_vyjGz_U7_eEErkoXvQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Axg1_vyjGz_U7_eEErkoXvQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : Change Behavior of CDN :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Behavior's Tab of CloudFront Service on AWS Console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the one listed &amp;amp; hit the edit button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now change the Origin to Origin Group (created in step 8)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save it &amp;amp; lets play around with CloudFront.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3686%2F1%2APOWAAtQH_WAMSno0i9DHzQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3686%2F1%2APOWAAtQH_WAMSno0i9DHzQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AJfA8nguW_d9yP-08mcpT2Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AJfA8nguW_d9yP-08mcpT2Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Lets play with CloudFront :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now hit the below URLs to understand the working of distribution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http:// (Pointing towards s3 index.html)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http:///index.html (Pointing towards s3 index.html)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;http://index2.html (Pointing towards EC2 index.html)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lets Do a FAILOVER →&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove index.html from s3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After a while it will point it towards EC2 index.html&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This concludes our lab, which shows how CloudFront Distribution works along with origins &amp;amp; origin groups to achieve High Availability, speed &amp;amp; secure content delivery.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Decommission :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Terminate the EC2 Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Disable &amp;amp; Delete the CloudFront Distribution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Permanently delete the S3 object &amp;amp; S3 buckets.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for AWS CloudFront for High Availability.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #cloudfront #cdn #s3 #ec2 #content #delivery #network #solution #management #centralize #quick #secure #speed #performance #edge #locations #operations #infrastructure #scalable #reliable #highly #available #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudfront</category>
      <category>cdn</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Deploy Rancher on AWS EKS using Terraform &amp; Helm Charts</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Tue, 14 Nov 2023 12:39:42 +0000</pubDate>
      <link>https://forem.com/aws-builders/deploy-rancher-on-aws-eks-using-terraform-helm-charts-2gmj</link>
      <guid>https://forem.com/aws-builders/deploy-rancher-on-aws-eks-using-terraform-helm-charts-2gmj</guid>
      <description>&lt;p&gt;Step-by-step guide to deploy Rancher on AWS EKS using Terraform and Helm Charts.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Cloud Hands-on Lab Practice Series
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3280%2F1%2AA2jj2ULwSANDW_t61kXISQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3280%2F1%2AA2jj2ULwSANDW_t61kXISQ.png" alt="Project Overview Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project revolves around AWS EKS where we deploy Rancher (platform for Kubernetes management). Rancher is a Kubernetes management tool to deploy and run clusters anywhere and on any provider. Amazon EKS &amp;amp; Rancher is a vital combination when it comes to managing multi-cluster Kubernetes workloads from a Single Dashboard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A534LYZABqKVxQjK6j5ZrbA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A534LYZABqKVxQjK6j5ZrbA.png" alt="Architecture Overview Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First, let’s understand the real-world use case:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hybrid Cloud Management for a Global E-Commerce Platform:&lt;/strong&gt;&lt;br&gt;
Imagine a large e-commerce platform that serves customers globally. The platform’s infrastructure spans multiple regions to ensure low-latency access and high availability. Rancher provides a unified dashboard for managing EKS clusters spread across various regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finance: Multi-Tiered Application Deployment:&lt;/strong&gt;&lt;br&gt;
A financial institution is migrating its legacy monolithic applications to a microservices architecture on AWS EKS. Rancher simplifies the deployment of microservices across EKS clusters in different regions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retail: Seasonal Application Scaling:&lt;/strong&gt;&lt;br&gt;
A retail chain experiences significant fluctuations in website traffic during holiday seasons. Rancher enables automated scaling of applications based on predefined policies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manufacturing: Edge Computing for IoT Devices:&lt;/strong&gt;&lt;br&gt;
A manufacturing company utilizes IoT devices across its facilities to monitor and optimize production processes. Rancher supports the deployment of Kubernetes clusters at the edge, close to IoT devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Media and Entertainment: Content Delivery Optimization:&lt;/strong&gt;&lt;br&gt;
A media streaming service operates globally and needs to optimize content delivery for users. Rancher integrates with AWS services like Amazon CloudFront for efficient content caching.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These diverse use cases demonstrate the versatility of Rancher on AWS EKS in addressing industry-specific challenges and enhancing the management of Kubernetes clusters in various contexts. Rancher simplifies operations, enhances security, and provides a unified platform for managing the hybrid cloud environment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;AWS ACCOUNT with admin privileges.&lt;/li&gt;
&lt;li&gt;AWS EC2 Instance (Bastion Host)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli" rel="noopener noreferrer"&gt;Terraform Installation Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;HELM Installation Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;KUBECTL Installation Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;AWS EKS&lt;/li&gt;
&lt;li&gt;AWS IAM&lt;/li&gt;
&lt;li&gt;AWS EC2&lt;/li&gt;
&lt;li&gt;AWS ELB&lt;/li&gt;
&lt;li&gt;AWS VPC&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Step-by-Step Guide -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Clone the repo &amp;amp; check the versions of installed tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to AWS EC2 instance (Bastion Host).&lt;/li&gt;
&lt;li&gt;Install tools — Terraform, helm, kubectl, aws cli.&lt;/li&gt;
&lt;li&gt;Check versions: &lt;code&gt;aws version&lt;/code&gt;, &lt;code&gt;kubectl version&lt;/code&gt;, &lt;code&gt;helm version&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now clone the Git Repo: &lt;a href="https://github.com/Kunal-Shah107/Rancher-EKS" rel="noopener noreferrer"&gt;Terraform Repo Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Give Star &amp;amp; Follow me on &lt;a href="https://github.com/Kunal-Shah107" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Repo has 3 files — &lt;code&gt;main.tf&lt;/code&gt;, &lt;code&gt;variables.tf&lt;/code&gt;, &amp;amp; &lt;code&gt;terraform.tf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Deploying AWS resources through Terraform.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now go to the folder location &amp;amp; run below commands.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

Terraform init
Terraform validate
Terraform plan
Terraform apply


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2658%2F1%2AbpQ5nRr5ETqIoH8MnpbRkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2658%2F1%2AbpQ5nRr5ETqIoH8MnpbRkg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This will deploy infrastructure resources in AWS.&lt;/li&gt;
&lt;li&gt;It will take around 15–20 mins to get it deployed.&lt;/li&gt;
&lt;li&gt;It will have 1 EKS master cluster &amp;amp; 2 worker nodes (ec2 spot instances) attached to the AWS EKS master cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Add Helm Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;helm repo add devpro &lt;a href="https://devpro.github.io/helm-charts" rel="noopener noreferrer"&gt;https://devpro.github.io/helm-charts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This repository contains Helm charts to build clusters with all components running in containers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

helm repo add jetstack https://charts.jetstack.io

helm repo add ingress-nginx  https://kubernetes.github.io/ingress-nginx

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

helm repo update

helm repo list


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AQPKILWAcCUmVJNfC9i3pQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AQPKILWAcCUmVJNfC9i3pQQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Access the EKS Cluster through kubectl&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run below mentioned commands from EC2 Bastion:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

aws eks - region me-south-1 update-kubeconfig - name &amp;lt;eks_cluster_name&amp;gt;

kubectl get nodes

kubectl get all &lt;span class="nt"&gt;-A&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TIP&lt;/strong&gt; — If you face any permission issue then change permission for ~/.kube/config&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This confirms that &lt;strong&gt;Cluster on EKS is ready with requested worker nodes.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Ngnix Ingress Installation (exposing to Internet)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run below mentioned command :&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

helm upgrade &lt;span class="nt"&gt;--install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      ingress-nginx ingress-nginx/ingress-nginx &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--namespace&lt;/span&gt; ingress-nginx &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--set&lt;/span&gt; controller.service.type&lt;span class="o"&gt;=&lt;/span&gt;LoadBalancer &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--version&lt;/span&gt; 4.8.3 &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--create-namespace&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AX9G_rH7iqrpkL5ihWqT0Iw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AX9G_rH7iqrpkL5ihWqT0Iw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the services:&lt;/strong&gt; kubectl get services -n ingress-nginx&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy &amp;amp; save Loadbalancer DNS ( It will used in step 7)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2Abkycicu0EroTqgE4rfSTIA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2Abkycicu0EroTqgE4rfSTIA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Install Certificates manager.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set env variables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CERT_MANAGER_VERSION=v1.12.4&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RANCHER_VERSION=2.7.6&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;kubectl apply -f &lt;a href="https://github.com/cert-manager/cert-manager/releases/download/$%7BCERT_MANAGER_VERSION%7D/cert-manager.crds.yaml" rel="noopener noreferrer"&gt;https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

helm upgrade &lt;span class="nt"&gt;--install&lt;/span&gt; cert-manager jetstack/cert-manager &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--namespace&lt;/span&gt; cert-manager &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--create-namespace&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;--version&lt;/span&gt; &lt;span class="nv"&gt;$CERT_MANAGER_VERSION&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check the pods :&lt;/strong&gt; kubectl get pods -namespace cert-manager ( 3 pods should be in Running status)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2654%2F1%2AnZe5H8qIhcyTu83bRRSv-Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2654%2F1%2AnZe5H8qIhcyTu83bRRSv-Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Avu0VfOCY02UaUcRsrcW7gQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Avu0VfOCY02UaUcRsrcW7gQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A4VDoq9kVkmGQ4d0Blrnw8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A4VDoq9kVkmGQ4d0Blrnw8w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lets have new certificate from &lt;strong&gt;letsencrypt&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

helm upgrade &lt;span class="nt"&gt;--install&lt;/span&gt; letsencrypt devpro/letsencrypt &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--set&lt;/span&gt; registration.emailAddress&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$EMAIL_ADDRESS&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--namespace&lt;/span&gt; cert-manager


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Now run this command :&lt;/strong&gt; kubectl get clusterissuer -n cert-manager ( 2 Cluster issuers should be True)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AEPQtyyS-VCBVuoXo5nzO8A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AEPQtyyS-VCBVuoXo5nzO8A.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ayet_0_0SJnZX7P5MTNI2DQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ayet_0_0SJnZX7P5MTNI2DQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Install Rancher&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

- kubectl create namespace cattle-system

helm upgrade &lt;span class="nt"&gt;--install&lt;/span&gt; rancher rancher-latest/rancher &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--namespace&lt;/span&gt; cattle-system &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nb"&gt;hostname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;LOAD_BALANCER_DNS&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="s1"&gt;'ingress.extraAnnotations.cert-manager\.io/cluster-issuer=letsencrypt-prod'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; ingress.ingressClassName&lt;span class="o"&gt;=&lt;/span&gt;nginx &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; ingress.tls.source&lt;span class="o"&gt;=&lt;/span&gt;secret &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; ingress.tls.secretName&lt;span class="o"&gt;=&lt;/span&gt;rancher-tls &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;replicas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--version&lt;/span&gt; &lt;span class="nv"&gt;$RANCHER_VERSION&lt;/span&gt;&lt;span class="k"&gt;**&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ApZRYjK3hgoN4Cemr-9tRTQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ApZRYjK3hgoN4Cemr-9tRTQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the status of installation &amp;amp; wait for it to complete.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; cattle-system rollout status deploy/rancher

kubectl get secret - namespace cattle-system bootstrap-secret &lt;span class="nt"&gt;-o&lt;/span&gt; go-template&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'{{ .data.bootstrapPassword|base64decode}}{{ "\n" }}'&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2AYsbSSr-YH2qA0iVjajuyJA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2648%2F1%2AYsbSSr-YH2qA0iVjajuyJA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Accessing the Rancher UI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy Load balancer DNS URL &amp;amp; Paste on browser for Initial setup of Rancher.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will be asked for password ( copied earlier )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hit Log in with Local User.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define the admin password, check the box and click on “Continue”. (store it)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, Rancher is running and you can explore “local” cluster.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3078%2F1%2AituiMkc_yqQwYjRxudJrGA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3078%2F1%2AituiMkc_yqQwYjRxudJrGA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2904%2F1%2Aw0zYBhDWoihQ72jQTbDoXA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2904%2F1%2Aw0zYBhDWoihQ72jQTbDoXA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3836%2F1%2AIiU4VGyu5n8_MkNhhGAzSQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3836%2F1%2AIiU4VGyu5n8_MkNhhGAzSQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3816%2F1%2AlucxUU4sQcP-eHIGmnpj9A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3816%2F1%2AlucxUU4sQcP-eHIGmnpj9A.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : Check AWS EKS Console&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3708%2F1%2AKlG39iAZio2R_6TEgFAveA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3708%2F1%2AKlG39iAZio2R_6TEgFAveA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2882%2F1%2AqSYHfbgx5fZheGRUQvrFpg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2882%2F1%2AqSYHfbgx5fZheGRUQvrFpg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3096%2F1%2AuiCUCFVEuJsndax1TMVT9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3096%2F1%2AuiCUCFVEuJsndax1TMVT9g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run below command to destroy all resources.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;p&gt;kubectl delete ns cert-manager&lt;/p&gt;

&lt;p&gt;kubectl delete ns ingress-nginx&lt;/p&gt;

&lt;p&gt;terraform destroy &lt;span class="nt"&gt;--auto-approve&lt;/span&gt;&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Congrats ! We have successfully completed lab for Deploying Rancher on AWS EKS using Terraform &amp;amp; Helm Charts.&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #eks #managed #kubernetes #solution #rancher #solution #management #centralize #dashboard #easy #management #scalability #operational #efficiency #robust #infrastructure #highly #available #reliable #controlled #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kubernetes</category>
      <category>rancher</category>
      <category>terraform</category>
    </item>
    <item>
      <title>Create a free website to share large files stored on AWS S3</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Wed, 01 Nov 2023 14:48:04 +0000</pubDate>
      <link>https://forem.com/aws-builders/create-a-free-website-to-share-large-files-stored-on-aws-s3-3d64</link>
      <guid>https://forem.com/aws-builders/create-a-free-website-to-share-large-files-stored-on-aws-s3-3d64</guid>
      <description>&lt;h2&gt;
  
  
  Create a free website to share large files stored on AWS S3
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3168%2F1%2AMWy_KcJ9QS54Qs2shHgGiA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3168%2F1%2AMWy_KcJ9QS54Qs2shHgGiA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project revolves around AWS S3 where we configure an temporary storage or file sharing website to share resources quickly. By leveraging AWS S3 static website hosting we configure our bucket as a static website, the website is available at the AWS Region-specific website endpoint of the bucket.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AuSQ02RUm0hwhVxiVWU37gA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AuSQ02RUm0hwhVxiVWU37gA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case :&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File Sharing and Distribution —&lt;/strong&gt; You can use presigned URLs to allow users to download large files, such as video files, software installers, datasets, etc., directly from your S3 bucket. This can be especially useful for distributing content to a large audience without overwhelming your server infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure File Sharing:&lt;/strong&gt; Presigned URLs have an expiration time, making them ideal for secure file sharing. For instance, you can generate a presigned URL for a file that expires after a certain period, thus controlling access to the file. Also share private content securely, restricting access only to intended recipients by providing time-limited links.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Temporary Access to Files:&lt;/strong&gt; When your application needs temporary access to specific files in S3 (e.g., for generating dynamic content), presigned URLs can be used for access without compromising security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Media Distribution:&lt;/strong&gt; For media or streaming applications, you can create presigned URLs to enable temporary access to specific video or audio content. This allows users to access content for a limited time without directly exposing the S3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backup and Restore Operations:&lt;/strong&gt; Generate presigned URLs for specific backup files or data. This can aid in sharing and restoring backups securely, restricting access after a set time frame.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In essence, using S3 with presigned URLs for sharing content allows for flexible, secure, and controlled access to specific files or objects in an S3 bucket. This method is ideal for scenarios where quick and easy transfer of files or objects is necessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;This is not for production grade solution. It compromises security risk of making s3 bucket &amp;amp; objects public.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin privileges&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access to AWS S3 &amp;amp; IAM&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS S3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS IAM&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Creating AWS S3 bucket through console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to AWS account, Navigate to AWS S3 Service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on create bucket&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide Unique Bucket Name (It will be website name)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the AWS Region according to nearest user location.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uncheck the Block all public access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tick Mark — I acknowledge that the current settings might result in this bucket and the objects within becoming public.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep rest of the settings as is &amp;amp; hit Create bucket.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3488%2F1%2A7IIxBueKfeodfht7PNXg1A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3488%2F1%2A7IIxBueKfeodfht7PNXg1A.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2244%2F1%2AESqEIMGf-VHV2rGvglO7fA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2244%2F1%2AESqEIMGf-VHV2rGvglO7fA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AV8-kQAwFGoIjbrKOTjaI0Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AV8-kQAwFGoIjbrKOTjaI0Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ASLfKzQSGxWqSQkCGxuChtQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ASLfKzQSGxWqSQkCGxuChtQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;PRO TIP: Alternatively you can create through AWS CLI if cli is configured&lt;br&gt;
 &lt;strong&gt;aws s3 mb s3://bucket_name — region region-code&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Creating AWS S3 bucket policy through console.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to permissions tab of newly created s3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy, edit &amp;amp; paste it in the policy section&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;{&lt;br&gt;
“Version”: “2012–10–17”,&lt;br&gt;
“Statement”: [&lt;br&gt;
{&lt;br&gt;
“Effect”: “Allow”,&lt;br&gt;
“Principal”: “&lt;em&gt;”,&lt;br&gt;
“Action”: “s3:GetObject”,&lt;br&gt;
“Resource”: “/&lt;/em&gt;”&lt;br&gt;
}&lt;br&gt;
]&lt;br&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2616%2F1%2AgqV096vRuguoCk5Ruo8jOg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2616%2F1%2AgqV096vRuguoCk5Ruo8jOg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Edit the bucket ARN &amp;amp; validate the json formatting &amp;amp; save it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This policy allow anyone to make GET request from Internet.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Enable Static website hosting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to properties tab on your bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll till down to enable static website hosting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;select Host a static website&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;index document → index.html -&amp;gt; save&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will get a FQDN which is accessible over internet to serve the content.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A-mTmwkrY85j9TJDcMurnVw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A-mTmwkrY85j9TJDcMurnVw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A7hqKvuQ9hgyb-HleYONWvA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A7hqKvuQ9hgyb-HleYONWvA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2630%2F1%2AOxgmJKASM4pewLBSHrqFYg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2630%2F1%2AOxgmJKASM4pewLBSHrqFYg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4: Upload contents on s3 &amp;amp; create presigned URLs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now upload files on your s3 bucket through console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After successful uploads&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to specific object -&amp;gt; Actions -&amp;gt; Share with a presigned URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give the timeline according to how long you want the presigned URL to be active ( maximum is 12 hours )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy the URL &amp;amp; save it for future use.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AF0PqlfhEaphCa9G7wOadvA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AF0PqlfhEaphCa9G7wOadvA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2630%2F1%2A38tC136Jo9I3JspVqtddFA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2630%2F1%2A38tC136Jo9I3JspVqtddFA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ALicWvs5nzqIg7qrUDamQ2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ALicWvs5nzqIg7qrUDamQ2g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5: Create index.html &amp;amp; upload it.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a file named index.html in notepad &amp;amp; edit it with below content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;format it &amp;amp; validate the html syntax.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can update the content of index.html as per your choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload the index.html on s3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your website is up &amp;amp; ready to be shared !! Congrats…&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;  &amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt;Download Links&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
 &amp;lt;h1&amp;gt;Download Links — Below links will get expired in next 8 hours&amp;lt;/h1&amp;gt;
 &amp;lt;h2&amp;gt;Click on each file names to download &amp;amp; create folders according to its Title&amp;lt;/h1&amp;gt;
 &amp;lt;ul&amp;gt;
DOWNLOAD LINKS
 &amp;lt;li&amp;gt;&amp;lt;a href=”PRESIGNED URL THAT YOU COPIED &amp;amp; SAVED IN ABOVE STEP”&amp;gt;FILE NAME&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;! — Add more links as needed →
 &amp;lt;/ul&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2550%2F1%2AEWPvIkpdwDtHXgtIxfbaoA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2550%2F1%2AEWPvIkpdwDtHXgtIxfbaoA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6: Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete s3 buckets &amp;amp; its content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE —&lt;/strong&gt; &lt;strong&gt;This is not for production grade solution. It compromises security risk of making s3 bucket &amp;amp; objects public.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Congrats ! We have successfully completed lab for creating a website acting like temporary Google Drive on AWS S3.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3144%2F1%2ABxfgHQkXG7JLHn9ohjYVeg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 8+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #s3 #google #drive #storage #solution #management #centralize #quick #easy #large #file #sharing #operations #infrastructure #scalable #reliable #controlled #design #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/" rel="noopener noreferrer"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>filesharing</category>
      <category>easy</category>
    </item>
    <item>
      <title>AWS Security Monitoring using CloudWatch Agent</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Fri, 22 Sep 2023 13:15:52 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-security-monitoring-using-cloudwatch-agent-2h02</link>
      <guid>https://forem.com/aws-builders/aws-security-monitoring-using-cloudwatch-agent-2h02</guid>
      <description>&lt;h2&gt;
  
  
  AWS Security Monitoring using CloudWatch Agent
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Elevating Security with AWS CloudWatch Monitoring and Alerts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oItfqgvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AwrtKAe95suWJN-tv_J0ViA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oItfqgvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AwrtKAe95suWJN-tv_J0ViA.png" alt="" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project revolves around AWS SysOps best practices where we configure an Amazon Linux instances to send log files to Amazon CloudWatch and then create Amazon CloudWatch alarms and notifications to alert for a specified number of login failures on our EC2 instances. Finally, we create a CloudWatch alarm and notification to monitor outgoing traffic through a NAT gateway. By leveraging AWS CloudWatch capabilities we stay proactive &amp;amp; cover observability of our AWS Infrastructure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XRpqkDxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2612/1%2AiVtTq2DEHTlzqvEJ4ct0Mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XRpqkDxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2612/1%2AiVtTq2DEHTlzqvEJ4ct0Mw.png" alt="" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web Application Security Monitoring —&lt;/strong&gt; Real-time alerts will help us identify and respond to unauthorized access attempts. Monitoring failed logins across our instances helps us spot potential brute-force attacks. We can take immediate action, such as blocking IP addresses, when CloudWatch alarms trigger.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compliance and Auditing for Critical Services —&lt;/strong&gt; Detailed logs and alerts provide the necessary evidence for compliance audits. We can set up CloudWatch alarms to detect deviations from security and compliance policies in real-time. Notifications can be used to inform security teams or compliance officers when an alarm is triggered, enabling swift remediation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Network Traffic Analysis for Cost Optimization-&lt;/strong&gt; Real-time alerts will help us identify spikes in outgoing traffic that could lead to unexpected AWS data transfer costs. Monitoring traffic patterns allows us to make informed decisions about scaling resources up or down. We can automate scaling actions or adjust your application’s behavior based on traffic trends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Application Performance Monitoring-&lt;/strong&gt; Set up custom CloudWatch dashboards to visualize critical metrics and detect performance bottlenecks. Create CloudWatch alarms to trigger notifications when metrics exceed predefined thresholds, indicating potential performance issues. We can integrate CloudWatch with AWS X-Ray for end-to-end tracing and monitoring of application requests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Serverless Application Monitoring-&lt;/strong&gt; Set up custom CloudWatch Metrics to track specific business-related events or performance metrics within your serverless application. Use AWS CloudWatch Insights to perform advanced log analytics and gain deeper insights into function behavior. Implement AWS Step Functions to orchestrate serverless workflows and monitor their execution using CloudWatch Metrics and Alarms.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These use cases demonstrate the &lt;strong&gt;versatility&lt;/strong&gt; of Amazon CloudWatch in monitoring and managing various AWS resources and services, from traditional EC2 instances to serverless applications. By leveraging CloudWatch, we can enhance &lt;strong&gt;security, optimize costs, and maintain compliance&lt;/strong&gt; across various scenarios in real-world AWS environments. By effectively utilizing CloudWatch features, we can proactively &lt;strong&gt;manage and secure&lt;/strong&gt; your infrastructure while meeting specific business needs and objectives.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin privileges&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access to CloudFormation, EC2, CloudWatch, IAM&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AWS VPC, IAM, EC2, CloudWatch&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Deploying the proposed architecture Infrastructure.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Download the &lt;a href="https://github.com/Kunal-Shah107/AWS-Security-Monitoring-using-CloudWatch-Agent"&gt;**CloudFormation template from the Repo.&lt;/a&gt;**&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new stacks for both the templates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This CloudFormation stacks will deploy resources required for this hands on Lab (2 EC2 Instance, NLB, VPC, Nat Gateways, Lambda Functions, IAM roles &amp;amp; policies)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It will take around 5–10 mins for entire Infrastructure to become active.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Deploying the CloudWatch Agent on DB Instance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to EC2 dashboard, select Database Server Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect to Instance through AWS session manager.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, Install the CloudWatch agent package using below command&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;sudo yum install -y amazon-cloudwatch-agent&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The CloudWatch agent installer creates a new user named cwagent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now provide read and run access to the /var/log/secure file for the cwagent user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;sudo setfacl -m u:cwagent:rx /var/log/secure&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We are only sending security logs to CloudWatch &amp;amp; hence we gave access to /var/log/secure only.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n5fRqvPT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2202/1%2AkZYw8LvWkGcYKVX1VtYHfA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n5fRqvPT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2202/1%2AkZYw8LvWkGcYKVX1VtYHfA.png" alt="" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Start the CloudWatch Agent on DB Instance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the below command to start the CloudWatch agent configuration wizard&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will see the wizard opens with the following options:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter &lt;strong&gt;1&lt;/strong&gt; for Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Are you using EC2 or On-Premises hosts, enter &lt;strong&gt;1&lt;/strong&gt; for EC2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to turn on StatsD daemon, enter &lt;strong&gt;2&lt;/strong&gt; for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to monitor metrics from CollectD. enter &lt;strong&gt;2&lt;/strong&gt; for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to monitor any host metrics, enter &lt;strong&gt;2&lt;/strong&gt; for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do you have any existing CloudWatch Log Agent configuration file to import for migration, enter &lt;strong&gt;2&lt;/strong&gt; for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to monitor any log files, enter &lt;strong&gt;1&lt;/strong&gt; for yes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Log file path, enter &lt;strong&gt;/var/log/secure&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Log group name, enter database_server_security_logs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Log stream name, press ENTER to keep the default value of Instance ID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Log Group Retention in days, enter 9 for 90&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to specify any additional log files to monitor, enter 2 for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Do you want to store the config in SSM parameter store, enter 2 for no.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now lets start the CloudWatch agent service:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-ahgent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will see the information about the configuration file that is loaded by the agent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check CloudWatch agent service status- &lt;strong&gt;sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-ahgent-ctl -m ec2 -a status&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Rt_cBA1A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2688/1%2A2LD_oK_6nK6H8qpT-JtpyQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rt_cBA1A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2688/1%2A2LD_oK_6nK6H8qpT-JtpyQ.png" alt="" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--okPfAfxu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AnXsLaE7nE8GEMXKym78Q3A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--okPfAfxu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AnXsLaE7nE8GEMXKym78Q3A.png" alt="" width="655" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uCv9rM7Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3284/1%2A1eSmTjg19aPIJWlNgpZbNQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uCv9rM7Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3284/1%2A1eSmTjg19aPIJWlNgpZbNQ.png" alt="" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--njR4Y3xk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AVwuTMvdTvgscSUi6B49pPA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--njR4Y3xk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AVwuTMvdTvgscSUi6B49pPA.png" alt="" width="765" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Generate Auth failures in the security logs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the following command to log in as *&lt;em&gt;dbdev *&lt;/em&gt;:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;su dbdev&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;when prompted for a password, try to give wrong creds (to create auth failures)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repeat this process for 4–5 times to generate logs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3CczPzgN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Azgj94Yt1eCeQSMNtcn5_zg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3CczPzgN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Azgj94Yt1eCeQSMNtcn5_zg.png" alt="" width="244" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Check log files in CloudWatch Logs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to CloudWatch -&amp;gt; logs -&amp;gt; log groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the log groups, select the group by the name &lt;strong&gt;database_server_security_logs&lt;/strong&gt; log group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the **database_server_security_logs, **choose Log streams tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will see one log stream from DB server Instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This will have security logs from DB server Instance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eIQvRhQ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3752/1%2ARDp4lJUzerVdYJgjNcRKeA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eIQvRhQ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3752/1%2ARDp4lJUzerVdYJgjNcRKeA.png" alt="" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Create a Metric Filter&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On the &lt;strong&gt;database_server_security_logs&lt;/strong&gt; page, choose the &lt;strong&gt;Metric filters&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now create metric filter → Define pattern&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Filter pattern, enter “authentication failure”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Test pattern, select the EC2 Instance ID of DB server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Test pattern -&amp;gt; Next&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Assign metric, For Filtername give &lt;strong&gt;db server auth failures&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Metric namespace, enter authentication failures &amp;amp; create new is on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Metric name, enter &lt;strong&gt;db server auth failures&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Metric value &lt;strong&gt;1&lt;/strong&gt; and Default value &lt;strong&gt;0&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now review &amp;amp; create -&amp;gt; choose &lt;strong&gt;Create metric filter.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X6pE0BRd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3290/1%2AA3rCbS0ZluMF1IhA-nhbDg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X6pE0BRd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3290/1%2AA3rCbS0ZluMF1IhA-nhbDg.png" alt="" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H-S_-cBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AdQ0WaBUFs-qM0LX_l1FGXQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H-S_-cBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AdQ0WaBUFs-qM0LX_l1FGXQ.png" alt="" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rgBXzHRM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AzH_W-crxbS-pPZdrM_DEIw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rgBXzHRM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AzH_W-crxbS-pPZdrM_DEIw.png" alt="" width="800" height="835"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IUUHhufI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AE8nvTa3JeJ4COyZLhvAS3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IUUHhufI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AE8nvTa3JeJ4COyZLhvAS3g.png" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Create a CloudWatch alarm &amp;amp; SNS notification.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;On the &lt;strong&gt;database_server_security_logs&lt;/strong&gt; page, choose the &lt;strong&gt;Metric filters&lt;/strong&gt; tab, we will see **db server auth failures **filter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Create alarm -&amp;gt; Specify metrics &amp;amp; conditions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Metric name -&amp;gt; &lt;strong&gt;db server auth failures&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Statistic -&amp;gt; Sum and Period -&amp;gt; 5 mins. (your choice)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Conditions -&amp;gt; Threshold type select Static -&amp;gt; Greater -&amp;gt; 2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expand the additional configuration section &amp;amp; for Missing data treatment, select Treat missing data as good (not breaching threshold)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Next -&amp;gt; Configure actions -&amp;gt; &lt;strong&gt;Notification&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Alarm state trigger, select &lt;strong&gt;In alarm&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Select an SNS topic, select &lt;strong&gt;Create New Topic.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Create a new Topic, enter &lt;strong&gt;DB_Cloudwatch_alarm_notifications.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Email endpoints -&amp;gt; enter your email address.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Create Topic -&amp;gt; Next -&amp;gt; Add name &amp;amp; description.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Alarm name -&amp;gt; database server authentication failures alarm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Alarm description -&amp;gt; Alarms and notifies for more than 2 auth failures over a span of 5 minutes ( you can edit according to your use case)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next -&amp;gt; Preview and Create -&amp;gt; Choose Create alarm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check email &amp;amp; we must confirm email address &amp;amp; then SNS can send notification messages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HMCKuTIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3270/1%2AT4Xr3jcHc2_z24SXqv3iPw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HMCKuTIN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3270/1%2AT4Xr3jcHc2_z24SXqv3iPw.png" alt="" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ruhFO5_9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A1qv_B2ERyP_BJtwHK8qp3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ruhFO5_9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A1qv_B2ERyP_BJtwHK8qp3w.png" alt="" width="769" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--96AqhH66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Ap7eTIcYrHzKr3turEqwn9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--96AqhH66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Ap7eTIcYrHzKr3turEqwn9w.png" alt="" width="757" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Imip5bVw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Atgi5974tfutm8DLlsq_XGQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Imip5bVw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Atgi5974tfutm8DLlsq_XGQ.png" alt="" width="772" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WYDiw3JW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3384/1%2AdD3J8gxneHu74tv-ljO9Bg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WYDiw3JW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3384/1%2AdD3J8gxneHu74tv-ljO9Bg.png" alt="" width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9QneDAvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2APclqSbcijT6Qxbat2xtIwA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9QneDAvv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2APclqSbcijT6Qxbat2xtIwA.png" alt="" width="800" height="935"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--flPSBAY8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AD-zHVVQt5EN6xhY9UrIN4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--flPSBAY8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AD-zHVVQt5EN6xhY9UrIN4A.png" alt="" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8 : Test the alarm &amp;amp; SNS notification.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Login to DB server again &amp;amp; hit &lt;strong&gt;su dbdev&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;when prompted for a password, try to give wrong creds (to create auth failures)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Repeat this process for 4–5 times to generate logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now we should get the notification on email as soon as alarm get in In alarm state.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AMe5QE5L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3392/1%2A5F2kZP_L8sTd82PjVnbEQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AMe5QE5L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3392/1%2A5F2kZP_L8sTd82PjVnbEQQ.png" alt="" width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1N594vlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AshVgwxRfk0J2DgliSlN0VQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1N594vlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AshVgwxRfk0J2DgliSlN0VQ.png" alt="" width="800" height="1507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P68njRGX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AhI6dQuq50GxTJsp67t8QiQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P68njRGX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AhI6dQuq50GxTJsp67t8QiQ.png" alt="" width="800" height="1463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : Lets monitor NAT Gateway&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create New alarm → select metric -&amp;gt; Metrics -&amp;gt; AWS namespaces Choose NATGateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Nat Gateway Metrics&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for **BytesOutToDestination **in metric search bar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the NatGatewayId that matches the NatGatewayId value listed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Select metric -&amp;gt; Metric Name -&amp;gt; &lt;strong&gt;BytesOutToDestination&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For NatGatewayId, verify it matches the NatGatewayId value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Statistic -&amp;gt; Sum &amp;amp; Period -&amp;gt; 15 mins&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the conditions -&amp;gt; Threshold type -&amp;gt; Static -&amp;gt; Greater -&amp;gt; 2000000&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Next -&amp;gt; Configure actions -&amp;gt; Notification -&amp;gt; Alarm state trigger -&amp;gt; In alarm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select SNS -&amp;gt; Existing topic -&amp;gt;**DB_Cloudwatch_alarm_notifications (created earlier) -&amp;gt; **Next&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Name &amp;amp; description according to your use case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Preview and Create, Choose Create alarm.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bFE5lLrK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2054/1%2AhQ6zf8QJTb_ZmvM2kbhLmA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bFE5lLrK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2054/1%2AhQ6zf8QJTb_ZmvM2kbhLmA.png" alt="" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wCBWhn5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3476/1%2AgXfggDFz4Oyid4oBfddL5A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wCBWhn5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3476/1%2AgXfggDFz4Oyid4oBfddL5A.png" alt="" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N2dywOwy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2018/1%2AZHsg0cAeLE7L3YgQfzsuDA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N2dywOwy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2018/1%2AZHsg0cAeLE7L3YgQfzsuDA.png" alt="" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uoZ0pYF0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4hRENg1arNRukSd4zlPh4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uoZ0pYF0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4hRENg1arNRukSd4zlPh4g.png" alt="" width="759" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bK7N5jL7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2028/1%2Ay3ZKMBGIqwTBTsBZ6OifyA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bK7N5jL7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2028/1%2Ay3ZKMBGIqwTBTsBZ6OifyA.png" alt="" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10 : Generate traffic &amp;amp; activate the alarm&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Upload any file which is higher than 5 MB to S3 bucket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NAT Gateway outgoing traffic alarm will go &lt;strong&gt;In alarm&lt;/strong&gt; state.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check your email for notification email.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yeV1lKjP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3356/1%2AznmdtyyMwKDXWE08DyWjcA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yeV1lKjP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3356/1%2AznmdtyyMwKDXWE08DyWjcA.png" alt="" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--REfSy2pd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2A7nday4TZL_NpwVpply2yqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--REfSy2pd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2A7nday4TZL_NpwVpply2yqg.png" alt="" width="800" height="1501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z31v3T4c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AlvgujzRScVE5ffqdtxQ6Cg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z31v3T4c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AlvgujzRScVE5ffqdtxQ6Cg.png" alt="" width="800" height="876"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 11 : Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delete all the created alarm &amp;amp; SNS topics&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delete the CloudFormation stacks from CloudFormation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Congrats ! We have successfully completed lab for AWS Security Monitoring using CloudWatch Agent
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" alt="" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 7+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #cloudwatch #natgateway #observability #proactive #incident #management #centralize #network #security #logging #monitoring #operations #controlled #infrastructure #authentication #control #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>monitoring</category>
      <category>observability</category>
    </item>
    <item>
      <title>Enabling Seamless AWS Multi-Account Connectivity with AWS Transit Gateway</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Fri, 01 Sep 2023 09:48:00 +0000</pubDate>
      <link>https://forem.com/aws-builders/enabling-seamless-aws-multi-account-connectivity-with-aws-transit-gateway-1e6p</link>
      <guid>https://forem.com/aws-builders/enabling-seamless-aws-multi-account-connectivity-with-aws-transit-gateway-1e6p</guid>
      <description>&lt;h2&gt;
  
  
  Enabling Seamless AWS Multi-Account Connectivity with AWS Transit Gateway
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Connecting our AWS World through AWS Transit Gateway.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PBIEJB5f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AcJbm1Jgc1t3GhozQqHwSlg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PBIEJB5f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AcJbm1Jgc1t3GhozQqHwSlg.png" alt="" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS Transit Gateway Setup project is anticipated to result in a more streamlined, secure, and manageable network infrastructure for organizations operating across multiple AWS accounts. By embracing AWS Transit Gateway’s capabilities, empower businesses to focus on their core activities while enjoying enhanced network connectivity without the complexity typically associated with multi-account networking &amp;amp; peering.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D9G4r_7e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Aq2RC9oh90XD_iFaOH_r3Vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D9G4r_7e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Aq2RC9oh90XD_iFaOH_r3Vw.png" alt="" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplified Network Architecture:&lt;/strong&gt; The enterprise no longer needs to establish complex, point-to-point connections between each VPC which puts an end to complex peering relationships. The transit gateway acts as a central hub, reducing the need for managing numerous connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Isolation and Security:&lt;/strong&gt; Each VPC remains isolated, ensuring that sensitive data and resources are protected. Traffic between VPCs passes through controlled routes, enhancing security. It can connect Amazon VPCs, AWS accounts, and on-premises networks to a single gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficient Data Transfer:&lt;/strong&gt; By centralizing traffic flow, the transit gateway optimizes data transfer between VPCs, resulting in improved network efficiency. AWS Transit Gateway provides statistics and logs that are then used by services such as Amazon CloudWatch and Amazon VPC Flow Logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; As the enterprise grows and introduces new departments or business units, scaling the network becomes easier, as new VPCs can be integrated with the transit gateway seamlessly. Just like modern day Landing zone where multiple accounts are deployed &amp;amp; managed. Transit gateway plays a vital role for network connectivity across AWS accounts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational Simplicity:&lt;/strong&gt; With Transit Gateway, the project illustrates how network administrators can manage, monitor, and troubleshoot connectivity from a single interface, enhancing operational efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, &lt;strong&gt;AWS Transit Gateway&lt;/strong&gt; offers secure edge connectivity, network management, single interface monitor and scalable approach for managing network connectivity across &lt;strong&gt;complex multi-account&lt;/strong&gt; AWS environments &amp;amp; on-premise networks. It enables organizations to efficiently manage their &lt;strong&gt;cloud networking&lt;/strong&gt;, &lt;strong&gt;operational efficiency&lt;/strong&gt;, and &lt;strong&gt;streamline practices.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;3 AWS Account with Admin Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This we have created in my &lt;a href="https://dev.to/acloudguy/aws-landing-zone-setup-through-aws-control-tower-3152"&gt;AWS Landing Zone setup through AWS Control Tower&lt;/a&gt; Blog.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPC in each AWS account with 2 Private subnets, 2 Public subnet, 3 Route Table, 1 Nat gateway &amp;amp; IGW.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AWS VPC, IAM, Transit Gateway, EC2, SG&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Create VPC in all 3 of the AWS accounts.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1st AWS Account for Management VPC.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;VPC Dashboard&lt;/strong&gt;, choose &lt;strong&gt;Create VPC&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;VPC settings&lt;/strong&gt;, choose &lt;strong&gt;VPC and more&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complete these fields as follows:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep &lt;strong&gt;Auto-generated&lt;/strong&gt; selected under &lt;strong&gt;Name tag auto-generation&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change &lt;strong&gt;project&lt;/strong&gt; to .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;IPv4 CIDR block&lt;/strong&gt; should be 10.100.0.0/16.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep &lt;strong&gt;No IPv6 CIDR block&lt;/strong&gt; option selected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;Tenancy&lt;/strong&gt; should remain &lt;strong&gt;Default&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;2&lt;/strong&gt; for the &lt;strong&gt;Number of Availability Zones (AZs).&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;2&lt;/strong&gt; for the &lt;strong&gt;Number of public subnets and private subnets.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select 1 Nat Gateway &amp;amp; VPC endpoints should be None.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DNS options — check mark both.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create VPC&lt;/strong&gt;. It takes several minutes for the VPC to be created.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gRrI4OxD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AlHG2qbPjmVIhXb46f9gzUw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gRrI4OxD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AlHG2qbPjmVIhXb46f9gzUw.png" alt="" width="472" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dnvzJZp9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AbfEAq71rwO8KMXAZEHKwWQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dnvzJZp9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AbfEAq71rwO8KMXAZEHKwWQ.png" alt="" width="447" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zJJ_aiLO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A0Iqnz1iZ6woH2DJ6AXMneQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zJJ_aiLO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A0Iqnz1iZ6woH2DJ6AXMneQ.png" alt="" width="444" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zM0SVnBJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2600/1%2Ad9la2a6TCkqs-AcU--0ByQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zM0SVnBJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2600/1%2Ad9la2a6TCkqs-AcU--0ByQ.png" alt="" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2nd AWS Account for Audit VPC.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Follow the same steps as followed above in &lt;strong&gt;2nd AWS Account&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change &lt;strong&gt;project&lt;/strong&gt; to .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;IPv4 CIDR block&lt;/strong&gt; should be 10.110.0.0/16.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3rd AWS Account for Logs VPC.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Follow the same steps as followed above in &lt;strong&gt;3rd AWS Account&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change &lt;strong&gt;project&lt;/strong&gt; to .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;strong&gt;IPv4 CIDR block&lt;/strong&gt; should be 10.120.0.0/16.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Now All 3 AWS Accounts ( Management, Audit &amp;amp; Logs ) have custom VPC.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Create Transit Gateway&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Log in to the AWS Management Console of the &lt;strong&gt;1st AWS Account (Management account)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to VPC and select Transit Gateways&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Name tag and Description for AWS Transit Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the private ASN for your transit gateway. The range is from 64512 to 65534 for 16-bit ASNs. &lt;a href="https://docs.aws.amazon.com/managedservices/latest/onboardingguide/core-questions-network.html"&gt;Read more on ASN&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For now enter &lt;strong&gt;64555&lt;/strong&gt; as Amazon Side Autonomous System Number (ASN). It must be unique and cannot be the same one used for your Direct Connect or VPN.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select checkbox for DNS Support, VPN ECMP Support, Default Route Table association and Default Route Table Propagation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tI0kxVlP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AknjBkHJaeDQbsI1a03x--A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tI0kxVlP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AknjBkHJaeDQbsI1a03x--A.png" alt="" width="748" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now head over to VPC &amp;gt; Subnets &amp;amp; copy Private subnet CIDR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add copied private subnet CIDR in Transit gateway CIDR blocks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give tags &amp;amp; hit &lt;strong&gt;Create transit gateway.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It will take about 30 seconds for the Transit Gateway to be in the &lt;strong&gt;available&lt;/strong&gt; state.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UQsHyn51--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AYMAZsSdUwtrNS1Mt4nBBTQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UQsHyn51--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AYMAZsSdUwtrNS1Mt4nBBTQ.png" alt="" width="738" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8pifcJG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADhwgNYcffG6st6sgzB-i0A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8pifcJG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADhwgNYcffG6st6sgzB-i0A.png" alt="" width="688" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Share Resources across Organization AWS accounts.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS RAM (Resource Access Manager) helps us securely share our resources across AWS accounts, within our organization or organizational units (OUs), and with IAM roles and users for supported resource types.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the &lt;a href="https://console.aws.amazon.com/ram/home"&gt;AWS RAM console&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create resource share&lt;/strong&gt; from the Shared by me&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Name&lt;/strong&gt;, enter a any name for the resource share.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under &lt;strong&gt;Resources,&lt;/strong&gt; from dropdown select &lt;strong&gt;Transit Gateway.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Transit gateway which we created above in step 2 &amp;amp; hit next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Associate managed permissions &lt;em&gt;— optional —&lt;/em&gt; hit next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Grant access to principals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Allow sharing &lt;strong&gt;only within&lt;/strong&gt; your organization &amp;amp; select &lt;strong&gt;Principal ID&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review &amp;amp; &lt;strong&gt;Create resource share.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UZEG8Xnu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2706/1%2AM5DN_craUpupAkFJOzB-3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UZEG8Xnu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2706/1%2AM5DN_craUpupAkFJOzB-3w.png" alt="" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lSRQBC86--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3678/1%2AymkblvragJ91xwCaz7xyBw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lSRQBC86--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3678/1%2AymkblvragJ91xwCaz7xyBw.png" alt="" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eMyWQzfP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3674/1%2Al8aj3MYef--MOqtBuyZLZw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eMyWQzfP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3674/1%2Al8aj3MYef--MOqtBuyZLZw.png" alt="" width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Transit Gateway Attachments&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open the Amazon VPC console in &lt;strong&gt;1st AWS Account (Management account)&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the navigation pane, choose &lt;strong&gt;Transit Gateway Attachments&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create transit gateway attachment&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Name tag&lt;/strong&gt;, optionally enter a name for the transit gateway attachment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Transit gateway ID&lt;/strong&gt;, choose the transit gateway for the attachment. We can choose a transit gateway that we created.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Attachment type&lt;/strong&gt;, choose &lt;strong&gt;VPC&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose whether to enable &lt;strong&gt;DNS Support&lt;/strong&gt; and &lt;strong&gt;IPv6 Support&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;VPC ID&lt;/strong&gt;, choose the VPC to attach to the transit gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Subnet IDs&lt;/strong&gt;, select one private subnet for each Availability Zone to be used by the transit gateway to route traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose &lt;strong&gt;Create transit gateway attachment&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HAG4Ht8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AQgggN-_YR2JZeEX3KOQ9dg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HAG4Ht8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AQgggN-_YR2JZeEX3KOQ9dg.png" alt="" width="736" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WiyDwspo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A-yuPrbdqrtIS74ipM4UDtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WiyDwspo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A-yuPrbdqrtIS74ipM4UDtw.png" alt="" width="742" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Transit Gateway Attachments for other AWS Accounts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Follow the same steps in 2nd AWS Account (Audit) &amp;amp; 3rd AWS Account (Logs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We already shared the Transit Gateway in this accounts through AWS RAM. Hence we don't need to create a new Transit Gateway.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We will use the same Transit Gateway &amp;amp; create new Transit Gateway attachments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After completing the Transit Gateway attachments we will see the snapshot as below&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ncha97hI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3314/1%2ABVOCHs6rAeryDCWtHh_crQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ncha97hI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3314/1%2ABVOCHs6rAeryDCWtHh_crQ.png" alt="" width="800" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Creating Transit Gateway Route Tables, Associations, and Propagations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transit Gateway Route Tables are the elements that allows traffic to pass through the Transit Gateway between each attachment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They only exist in the account that owns the Transit Gateway. In our case its 1st AWS Account ( Management account )&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Transit Gateway Attachments are associated to a Transit Gateway Route Table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An attachment can only be associated to one route table. However, you can have multiple attachments associated to a single route table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to VPC -&amp;gt; &lt;strong&gt;Transit Gateways route tables&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Routes&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Our routing table should be populated with &lt;strong&gt;“Management VPC”&lt;/strong&gt;, &lt;strong&gt;“Audit VPC”&lt;/strong&gt;, &lt;strong&gt;“Logs VPC”&lt;/strong&gt; routes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R8k6i2RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3320/1%2Amtz_bPiAM6sKChf2zIj4JA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R8k6i2RU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3320/1%2Amtz_bPiAM6sKChf2zIj4JA.png" alt="" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Update Route Tables of VPCs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Route Tables, select &lt;strong&gt;Management VPC Private Route Table 1.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Routes&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit routes &amp;amp; add routes for Audit &amp;amp; Logs VPC CIDR.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q3vm-Ahh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2402/1%2Axi-S38Khb2IWV4nUw2oCgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q3vm-Ahh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2402/1%2Axi-S38Khb2IWV4nUw2oCgw.png" alt="" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to &lt;strong&gt;2nd AWS Audit Account&lt;/strong&gt; -&amp;gt; Route Tables, select &lt;strong&gt;Audit VPC Private Route Table 1.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Routes&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit routes &amp;amp; add routes for Management &amp;amp; Logs VPC CIDR.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pyUgXvwh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3246/1%2AJrno0_j6HKwVi8ghIJhQOw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pyUgXvwh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3246/1%2AJrno0_j6HKwVi8ghIJhQOw.png" alt="" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to 3rd &lt;strong&gt;AWS Logs Account&lt;/strong&gt; -&amp;gt; Route Tables, select &lt;strong&gt;Logs VPC Private Route Table 1.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Routes&lt;/strong&gt; tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit routes &amp;amp; add routes for Management &amp;amp; Audit VPC CIDR.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kKR3rK-z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3236/1%2AM9MgGh60Lq8u4j4vyHdDeQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kKR3rK-z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3236/1%2AM9MgGh60Lq8u4j4vyHdDeQ.png" alt="" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Create EC2 Instances for connectivity test&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;We will create Total 3 EC2 instances, 1 each in each AWS account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudFormation Template for Creating EC2 Instance, Security Group, IAM role &amp;amp; Instance Profile.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/Kunal-Shah107/AWS-Transit-Gateway/blob/main/ec2-tgw.yml"&gt;ec2-tgw.yml&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify Instance status checks after creating in Management, Audit &amp;amp; Logs AWS account.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 8 : Ping Test across AWS accounts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now go ahead &amp;amp; login to Management account EC2 Instance to start pinging to Audit &amp;amp; Log EC2 Instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping audit_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping log_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ping result needs to be successfully transmitted.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cMAvPkN3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AOvNHr81zGO3S3Jir6jry6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cMAvPkN3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AOvNHr81zGO3S3Jir6jry6g.png" alt="" width="800" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now login to Audit account EC2 Instance to start pinging to Management &amp;amp; Log EC2 Instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping management_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping log_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NkM-l_OU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AgetVm7kabXML7T1OkCv7Bw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NkM-l_OU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AgetVm7kabXML7T1OkCv7Bw.png" alt="" width="528" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now login to Logs account EC2 Instance to start pinging to Management &amp;amp; Audit EC2 Instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping management_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ping audit_ec2_ip_address&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mldk3PGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Am9ljW6Z1sKoP1Mr8hbaj8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mldk3PGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Am9ljW6Z1sKoP1Mr8hbaj8w.png" alt="" width="529" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This results prove that connectivity is established across AWS accounts &amp;amp; respective VPCs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STEP 9 : Decommission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delete EC2 CloudFormation template across accounts to terminate EC2 Instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove route table entries of transit gateway from respective private route table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminate Transit Gateway &amp;amp; VPC if not required.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE :&lt;/strong&gt; Don’t forget to check out the &lt;a href="https://aws.amazon.com/transit-gateway/pricing/"&gt;Transit Gateway Pricing&lt;/a&gt; page as well as the &lt;a href="https://aws.amazon.com/transit-gateway/faqs/"&gt;Transit Gateway FAQ&lt;/a&gt; and the &lt;a href="https://docs.aws.amazon.com/vpc/latest/tgw/"&gt;Transit Gateway documentation&lt;/a&gt; pages to get complete details on how to configure a Transit Gateway.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;AWS Transit Gateway&lt;/strong&gt; is a network model that can impactfully simplify a network architecture in AWS. Before Transit Gateway, connectivity to multi-VPC environments was accomplished through Direct Connect Gateway or VPC Peering &amp;amp; Transit VPC solutions which proved to be complex in nature. However, the use of AW Transit Gateway allows use cases as simple as inter-VPC connectivity to more complex scenarios involving connectivity to on-site networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Congrats ! We have successfully completed lab for Enabling Seamless AWS Multi-Account Connectivity with AWS Transit Gateway
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4X6TXKtr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3144/1%2ABxfgHQkXG7JLHn9ohjYVeg.png" alt="" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 7+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #transit #gateway #landing #zone #organization #management #centralize #network #security #logging #audit #operations #scaling #infrastructure #connectivity #account #compliance #control #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>networking</category>
      <category>devops</category>
      <category>community</category>
    </item>
    <item>
      <title>AWS Landing Zone setup through AWS Control Tower</title>
      <dc:creator>Kunal Shah</dc:creator>
      <pubDate>Sat, 05 Aug 2023 10:18:24 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-landing-zone-setup-through-aws-control-tower-3152</link>
      <guid>https://forem.com/aws-builders/aws-landing-zone-setup-through-aws-control-tower-3152</guid>
      <description>&lt;h2&gt;
  
  
  AWS Landing Zone setup through AWS Control Tower
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AWS Cloud Hands on Lab Practice Series
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Streamline Cloud Governance : Secure, Scale, Succeed&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Project Overview —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS Landing Zone Setup project aims to architect a secure, well-governed, and scalable cloud environment using AWS Control Tower. The project’s primary goal is to provide a standardized framework for setting up multiple AWS accounts while adhering to AWS best practices and compliance requirements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOLUTIONS ARCHITECTURE OVERVIEW -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hxtm8vpX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2934/1%2AUSRDLygyZhlB9moZqT0iBQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hxtm8vpX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2934/1%2AUSRDLygyZhlB9moZqT0iBQ.png" alt="diagram source : aws" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First Let’s understand the real world use case -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-account Management:&lt;/strong&gt; Today many organizations use an AWS Landing Zone to establish a multi-account strategy, where each account serves a specific purpose, such as security, logging, audit, operations, development, testing, production, or for individual teams or projects. This segmentation allows better isolation, resource allocation, and account level management. It gives holistic view of all accounts associated to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security and Compliance:&lt;/strong&gt; AWS Landing Zones help enforce consistent security and compliance standards across all AWS accounts within an organization. By implementing predefined security controls, access policies, and configurations, AWS Landing Zones reduce the risk of security breaches and ensure regulatory compliance. It acts as a single point for security measures.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost Optimization&lt;/strong&gt;: With an AWS Landing Zone, organizations can effectively manage AWS costs by implementing cost-tracking mechanisms, usage policies, and access controls. This allows better visibility into resource usage and cost allocation across various accounts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational and Governance Automation:&lt;/strong&gt; A well-designed AWS Landing Zone enables automation of repetitive operational tasks, such as user provisioning, account setup, resource deployment, centralized audit &amp;amp; logging and policy enforcement. This streamlines operations and reduces the chances of manual errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Network Connectivity and Architecture:&lt;/strong&gt; AWS Landing Zones facilitate the creation of consistent networking and architecture patterns across AWS accounts, allowing organizations to maintain a standardized and well-organized cloud infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overall, &lt;strong&gt;AWS Landing Zone&lt;/strong&gt; offers a standardized, secure, and scalable approach for managing AWS environments in &lt;strong&gt;complex&lt;/strong&gt;, &lt;strong&gt;multi-account scenarios&lt;/strong&gt;. They enable organizations to efficiently manage their &lt;strong&gt;cloud resources&lt;/strong&gt;, &lt;strong&gt;enhance security&lt;/strong&gt;, and &lt;strong&gt;streamline governance and compliance practices.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Account with Admin Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;3 unique email addresses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AWS Services Usage —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AWS Control Tower, IAM, CloudFormation&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Terminologies —&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Organization&lt;/strong&gt;: An AWS Organization is a group of AWS accounts created to simplify the management and billing of multiple AWS accounts. It serves as the root of your account hierarchy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Organizational Units (OUs)&lt;/strong&gt;: OUs are logical groupings of AWS accounts within an AWS Organization. They help you organize and manage accounts with common requirements or purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Guardrails&lt;/strong&gt;: Guardrails are a set of predefined policies and best practices that AWS Control Tower enforces to ensure security, compliance, and governance across all accounts within the organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Service Control Policies&lt;/strong&gt; (SCPs): SCPs are policies that you attach to OUs or individual AWS accounts to manage permissions and access control across the organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IAM Identity Center&lt;/strong&gt; (SSO): AWS IAM Identity Center is a service that enables centralized management of user access and permissions across AWS accounts and business applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;STEP BY STEP GUIDE -&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Note —&lt;/strong&gt; AWS Control Tower sets up paid services, such as AWS CloudTrail, AWS Config, Amazon CloudWatch, Amazon S3, and Amazon VPC. When used, these services may incur costs, as shown on the &lt;a href="https://aws.amazon.com/controltower/pricing/?loc=ft"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1 : Review pricing &amp;amp; select regions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Log in to the AWS Management Console of the AWS Account where you plan to deploy AWS Control Tower. This account will be referred to as the &lt;strong&gt;Management account.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the service Control Tower under Management &amp;amp; Governance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure you are in one of the supported regions. Keep in mind that the region selected here is the &lt;strong&gt;HOME REGION&lt;/strong&gt; and cannot be changed once AWS Control Tower is installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On AWS Control Tower home page, select Set up landing zone button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;select the region deny setting to not enabled &amp;amp; click next.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YewAwt8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AdbdYX4JOhppz3OCzTuAbGw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YewAwt8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2160/1%2AdbdYX4JOhppz3OCzTuAbGw.png" alt="" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zs7zNrLL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A5MGvKU5gtyzIaSjJUlsYDw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zs7zNrLL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A5MGvKU5gtyzIaSjJUlsYDw.png" alt="" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kAsK5MKk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2232/1%2AiYuHUTQlAcDfspgRCRphsg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kAsK5MKk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2232/1%2AiYuHUTQlAcDfspgRCRphsg.jpeg" alt="" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VT4Ks5C7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADJDIzzj8NtiJxcEuTjPZJA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VT4Ks5C7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADJDIzzj8NtiJxcEuTjPZJA.jpeg" alt="" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E3hIX9oT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AMmPp8E7MMg_nVsPUUdvXzw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E3hIX9oT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AMmPp8E7MMg_nVsPUUdvXzw.jpeg" alt="" width="800" height="851"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2 : Configure organizational units (OUs)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now give names to Organizational units (OUs) &amp;amp; click next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3a27VklY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2230/1%2ACuPWubdJYEorL7BOlRW0dw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3a27VklY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2230/1%2ACuPWubdJYEorL7BOlRW0dw.jpeg" alt="" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3 : Configure shared accounts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proceed by giving email addresses for Management account, Log archive account &amp;amp; Audit account. Click next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I13zJXzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2218/1%2A4TlZOQSoovRPjbK9Rk4w9w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I13zJXzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2218/1%2A4TlZOQSoovRPjbK9Rk4w9w.jpeg" alt="" width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0nt5skPL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADknJvTtZz7avGPoqLk4yVA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0nt5skPL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ADknJvTtZz7avGPoqLk4yVA.jpeg" alt="" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4 : Additional Configurations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select AWS Control Tower sets up AWS account access with IAM Identity Center.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This helps in managing users, roles, policies under one umbrella.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, Enable CloudTrail configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up frequency of Logs retention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep KMS encryption as not selected as its optional &amp;amp; click next&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FJ8TqyqN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2210/1%2AQ83kG98mTR8Q2p5000ZkHw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FJ8TqyqN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2210/1%2AQ83kG98mTR8Q2p5000ZkHw.jpeg" alt="" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qhfCooWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Am17-QVu6UVJgNAMa2kYEHw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qhfCooWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2Am17-QVu6UVJgNAMa2kYEHw.jpeg" alt="" width="800" height="706"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5 : Review and set up landing zone&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Review all details thoroughly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the check box “I understand..&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Set up landing zone&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EiE9GGvM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2190/1%2ATRnnNO31y4Fw5wdeJFFbRQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EiE9GGvM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2190/1%2ATRnnNO31y4Fw5wdeJFFbRQ.jpeg" alt="" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VVPPVtLv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AytElBX3AVxndUOiOhiII-Q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VVPPVtLv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AytElBX3AVxndUOiOhiII-Q.jpeg" alt="" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6 : Accept Invitation to join IAM Identity center.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now, process of deploying AWS resources is started.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All 3 email addresses provided will receive &lt;strong&gt;“ACCEPT INVITATION”&lt;/strong&gt; along with AWS portal link.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on ACCEPT INVITATION to join IAM Identity center.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2OIIqt2Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3730/1%2AfIxpk2ifSlTXdAa4WYm-vg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2OIIqt2Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3730/1%2AfIxpk2ifSlTXdAa4WYm-vg.jpeg" alt="" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mhqIKVVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AHf_P5rch--s-j7Xbsur86w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mhqIKVVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AHf_P5rch--s-j7Xbsur86w.jpeg" alt="" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ed1YJ4xv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AJJqlWsWXZWaNjdcJ_DTjKA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ed1YJ4xv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AJJqlWsWXZWaNjdcJ_DTjKA.jpeg" alt="" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7 : Track progress &amp;amp; complete the setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep the track of progress as it will take around 30–45 mins to complete the entire setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check CloudFormation stacks to check aws resources provisioned.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Landing Zone is Finally Active &amp;amp; ready to manage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dRT7mzTp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3660/1%2A9FXuZGq23XM5qGHvtJhhLA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dRT7mzTp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3660/1%2A9FXuZGq23XM5qGHvtJhhLA.jpeg" alt="" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5APhvFaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3260/1%2Axb5XZwaHRY5LzVZuNng29A.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5APhvFaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3260/1%2Axb5XZwaHRY5LzVZuNng29A.jpeg" alt="" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W4cgxU91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3142/1%2AI5AIEVk1cGuEnlDFx1IoeA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W4cgxU91--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3142/1%2AI5AIEVk1cGuEnlDFx1IoeA.jpeg" alt="" width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IMP NOTE&lt;/strong&gt; — This DEMO/POC might incur some charges if kept active for long time. So please make sure to clean up the environment once done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D6VTFlEY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2APWhXnBsiWTc-fnsq_OvYNw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D6VTFlEY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2APWhXnBsiWTc-fnsq_OvYNw.jpeg" alt="" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Congrats ! We have successfully completed lab for AWS Landing Zone setup through AWS Control Tower.
&lt;/h3&gt;

&lt;p&gt;-------------------------------------*******----------------------------------------&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DR6ngkcn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3168/1%2AXSVHeCXZmWPoGQ07UoqDDg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DR6ngkcn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3168/1%2AXSVHeCXZmWPoGQ07UoqDDg.png" alt="" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I am Kunal Shah, AWS Certified Solutions Architect, helping clients to achieve optimal solutions on the Cloud. Cloud Enabler by choice, DevOps Practitioner having 7+ Years of overall experience in the IT industry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love to talk about Cloud Technology, DevOps, Digital Transformation, Analytics, Infrastructure, Dev Tools, Operational efficiency, Serverless, Cost Optimization, Cloud Networking &amp;amp; Security.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  aws #community #builders #devops #control #tower #landing #zone #organization #iam #centralize #security #logging #audit #operations #scaling #infrastructure #account #vending #machine #acloudguy
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;You can reach out to me @ &lt;a href="https://acloudguy.in/"&gt;acloudguy.in&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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