<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AWS on My Notes</title><link>https://harryho.github.io/cloud/aws/</link><description>Recent content in AWS on My Notes</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://harryho.github.io/cloud/aws/index.xml" rel="self" type="application/rss+xml"/><item><title>AWS: IAM</title><link>https://harryho.github.io/cloud/aws/aws-01-iam/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-01-iam/</guid><description>&lt;h2 id="iam"&gt;IAM&lt;a class="anchor" href="#iam"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AWS Identity and Access Management (IAM) enables you to manage access to AWS services and resources securely. Using IAM, you can create and manage AWS users and groups, and use permissions to allow and deny their access to AWS resources.&lt;/p&gt;
&lt;h3 id="root-user"&gt;Root User&lt;a class="anchor" href="#root-user"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Every account has a root user in AWS. A root user is something that&amp;rsquo;s created automatically for you whenever you create an AWS account.&lt;/li&gt;
&lt;li&gt;Every single AWS account has a root user.&lt;/li&gt;
&lt;li&gt;The trouble is that root users have unrestricted access to every service and resource that is in AWS inside of your account.&lt;/li&gt;
&lt;li&gt;The permissions of root user can&amp;rsquo;t be restricted in any way.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dos-and-donts"&gt;Dos and Don&amp;rsquo;ts&lt;a class="anchor" href="#dos-and-donts"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You should not be accessing the root account on a regular basis, whether that&amp;rsquo;s daily, weekly, or whatever.&lt;/li&gt;
&lt;li&gt;Make sure that you turn on multi-factor authentication on the root account. Multi-factor authentication used to be called two-factor authentication. It really just means that we know the password and we have some sort of a token that we will get a number generated. It&amp;rsquo;s something that you might even use your smartphone for. But it now means that I have to know the username and password and I have to have this token that&amp;rsquo;s going to generate a code. We&amp;rsquo;ll see more about how you&amp;rsquo;ll do that later.&lt;/li&gt;
&lt;li&gt;Make sure that you&amp;rsquo;ve disabled your root access keys. This isn&amp;rsquo;t the interactive login for root, it has to do with how we can access the account programmatically.&lt;/li&gt;
&lt;li&gt;Make sure that you rotate the credentials. Just because we say don&amp;rsquo;t log in doesn&amp;rsquo;t mean set the password and then forget it.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t share the root user credentials. password. And all that the audit logs show is that root logged in and did the job. Kind of dangerous.&lt;/li&gt;
&lt;li&gt;Make sure that you create a user that has administrative privileges that&amp;rsquo;s assigned to you and that you know the password only.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="features--functions"&gt;Features &amp;amp; Functions&lt;a class="anchor" href="#features--functions"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Allows user to have very secure access including through the use of multi-factor authentication and federation.&lt;/li&gt;
&lt;li&gt;Grant user a lot of granular control over the specific resources.&lt;/li&gt;
&lt;li&gt;Grant temporary access to different people.&lt;/li&gt;
&lt;li&gt;Simplify the number of logins by using federating identities&lt;/li&gt;
&lt;li&gt;Integrate the IAM solution is with all of the different products that AWS offers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mfa"&gt;MFA&lt;a class="anchor" href="#mfa"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MFA stands for multi-factor authentication&lt;/li&gt;
&lt;li&gt;Extra layer of security.&lt;/li&gt;
&lt;li&gt;Prevent against imposters, somebody who just happened to guess the right password or happened to actually shoulder surf and watch somebody key in their username and password.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="iam-user"&gt;IAM User&lt;a class="anchor" href="#iam-user"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;It is an entity that you create in AWS. The IAM user represents the person or service who uses the IAM user to interact with AWS. A primary use for IAM users is to give people the ability to sign in to the AWS Management Console for interactive tasks and to make programmatic requests to AWS services using the API or CLI. A user in AWS consists of a name, a password to sign into the AWS Management Console, and up to two access keys that can be used with the API or CLI.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>AWS : CLI - 1</title><link>https://harryho.github.io/cloud/aws/aws-02-cli-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-02-cli-1/</guid><description>&lt;h3 id="aws-cli"&gt;AWS CLI&lt;a class="anchor" href="#aws-cli"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Amazon Virtual Private Cloud (Amazon VPC) enables you to launch AWS resources into a virtual network that you&amp;rsquo;ve defined. This virtual network closely resembles a traditional network that you&amp;rsquo;d operate in your own data center, with the benefits of using the scalable infrastructure of AWS.&lt;/p&gt;
&lt;h3 id="cli-installation-version-1"&gt;CLI installation (Version 1)&lt;a class="anchor" href="#cli-installation-version-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="install-python-3"&gt;Install Python 3&lt;a class="anchor" href="#install-python-3"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Python 2.7 is no longer supported. Please install python3&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; sudo yum install python3
 pip3 --version
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="profile-setup"&gt;Profile Setup&lt;a class="anchor" href="#profile-setup"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A named profile is a collection of settings and credentials that you can apply to a AWS CLI command. When you specify a profile to run a command, the settings and credentials are used to run that command.&lt;/p&gt;</description></item><item><title>AWS : CLI - 2</title><link>https://harryho.github.io/cloud/aws/aws-02-cli-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-02-cli-2/</guid><description>&lt;h3 id="aws-cli--vpc"&gt;AWS CLI &amp;amp; VPC&lt;a class="anchor" href="#aws-cli--vpc"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Following is a sample to create a VPC with 2 private subnets, 2 public subnets across 2 avaliable zones and NAT Gateway.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#******************************************************************************&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# AWS VPC CLI Script&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#******************************************************************************&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# SYNOPSIS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Automates the creation of a custom IPv4 VPC, having both a public and a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# private subnet, and a NAT gateway.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#==============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# NOTES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# VERSION: 1.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# AUTHOR: Harry Ho&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#==============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# MODIFY THE SETTINGS BELOW&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#==============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;AWS_REGION&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;ap-southeast-2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;VPC_NAME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;DEV-PG-II&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;VPC_CIDR&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;10.5.0.0/16&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PUBLIC_CIDR&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;10.5.1.0/24&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PUBLIC_AZ&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;ap-southeast-2a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PUBLIC_NAME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;-PubSub-AZ2a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PRIVATE_CIDR&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;10.5.2.0/24&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PRIVATE_AZ&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;ap-southeast-2b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PRIVATE_NAME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;-PrvSub-AZ2b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;IGW_NAME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;-IGW&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;NAT_GW_NAME&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;-NAT-GW&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;CHECK_FREQUENCY&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#==============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# DO NOT MODIFY CODE BELOW&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#==============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create VPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating VPC in preferred region...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;VPC_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-vpc &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --cidr-block &lt;span style="color:#953800"&gt;$VPC_CIDR&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;Vpc.{VpcId:VpcId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; VPC ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; CREATED in &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; region.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Add Name tag to VPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 create-tags &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --resources &lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --tags &lt;span style="color:#0a3069"&gt;&amp;#34;Key=Name,Value=&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; VPC ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; NAMED as &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create Public Subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating Public Subnet...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PUBLIC_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-subnet &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --vpc-id &lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --cidr-block &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_CIDR&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --availability-zone &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_AZ&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;Subnet.{SubnetId:SubnetId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Subnet ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; CREATED in &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_AZ&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Availability Zone.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Add Name tag to Public Subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 create-tags &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --resources &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --tags &lt;span style="color:#0a3069"&gt;&amp;#34;Key=Name,Value=&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Subnet ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; NAMED as&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create Private Subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating Private Subnet...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;SUBNET_PRIVATE_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-subnet &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --vpc-id &lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --cidr-block &lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_CIDR&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --availability-zone &lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_AZ&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;Subnet.{SubnetId:SubnetId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Subnet ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; CREATED in &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_AZ&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Availability Zone.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Add Name tag to Private Subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 create-tags &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --resources &lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --tags &lt;span style="color:#0a3069"&gt;&amp;#34;Key=Name,Value=&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Subnet ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; NAMED as &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PRIVATE_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create Internet gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating Internet Gateway...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;IGW_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-internet-gateway &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;InternetGateway.{InternetGatewayId:InternetGatewayId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Internet Gateway ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; CREATED.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Add Name tag to Internet gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 create-tags &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --resources &lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --tags &lt;span style="color:#0a3069"&gt;&amp;#34;Key=Name,Value=&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Internet gateway &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; NAMED as &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Attach Internet gateway to your VPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 attach-internet-gateway &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --vpc-id &lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --internet-gateway-id &lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Internet Gateway ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; ATTACHED to VPC ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create Route Table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating Route Table...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-route-table &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --vpc-id &lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;RouteTable.{RouteTableId:RouteTableId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Route Table ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; CREATED.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create route to Internet Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;RESULT&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-route &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --route-table-id &lt;span style="color:#953800"&gt;$ROUTE_TABLE_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --destination-cidr-block 0.0.0.0/0 &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gateway-id &lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Route to &amp;#39;0.0.0.0/0&amp;#39; via Internet Gateway ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$IGW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; ADDED to&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Route Table ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Associate Public Subnet with Route Table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;RESULT&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 associate-route-table &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subnet-id &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --route-table-id &lt;span style="color:#953800"&gt;$ROUTE_TABLE_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Public Subnet ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; ASSOCIATED with Route Table ID&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Enable Auto-assign Public IP on Public Subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 modify-subnet-attribute &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subnet-id &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --map-public-ip-on-launch &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; &amp;#39;Auto-assign Public IP&amp;#39; ENABLED on Public Subnet ID&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Allocate Elastic IP Address for NAT Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Creating NAT Gateway...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;EIP_ALLOC_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 allocate-address &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --domain vpc &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;{AllocationId:AllocationId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Elastic IP address ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$EIP_ALLOC_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; ALLOCATED.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create NAT Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;NAT_GW_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-nat-gateway &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subnet-id &lt;span style="color:#953800"&gt;$SUBNET_PUBLIC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --allocation-id &lt;span style="color:#953800"&gt;$EIP_ALLOC_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;NatGateway.{NatGatewayId:NatGatewayId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;Creating NAT Gateway ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; and waiting for it to &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0550ae"&gt;+=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;become available.\n Please BE PATIENT as this can take some &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0550ae"&gt;+=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;time to complete.\n ......\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;printf&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; &lt;/span&gt;&lt;span style="color:#953800"&gt;$FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;STATUS: AVAILABLE - Total of %02d seconds elapsed for process&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0550ae"&gt;+=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;\n ......\n NAT Gateway ID &amp;#39;%s&amp;#39; is now AVAILABLE.\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;start_time&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;date -u +%s&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 &lt;span style="color:#6639ba"&gt;wait&lt;/span&gt; nat-gateway-available &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --nat-gateway-ids &lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;end_time&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;date -u +%s&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;elapsed&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$((&lt;/span&gt;&lt;span style="color:#953800"&gt;$end_time&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#953800"&gt;$start_time&lt;/span&gt;&lt;span style="color:#cf222e"&gt;))&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;printf&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; &lt;/span&gt;&lt;span style="color:#953800"&gt;$FORMATTED_MSG&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#953800"&gt;$elapsed&lt;/span&gt; &lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Add Name tag to NAT Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aws ec2 create-tags &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --resources &lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --tags &lt;span style="color:#0a3069"&gt;&amp;#34;Key=Name,Value=&lt;/span&gt;&lt;span style="color:#953800"&gt;$NAT_GW_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Internet gateway &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; NAMED as &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$NAT_GW_NAME&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Create route to NAT Gateway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;MAIN_ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 describe-route-tables &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --filters &lt;span style="color:#953800"&gt;Name&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;vpc-id,Values&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#953800"&gt;$VPC_ID&lt;/span&gt; &lt;span style="color:#953800"&gt;Name&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;association.main,Values&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#6639ba"&gt;true&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#0a3069"&gt;&amp;#39;RouteTables[*].{RouteTableId:RouteTableId}&amp;#39;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --output text &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Main Route Table ID is &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$MAIN_ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#953800"&gt;RESULT&lt;/span&gt;&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;$(&lt;/span&gt;aws ec2 create-route &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --route-table-id &lt;span style="color:#953800"&gt;$MAIN_ROUTE_TABLE_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --destination-cidr-block 0.0.0.0/0 &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --gateway-id &lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --region &lt;span style="color:#953800"&gt;$AWS_REGION&lt;/span&gt;&lt;span style="color:#cf222e"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34; Route to &amp;#39;0.0.0.0/0&amp;#39; via NAT Gateway with ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$NAT_GW_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; ADDED to&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Route Table ID &amp;#39;&lt;/span&gt;&lt;span style="color:#953800"&gt;$MAIN_ROUTE_TABLE_ID&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;COMPLETED&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>AWS : CLI - 3</title><link>https://harryho.github.io/cloud/aws/aws-02-cli-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-02-cli-3/</guid><description>&lt;h3 id="aws-cli---security-group"&gt;AWS CLI &amp;amp; &amp;amp; Security Group&lt;a class="anchor" href="#aws-cli---security-group"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Sometimes it is so annoying to update the rules of security group one by one, because of the change of your public IP address. Following is a script to make such change easier.&lt;/p&gt;
&lt;p&gt;The script will only update the SSH / RDP protocals of specified the security groups. The SSH and RDP are most popular ones which allow admin to access the remote EC2.&lt;/p&gt;</description></item><item><title>AWS: VPC - 1</title><link>https://harryho.github.io/cloud/aws/aws-03-vpc-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-03-vpc-1/</guid><description>&lt;h2 id="vpc-part-1"&gt;VPC Part 1&lt;a class="anchor" href="#vpc-part-1"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Amazon Virtual Private Cloud (Amazon VPC) enables you to launch AWS resources into a virtual network that you&amp;rsquo;ve defined. This virtual network closely resembles a traditional network that you&amp;rsquo;d operate in your own data center, with the benefits of using the scalable infrastructure of AWS.&lt;/p&gt;
&lt;h3 id="key-concepts"&gt;Key concepts&lt;a class="anchor" href="#key-concepts"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A virtual private cloud (VPC) is a virtual network dedicated to your AWS account.&lt;/li&gt;
&lt;li&gt;A subnet is a range of IP addresses in your VPC.&lt;/li&gt;
&lt;li&gt;A route table contains a set of rules, called routes, that are used to determine where network traffic is directed.&lt;/li&gt;
&lt;li&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. It therefore imposes no availability risks or bandwidth constraints on your network traffic.&lt;/li&gt;
&lt;li&gt;A VPC endpoint enables you to privately connect your VPC to supported AWS services and VPC endpoint services powered by PrivateLink without requiring an internet gateway, NAT device, VPN connection, or AWS Direct Connect connection. Instances in your VPC do not require public IP addresses to communicate with resources in the service. Traffic between your VPC and the other service does not leave the Amazon network.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ip-addressing"&gt;IP addressing&lt;a class="anchor" href="#ip-addressing"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Once the VPC is created, its CIDR block range can NOT be chagned.&lt;/li&gt;
&lt;li&gt;To change CIDR size, you need to create a new VPC&lt;/li&gt;
&lt;li&gt;The different subnets within a VPC can NOT be overlap.&lt;/li&gt;
&lt;li&gt;Can expand VPC by adding secondary IPv4 CIDR blocks&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="default-vpc"&gt;Default VPC&lt;a class="anchor" href="#default-vpc"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AWS creates a default VPC for you in each region. The default VPC will include 1 CIDR block, 1 route table, 1 DHCP options set, 1 Network ACL, 1 Security Group, 1 Internet Gateway, and 3~6 Subnets. The number of subnet depends on the number of Available Zone in the region.&lt;/p&gt;</description></item><item><title>AWS: VPC - 2</title><link>https://harryho.github.io/cloud/aws/aws-03-vpc-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-03-vpc-2/</guid><description>&lt;h2 id="vpc-part-2"&gt;VPC Part 2&lt;a class="anchor" href="#vpc-part-2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;VPC has an implicit router (implied router), and you use route tables to control where network traffic is directed.&lt;/p&gt;
&lt;h3 id="route-table"&gt;Route table&lt;a class="anchor" href="#route-table"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Have up to 200 route tables per VPC&lt;/li&gt;
&lt;li&gt;Have up to 50 route entries per route table&lt;/li&gt;
&lt;li&gt;Each subnet must be associated with only one route table&lt;/li&gt;
&lt;li&gt;The subent (when created) will be associated with main (default) VPC route table&lt;/li&gt;
&lt;li&gt;Can change the subnet association to another route table&lt;/li&gt;
&lt;li&gt;Can NOT delete the main route table&lt;/li&gt;
&lt;li&gt;Every route table in a VPC comes with a default rule that allows all VPC subnets to comminunicate with one another. This rule can NOT be modified or deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="security-group"&gt;Security Group&lt;a class="anchor" href="#security-group"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;It is a virtual firewall&lt;/li&gt;
&lt;li&gt;It controls traffic at the EC2ss level&lt;/li&gt;
&lt;li&gt;Up to 5 security groups per EC2&lt;/li&gt;
&lt;li&gt;Stateful, return traffic, of allowed inbound traffic, is allowed, even if there are no rules to allow it.&lt;/li&gt;
&lt;li&gt;Can only have permit rules, can NOT have deny rules&lt;/li&gt;
&lt;li&gt;Implicit deny rule at the end&lt;/li&gt;
&lt;li&gt;Security group is associated wth EC2&amp;rsquo;s network interface&lt;/li&gt;
&lt;li&gt;Any change on security group takes effect immediately&lt;/li&gt;
&lt;li&gt;Default security groupd can not be deleted&lt;/li&gt;
&lt;li&gt;It is VPC resource, hence, different EC2 in differenet AZs within the same VPC, can have the same security group applied to them.&lt;/li&gt;
&lt;li&gt;It can NOT block a certain range of IP addresses from Internet from gettting to EC2 fleets&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="default-vs-customized-group"&gt;Default vs Customized Group&lt;a class="anchor" href="#default-vs-customized-group"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The default security group has inbound and outbound rules when created. The inboud rule allows all traffics in from the same security group. The outbound rule allows all traffics to any destination. The customized security group has outbound rule only by default.&lt;/p&gt;</description></item><item><title>AWS: VPC - 3</title><link>https://harryho.github.io/cloud/aws/aws-03-vpc-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-03-vpc-3/</guid><description>&lt;h2 id="vpc-part-3"&gt;VPC Part 3&lt;a class="anchor" href="#vpc-part-3"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="endpoint"&gt;Endpoint&lt;a class="anchor" href="#endpoint"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A VPC endpoint enables you to privately connect your VPC to supported AWS services and VPC endpoint services powered by AWS PrivateLink without requiring an internet gateway, NAT device, VPN connection, or AWS Direct Connect connection.&lt;/p&gt;
&lt;p&gt;Endpoints are virtual devices. They are horizontally scaled, redundant, and highly available VPC components. They allow communication between instances in your VPC and services without imposing availability risks or bandwidth constraints on your network traffic.&lt;/p&gt;</description></item><item><title>AWS: VPC - 4</title><link>https://harryho.github.io/cloud/aws/aws-03-vpc-4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-03-vpc-4/</guid><description>&lt;h2 id="vpc-part-4"&gt;VPC Part 4&lt;a class="anchor" href="#vpc-part-4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="simples-demo"&gt;Simples demo&lt;a class="anchor" href="#simples-demo"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Diagram of customized VPC - MyDemoVPC with Internet Gatway and VPN connect&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="mermaid" &gt;
graph LR
 InternetGW(Internet Gateway)
 VirtualGW(Virtual Gateway)
 INTER(Internet - Public)
 InternetGW --- INTER
 VirtualGW --- SERVER
 subgraph MyDemoVPC
 EC2_A(EC2 Instannce A)
 EC2_B(EC2 Instannce B)
 EC2_E(EC2 Instannce E)
 EC2_F(EC2 Instannce F)
 EC2_C[(Database Master)]
 EC2_D[(Database Slave)]
 MainRouteTable(10.0.0.0/16)
 PrvSubnet(10.0.2.0/24)
 PubSubnet(10.0.1.0/24)
 VPNSubnet(10.0.3.0/24)
 MainRouteTable --- InternetGW
 MainRouteTable --- NetworkACL
 NetworkACL --- PubSecGrp
 NetworkACL --- PrivSecGrp
 PrivSecGrp --- PrvSubnet
 VPNSubnet --- VirtualGW
 VPNSubnet --- MainRouteTable
 PubSecGrp --- PubSubnet
 subgraph Implied_Router
 MainRouteTable(10.0.0.0/16)
 end 
 subgraph Private_Subnet
 PrvSubnet
 EC2_C
 EC2_D
 end
 subgraph Public_Subnet
 PubSubnet
 EC2_A
 EC2_B
 end
 subgraph VPN_Subnet
 VPNSubnet
 EC2_E
 EC2_F
 end
 end
 InternetGW
 subgraph Internet
 INTER
 end
 subgraph OnPremise
 SERVER
 end


&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Customized Route tables of Subnet Public_Subnet&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Destination&lt;/th&gt;
					&lt;th&gt;Target&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10.0.1.0/16&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2002:0a00:0100:0:0:0:0:0/56&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;0.0.0.0/0&lt;/td&gt;
					&lt;td&gt;InternetGW&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;::0/0&lt;/td&gt;
					&lt;td&gt;InternetGW&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Main Route tables of Subnet Private_Subnet&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Destination&lt;/th&gt;
					&lt;th&gt;Target&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10.0.1.0/16&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2002:0a00:0100:0:0:0:0:0/56&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Route table of Subnet VPN_Subnet&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Destination&lt;/th&gt;
					&lt;th&gt;Target&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10.0.1.0/16&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2002:0a00:0100:0:0:0:0:0/56&lt;/td&gt;
					&lt;td&gt;local&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;0.0.0.0/0&lt;/td&gt;
					&lt;td&gt;VirtualGW&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>AWS: VPC - 5</title><link>https://harryho.github.io/cloud/aws/aws-03-vpc-5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-03-vpc-5/</guid><description>&lt;h2 id="vpc-part-5"&gt;VPC Part 5&lt;a class="anchor" href="#vpc-part-5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="direct-connect"&gt;Direct Connect&lt;a class="anchor" href="#direct-connect"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AWS Direct Connect is a cloud service solution that makes it easy to establish a dedicated network connection from your premises to AWS. Using AWS Direct Connect, you can establish private connectivity between AWS and your datacenter, office, or colocation environment, which in many cases can reduce your network costs, increase bandwidth throughput, and provide a more consistent network experience than Internet-based connections.&lt;/p&gt;
&lt;p&gt;Using industry standard 802.1q VLANs, this dedicated connection can be partitioned into multiple virtual interfaces. This allows you to use the same connection to access public resources such as objects stored in Amazon S3 using public IP address space, and private resources such as Amazon EC2 instances running within an Amazon Virtual Private Cloud (VPC) using private IP space, while maintaining network separation between the public and private environments. Virtual interfaces can be reconfigured at any time to meet your changing needs.&lt;/p&gt;</description></item><item><title>AWS: S3 - 1</title><link>https://harryho.github.io/cloud/aws/aws-04-s3-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-04-s3-1/</guid><description>&lt;h2 id="s3-part-1"&gt;S3 Part 1&lt;a class="anchor" href="#s3-part-1"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.&lt;/p&gt;
&lt;h3 id="storage-feature"&gt;Storage feature&lt;a class="anchor" href="#storage-feature"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Amazon S3 has various features you can use to organize and manage your data in ways that support specific use cases, enable cost efficiencies, enforce security, and meet compliance requirements. Data is stored as objects within resources called “buckets”, and a single object can be up to 5 terabytes in size. Amazon S3 offers a range of storage classes designed for different use cases.&lt;/p&gt;</description></item><item><title>AWS: S3 - 2</title><link>https://harryho.github.io/cloud/aws/aws-04-s3-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-04-s3-2/</guid><description>&lt;h2 id="s3-part-2"&gt;S3 Part 2&lt;a class="anchor" href="#s3-part-2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="access"&gt;Access&lt;a class="anchor" href="#access"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="access-status"&gt;Access status&lt;a class="anchor" href="#access-status"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The list buckets view shows whether your bucket is publicly accessible. Amazon S3 labels the permissions for a bucket as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Public – Everyone has access to one or more of the following: List objects, Write objects, Read and write permissions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Objects can be public – The bucket is not public, but anyone with the appropriate permissions can grant public access to objects.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Buckets and objects not public – The bucket and objects do not have any public access.&lt;/p&gt;</description></item><item><title>AWS: S3 - 3</title><link>https://harryho.github.io/cloud/aws/aws-04-s3-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-04-s3-3/</guid><description>&lt;h2 id="use-case"&gt;Use Case&lt;a class="anchor" href="#use-case"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="problem"&gt;Problem&lt;a class="anchor" href="#problem"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Block all traffic to my Amazon Simple Storage Service (Amazon S3) bucket unless the traffic is from specific Amazon Virtual Private Cloud (VPC) endpoints or certain external IP addresses.&lt;/p&gt;
&lt;h3 id="resolution"&gt;Resolution&lt;a class="anchor" href="#resolution"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Use a bucket policy to specify which VPC endpoints or external IP addresses can access the S3 bucket.&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Note: An external IP address is a public IP address that can be from within a VPC or outside of a VPC. For example, an external IP address can be an Amazon Elastic Compute Cloud (Amazon EC2) instance&amp;rsquo;s Elastic IP address, or the IP address of a VPC&amp;rsquo;s NAT gateway or proxy server.&lt;/p&gt;</description></item><item><title>AWS: SQS,SNS,SES - 1</title><link>https://harryho.github.io/cloud/aws/aws-05-ses-sqs-sns-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-05-ses-sqs-sns-1/</guid><description>&lt;h2 id="sqs"&gt;SQS&lt;a class="anchor" href="#sqs"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Amazon Simple Queue Service (SQS) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications. SQS eliminates the complexity and overhead associated with managing and operating message oriented middleware, and empowers developers to focus on differentiating work. Using SQS, you can send, store, and receive messages between software components at any volume, without losing messages or requiring other services to be available. Get started with SQS in minutes using the AWS console, Command Line Interface or SDK of your choice, and three simple commands.&lt;/p&gt;</description></item><item><title>AWS: SQS,SNS,SES - 2</title><link>https://harryho.github.io/cloud/aws/aws-05-ses-sqs-sns-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-05-ses-sqs-sns-2/</guid><description>&lt;h2 id="use-case"&gt;Use Case&lt;a class="anchor" href="#use-case"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="overview"&gt;Overview&lt;a class="anchor" href="#overview"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;pre class="mermaid" &gt;
graph LR
 Sender_Email(&amp;#34;test@test.com&amp;#34;)
 Email_Failed
 Email_Delivered
 SNS_Subscriptions --&amp;gt; Email_Failed
 SNS_Subscriptions --&amp;gt; Email_Delivered
 Bounce_Notification --&amp;gt; Email_Failed
 Complaint_Notification --&amp;gt; Email_Failed
 Delivery_Notification --&amp;gt; Email_Delivered
 subgraph SQS 
 subgraph Email_Status_Queue
 SNS_Subscriptions
 end
 end 
 subgraph SNS
 subgraph Topics
 Email_Failed
 Email_Delivered
 end
 end
 subgraph SES
 Sender_Email
 subgraph Notifications
 Bounce_Notification 
 Complaint_Notification 
 Delivery_Notification 
 end
 end

&lt;/pre&gt;&lt;script src="https://harryho.github.io/mermaid.min.js" onload="mermaid.initialize({&amp;#34;flowchart&amp;#34;:{&amp;#34;useMaxWidth&amp;#34;:true},&amp;#34;theme&amp;#34;:&amp;#34;default&amp;#34;})"&gt;&lt;/script&gt;
&lt;h3 id="sns-setup"&gt;SNS Setup&lt;a class="anchor" href="#sns-setup"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Create a topic for failed email, e.g. bounce or spam complaint&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is named &lt;strong&gt;Email_Failed&lt;/strong&gt; in the diagram above&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a topic for delivered email&lt;/p&gt;</description></item><item><title>AWS: EKS - 1</title><link>https://harryho.github.io/cloud/aws/aws-11-eks-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-11-eks-1/</guid><description>&lt;h2 id="eks---part-1"&gt;EKS - Part 1&lt;a class="anchor" href="#eks---part-1"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that makes it easy for you to run Kubernetes on AWS without needing to stand up or maintain your own Kubernetes control plane. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EKS runs Kubernetes control plane instances across multiple Availability Zones to ensure high availability.&lt;/li&gt;
&lt;li&gt;EKS automatically detects and replaces unhealthy control plane instances.&lt;/li&gt;
&lt;li&gt;EKS provides automated version upgrades and patching for them.&lt;/li&gt;
&lt;li&gt;EKS is also integrated with many AWS services to provide scalability and security.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="eksctl"&gt;eksctl&lt;a class="anchor" href="#eksctl"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install the Latest AWS CLI&lt;/p&gt;</description></item><item><title>AWS: EKS - 2</title><link>https://harryho.github.io/cloud/aws/aws-11-eks-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-11-eks-2/</guid><description>&lt;h2 id="eks---part-2"&gt;EKS - Part 2&lt;a class="anchor" href="#eks---part-2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The update process consists of Amazon EKS launching new API server nodes with the updated Kubernetes version to replace the existing ones. Amazon EKS performs standard infrastructure and readiness health checks for network traffic on these new nodes to verify that they are working as expected. If any of these checks fail, Amazon EKS reverts the infrastructure deployment, and your cluster remains on the prior Kubernetes version. Running applications are not affected, and your cluster is never left in a non-deterministic or unrecoverable state. Amazon EKS regularly backs up all managed clusters, and mechanisms exist to recover clusters if necessary. We are constantly evaluating and improving our Kubernetes infrastructure management processes.&lt;/p&gt;</description></item><item><title>AWS: EKS - 3</title><link>https://harryho.github.io/cloud/aws/aws-11-eks-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-11-eks-3/</guid><description>&lt;h2 id="eks---part-3"&gt;EKS - Part 3&lt;a class="anchor" href="#eks---part-3"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="cluster-autoscaler"&gt;Cluster Autoscaler&lt;a class="anchor" href="#cluster-autoscaler"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Kubernetes Cluster Autoscaler automatically adjusts the number of nodes in your cluster when pods fail to launch due to lack of resources or when nodes in the cluster are underutilized and their pods can be rescheduled onto other nodes in the cluster.&lt;/p&gt;
&lt;h3 id="strategy-of-auto-----scaling"&gt;Strategy of auto scaling&lt;a class="anchor" href="#strategy-of-auto-----scaling"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stateful application&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are running a stateful application across multiple Availability Zones that is backed by Amazon EBS volumes and using the Kubernetes Cluster Autoscaler, you should configure multiple node groups, each scoped to a single Availability Zone.&lt;/p&gt;</description></item><item><title>AWS: EKS - 4</title><link>https://harryho.github.io/cloud/aws/aws-11-eks-4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-11-eks-4/</guid><description>&lt;h2 id="eks---part-4"&gt;EKS - Part 4&lt;a class="anchor" href="#eks---part-4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="vpc-tagging"&gt;VPC Tagging&lt;a class="anchor" href="#vpc-tagging"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Key: The &lt;cluster-name&gt; value matches your Amazon EKS cluster&amp;rsquo;s name.&lt;/li&gt;
&lt;li&gt;Value: The shared value allows more than one cluster to use this VPC.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Key&lt;/th&gt;
					&lt;th&gt;Value&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;kubernetes.io/cluster/&amp;lt;cluster-name&amp;gt;&lt;/td&gt;
					&lt;td&gt;shared&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="load-balancing"&gt;Load Balancing&lt;a class="anchor" href="#load-balancing"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Amazon EKS supports the Network Load Balancer and the Classic Load Balancer for pods running on Amazon EC2 instance worker nodes through the Kubernetes service of type LoadBalancer. Classic Load Balancers and Network Load Balancers are not supported for pods running on AWS Fargate (Fargate).&lt;/p&gt;</description></item><item><title>AWS: EKS - 5</title><link>https://harryho.github.io/cloud/aws/aws-11-eks-5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-11-eks-5/</guid><description>&lt;h2 id="eks---part-5"&gt;EKS - Part 5&lt;a class="anchor" href="#eks---part-5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="metrics-server"&gt;Metrics Server&lt;a class="anchor" href="#metrics-server"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Kubernetes metrics server is an aggregator of resource usage data in your cluster, and it is not deployed by default in Amazon EKS clusters. The metrics server is commonly used by other Kubernetes add ons, such as the Horizontal Pod Autoscaler or the Kubernetes Dashboard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Deploy the metrics server&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that the metrics-server deployment&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; kubectl get deployment metrics-server -n kube-system
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="prometheus"&gt;Prometheus&lt;a class="anchor" href="#prometheus"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Kubernetes API server exposes a number of metrics that are useful for monitoring and analysis. These metrics are exposed internally through a metrics endpoint that refers to the /metrics HTTP API. Like other endpoints, this endpoint is exposed on the Amazon EKS control plane.&lt;/p&gt;</description></item><item><title>AWS: RDS - 1</title><link>https://harryho.github.io/cloud/aws/aws-21-rds-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/cloud/aws/aws-21-rds-1/</guid><description>&lt;h2 id="rds"&gt;RDS&lt;a class="anchor" href="#rds"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Amazon Relational Database Service (Amazon RDS) makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while automating time-consuming administration tasks such as hardware provisioning, database setup, patching and backups.&lt;/p&gt;
&lt;h3 id="backup--restore-sql-server"&gt;Backup &amp;amp; Restore SQL Server&lt;a class="anchor" href="#backup--restore-sql-server"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="backup-database-to-s3"&gt;Backup database to S3&lt;a class="anchor" href="#backup-database-to-s3"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Assumption&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DB name: sample_db&lt;/li&gt;
&lt;li&gt;S3 bucket name: sql-server-backup&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Backup with built-in stored proc&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; exec msdb.dbo.rds_backup_database 
 @source_db_name='sample_db', 
 @s3_arn_to_backup_to='arn:aws:s3:::sql-server-backup/sample_db_20191221.bak', 
 @overwrite_S3_backup_file=1;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Track status&lt;/p&gt;</description></item></channel></rss>