<?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: Oyoh Edmond</title>
    <description>The latest articles on Forem by Oyoh Edmond (@oyohedmond).</description>
    <link>https://forem.com/oyohedmond</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%2F177965%2F72564567-ad71-4fd8-8be9-bb3352b4d049.jpeg</url>
      <title>Forem: Oyoh Edmond</title>
      <link>https://forem.com/oyohedmond</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/oyohedmond"/>
    <language>en</language>
    <item>
      <title>How I Spent a Day Trying to Recover a Crashed OpenStack Environment — And What I Learned</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Thu, 02 Apr 2026 15:39:35 +0000</pubDate>
      <link>https://forem.com/oyohedmond/how-i-spent-a-day-trying-to-recover-a-crashed-openstack-environment-and-what-i-learned-4dpl</link>
      <guid>https://forem.com/oyohedmond/how-i-spent-a-day-trying-to-recover-a-crashed-openstack-environment-and-what-i-learned-4dpl</guid>
      <description>&lt;p&gt;&lt;em&gt;A real-world incident report for engineers dealing with filesystem corruption on production Linux servers&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;It started with a simple complaint: our company's OpenStack Horizon portal was unreachable. The browser returned &lt;code&gt;ERR_CONNECTION_TIMED_OUT&lt;/code&gt;. No warning, no gradual degradation — just gone.&lt;/p&gt;

&lt;p&gt;We had two physical HPE ProLiant DL380 Gen10 servers running the environment, accessible only via HP iLO 5 remote console. No physical access. No one near the data centre. Just me, a browser, and an iLO HTML5 console.&lt;/p&gt;

&lt;p&gt;This is the story of what happened, what we tried, what failed, and what every engineer should know before they find themselves in the same situation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Environment
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Controller Node&lt;/strong&gt;: HPE ProLiant DL380 Gen10 (12-core)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compute Node&lt;/strong&gt;: HPE ProLiant DL380 Gen10 (10-core)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS&lt;/strong&gt;: Ubuntu 22.04 LTS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: LVM on top of hardware RAID (HPE Smart Array P408i-a)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access&lt;/strong&gt;: HP iLO 5 remote console (HTML5)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPN&lt;/strong&gt;: FortiClient VPN required to reach internal network&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 1 — Diagnosing the Problem
&lt;/h2&gt;

&lt;p&gt;The first thing I noticed was that pinging the servers returned &lt;code&gt;Destination host unreachable&lt;/code&gt; even on VPN. This ruled out a simple service crash — something was fundamentally wrong at the OS level.&lt;/p&gt;

&lt;p&gt;Opening the iLO console for the controller node revealed the server was stuck in a &lt;strong&gt;BusyBox initramfs emergency shell&lt;/strong&gt; with the following critical errors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY
Failure: File system check of the root filesystem failed
The root filesystem requires a manual fsck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lesson #1&lt;/strong&gt;: Always check iLO/IPMI console first. The OS may be completely down while the management interface is still accessible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 — The Filesystem Corruption
&lt;/h2&gt;

&lt;p&gt;The root filesystem was on an LVM logical volume. The initramfs had tried to run an automatic fsck and failed. The errors pointed to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Superblock corruption&lt;/strong&gt; — the filesystem size recorded in the superblock was larger than the actual LVM volume&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Journal corruption&lt;/strong&gt; — e2fsck could not set superblock flags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thousands of corrupted inodes&lt;/strong&gt; — invalid flags, bad extended attributes, wrong inode sizes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The size mismatch error was particularly telling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The filesystem size is 288358400 blocks
The physical size of the device is 285474816 blocks
Either the superblock or the partition table is likely to be corrupt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lesson #2&lt;/strong&gt;: A filesystem size larger than the physical device usually means the LVM volume was shrunk without first shrinking the filesystem, or the superblock was corrupted during an unclean shutdown.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 — Recovery Attempts in initramfs
&lt;/h2&gt;

&lt;p&gt;The initramfs environment is extremely limited. Here is what we tried and the results:&lt;/p&gt;

&lt;h3&gt;
  
  
  Activating LVM Volumes
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;p&gt;✅ This worked and activated all volume groups.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running e2fsck with Backup Superblock
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;e2fsck &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-b&lt;/span&gt; 32768 /dev/mapper/&amp;lt;your-lv-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⚠️ This started working but kept getting killed by the OOM (Out of Memory) killer because initramfs has very limited RAM available for processes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Extending the LVM Volume
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lvm lvextend &lt;span class="nt"&gt;-l&lt;/span&gt; +100%FREE /dev/&amp;lt;vg-name&amp;gt;/&amp;lt;lv-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ This successfully extended the volume to match what the filesystem expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rewriting the Superblock
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mke2fs &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 /dev/mapper/&amp;lt;your-lv-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ The superblock was rewritten. e2fsck then started making real progress fixing inodes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Swap to Help with OOM
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/zero &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/swapfile &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1048576 &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4096
mkswap /swapfile
&lt;span class="c"&gt;# swapon /swapfile — NOT AVAILABLE in initramfs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ &lt;code&gt;swapon&lt;/code&gt; is not available in initramfs. This is a critical limitation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson #3&lt;/strong&gt;: The initramfs environment is missing many essential tools including &lt;code&gt;swapon&lt;/code&gt;, &lt;code&gt;resize2fs&lt;/code&gt;, &lt;code&gt;tune2fs&lt;/code&gt;, &lt;code&gt;debugfs&lt;/code&gt;, and &lt;code&gt;lvextend&lt;/code&gt;. Plan for this limitation before you need it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 — The OOM Problem
&lt;/h2&gt;

&lt;p&gt;Every time e2fsck got deep into repairing the large volume, the kernel OOM killer terminated it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Out of memory: Killed process (e2fsck)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server had significant RAM but initramfs was only making a small portion available for user processes. Without swap, e2fsck couldn't complete the repair.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson #4&lt;/strong&gt;: For large filesystems (500GB+), e2fsck requires significant RAM. Always ensure swap is available before running fsck on large volumes. If you're in initramfs without swap, you need a different approach.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5 — Attempting to Boot from Live ISO
&lt;/h2&gt;

&lt;p&gt;We tried to boot Ubuntu 20.04 Live Server from an ISO mounted via iLO Virtual Media. This would have given us a full Ubuntu environment with all tools.&lt;/p&gt;

&lt;p&gt;The challenges we encountered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iLO Virtual Media URL-based ISO streaming was too slow&lt;/li&gt;
&lt;li&gt;Local ISO file mounting via iLO HTML5 console worked better&lt;/li&gt;
&lt;li&gt;The ISO was detected as a Virtual CD-ROM by the kernel&lt;/li&gt;
&lt;li&gt;However, the server's UEFI boot order did not include the virtual CD-ROM&lt;/li&gt;
&lt;li&gt;The virtual CD-ROM did not appear in the UEFI one-time boot menu&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lesson #5&lt;/strong&gt;: Test your iLO Virtual Media boot process BEFORE you need it in an emergency. Know whether your server's UEFI will boot from iLO virtual media and in what order.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6 — UEFI Shell to the Rescue (Partially)
&lt;/h2&gt;

&lt;p&gt;We discovered the HPE Embedded UEFI Shell under:&lt;br&gt;
&lt;strong&gt;System Utilities → Embedded Applications → Embedded UEFI Shell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From there we could launch the GRUB bootloader directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;fs0:
cd EFI\ubuntu
shimx64.efi
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gave us access to the GRUB menu and boot parameter editing. We modified the boot parameters to skip fsck:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;linux /vmlinuz-&amp;lt;version&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;-generic&lt;/span&gt; &lt;span class="nv"&gt;root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/mapper/&amp;lt;lv-name&amp;gt; ro fsck.mode&lt;span class="o"&gt;=&lt;/span&gt;skip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unfortunately the filesystem was too corrupted to mount even with fsck skipped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson #6&lt;/strong&gt;: The HPE Embedded UEFI Shell is a powerful recovery tool. Learn how to use it. It can launch bootloaders directly from the EFI partition without needing a working boot order.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7 — The Final Verdict
&lt;/h2&gt;

&lt;p&gt;After extensive repair attempts, the final error was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EXT4-fs error: inode #2: special inode unallocated
get root inode failed
mount failed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Inode #2 is the root directory inode&lt;/strong&gt; — the most critical inode in any ext4 filesystem. When this is destroyed, the filesystem cannot be mounted under any circumstances without specialist data recovery tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson #7&lt;/strong&gt;: If &lt;code&gt;inode #2&lt;/code&gt; is corrupted, you need either a backup restore or professional data recovery. No amount of e2fsck will fix a destroyed root inode.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Should Have Been Done Differently
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before the Incident
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Regular backups&lt;/strong&gt; — snapshots of the LVM volume or VM-level backups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt; — disk health monitoring (smartctl), filesystem error monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt; — record all credentials, architecture diagrams, and recovery procedures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test recovery&lt;/strong&gt; — periodically test that backups can actually be restored&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swap space&lt;/strong&gt; — ensure servers have adequate swap configured&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  During the Incident
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Boot from USB first&lt;/strong&gt; — don't spend hours in initramfs; immediately boot from a live USB with full tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create swap immediately&lt;/strong&gt; — before running e2fsck on large volumes, ensure swap is available&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a higher-level backup superblock&lt;/strong&gt; — if 32768 doesn't work, try 98304 or 163840&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document every command&lt;/strong&gt; — keep a log of everything you try&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tools You Need Available
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A bootable Ubuntu Live USB drive (or ISO ready for iLO virtual media)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;resize2fs&lt;/code&gt;, &lt;code&gt;tune2fs&lt;/code&gt;, &lt;code&gt;debugfs&lt;/code&gt; — not available in initramfs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;swapon&lt;/code&gt; — not available in initramfs&lt;/li&gt;
&lt;li&gt;Adequate RAM (at least 8GB free) for e2fsck on large volumes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Commands Reference
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Activate LVM volumes from initramfs&lt;/span&gt;
vgchange &lt;span class="nt"&gt;-ay&lt;/span&gt;

&lt;span class="c"&gt;# List mapper devices&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; /dev/mapper/

&lt;span class="c"&gt;# Find backup superblocks&lt;/span&gt;
dumpe2fs /dev/mapper/&amp;lt;device&amp;gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; superblock

&lt;span class="c"&gt;# Run fsck with backup superblock&lt;/span&gt;
e2fsck &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nt"&gt;-b&lt;/span&gt; 32768 /dev/mapper/&amp;lt;device&amp;gt;

&lt;span class="c"&gt;# Extend LVM volume (using lvm wrapper in initramfs)&lt;/span&gt;
lvm lvextend &lt;span class="nt"&gt;-l&lt;/span&gt; +100%FREE /dev/&amp;lt;vg-name&amp;gt;/&amp;lt;lv-name&amp;gt;

&lt;span class="c"&gt;# Rewrite superblock (does NOT destroy data)&lt;/span&gt;
mke2fs &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 /dev/mapper/&amp;lt;device&amp;gt;

&lt;span class="c"&gt;# Create swap file&lt;/span&gt;
&lt;span class="nb"&gt;dd &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/zero &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/swapfile &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1048576 &lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4096
mkswap /swapfile
swapon /swapfile  &lt;span class="c"&gt;# (not available in initramfs)&lt;/span&gt;

&lt;span class="c"&gt;# Mount filesystem read-only&lt;/span&gt;
mount &lt;span class="nt"&gt;-o&lt;/span&gt; ro /dev/mapper/&amp;lt;device&amp;gt; /mnt

&lt;span class="c"&gt;# Chroot into recovered system&lt;/span&gt;
&lt;span class="nb"&gt;chroot&lt;/span&gt; /mnt /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;Filesystem corruption at the inode level is one of the most serious failures a Linux system administrator can face. The key takeaways from this incident are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Backups are not optional&lt;/strong&gt; — this entire incident would have been resolved in minutes with a good backup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Know your recovery tools&lt;/strong&gt; — understand the limitations of initramfs before you need it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iLO/IPMI is your lifeline&lt;/strong&gt; — invest time in learning your server's management interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Large filesystems need special care&lt;/strong&gt; — e2fsck on a 1TB+ volume needs RAM, swap, and time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document everything&lt;/strong&gt; — credentials, architecture, and recovery procedures must be documented and accessible&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you find yourself in a similar situation, I hope this article saves you some of the hours I spent learning these lessons the hard way.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If this article helped you, please clap and share. If you have questions or have been through a similar experience, leave a comment below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tags: #Linux #OpenStack #SysAdmin #DevOps #DisasterRecovery #Ubuntu #LVM #Filesystem #HPE #iLO&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>openstack</category>
      <category>sysadmin</category>
      <category>devops</category>
    </item>
    <item>
      <title>CKA</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Tue, 15 Apr 2025 19:17:03 +0000</pubDate>
      <link>https://forem.com/oyohedmond/cka-m4</link>
      <guid>https://forem.com/oyohedmond/cka-m4</guid>
      <description></description>
      <category>certification</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Cloud Resume Challenge- Week 1</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Mon, 08 Jan 2024 14:53:56 +0000</pubDate>
      <link>https://forem.com/oyohedmond/cloud-resume-challenge-week-1-260e</link>
      <guid>https://forem.com/oyohedmond/cloud-resume-challenge-week-1-260e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this piece, I'll delve into the AWS Cloud Resume Challenge, offering firsthand insights from my experience. In the ever-evolving tech scene, effectively highlighting your skills has become crucial. The challenge(&lt;a href="https://cloudresumechallenge.dev/docs/the-challenge/aws/"&gt;Cloud resume challenge&lt;/a&gt;) serves as a fantastic avenue to exhibit your proficiency in cloud technologies and craft an impactful online resume. Conceived by Forrest Brazeal, this initiative presents a distinctive chance to showcase your expertise. Come along as I lead you through the initial phases of this engaging project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--buZfdAH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lo5n1y2fbpt21odq3y0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--buZfdAH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lo5n1y2fbpt21odq3y0f.png" alt="Architecture" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting the Foundation with HTML and CSS:
&lt;/h2&gt;

&lt;p&gt;During this stage of the project, I utilized a pre-made template(&lt;a href="https://html5up.net/"&gt;html5up&lt;/a&gt;) and made adjustments to both the HTML and CSS elements to customize it according to my preferences. To complete this task, familiarity with HTML and CSS is essential since a significant portion of the code is already in place. Your main responsibility is to edit the HTML files with your personal information. I then uploaded the modified code to (&lt;a href="https://github.com/Oyoh-Edmond/Cloud-Resume"&gt;my GitHub repository&lt;/a&gt;) and leveraged GitHub Pages to serve and host the static content.&lt;br&gt;
&lt;a href="https://oyoh-edmond.github.io/Cloud-Resume/"&gt;My Website&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload Resume Folder to Amazon S3:
&lt;/h2&gt;

&lt;p&gt;To proceed with this phase, I created an AWS account, set up an IAM group with a policy specifically tailored for this project, generated an IAM user, and then added the user to the previously configured IAM group. This series of steps enabled me to access the management console, where I initiated the creation of a bucket and uploaded the folder containing my HTML and CSS files to the S3 bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up CloudFront, Amazon Route 53, and Certificate Manager:
&lt;/h2&gt;

&lt;p&gt;I enhanced the performance of my resume website by utilizing CloudFront, with S3 as the origin, and strengthened security by obtaining an SSL certificate through AWS Certificate Manager to ensure the website's safety. Furthermore, I configured my custom domain using Amazon Route 53 to improve the overall presentation of my resume website.&lt;/p&gt;

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

&lt;p&gt;I acquired valuable insights throughout the completion of the task in the first week. Despite encountering certain challenges, I managed to overcome them by engaging in troubleshooting and conducting comprehensive research. Consequently, I successfully addressed and resolved the issues that arose.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>github</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How Install and Configure the AWS CLI on Windows Terminal</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Wed, 15 Nov 2023 15:50:33 +0000</pubDate>
      <link>https://forem.com/oyohedmond/how-install-and-configure-the-aws-cli-on-windows-terminal-1fpp</link>
      <guid>https://forem.com/oyohedmond/how-install-and-configure-the-aws-cli-on-windows-terminal-1fpp</guid>
      <description>&lt;h3&gt;
  
  
  Lab overview
&lt;/h3&gt;

&lt;p&gt;The AWS Command Line Interface (AWS CLI) is a command line tool that provides an interface for interacting with products and services from Amazon Web Services (AWS).&lt;/p&gt;

&lt;p&gt;You can install the AWS CLI on your local machine or a virtual machine such as an Amazon Elastic Compute Cloud (Amazon EC2) instance.&lt;/p&gt;

&lt;p&gt;In this activity, you install and configure the AWS CLI on a Red Hat Linux instance because this instance type does not have the AWS CLI pre-installed. Some instance types, such as Amazon Linux, do come pre-installed with the AWS CLI. &lt;/p&gt;

&lt;p&gt;During this activity, you establish a Secure Shell (SSH) connection to the instance. You configure the installation with an access key that can connect to an AWS account. Finally, you practice using the AWS CLI to interact with AWS Identity and Access Management (IAM).&lt;/p&gt;

&lt;p&gt;When you finish the activity, it will reflect the following diagram:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kmw961TX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hylc9f00k8ylb1cpx597.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kmw961TX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hylc9f00k8ylb1cpx597.png" alt="Image description" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the preceding diagram, you can access the AWS Cloud through an SSH connection. Within the AWS Cloud, a virtual private cloud (VPC) with a Red Hat EC2 instance is configured with the AWS CLI. IAM is configured, and you use the AWS CLI to interact with IAM.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Objectives
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install and configure the AWS CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect the AWS CLI to an AWS account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access IAM by using the AWS CLI.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Accessing the AWS Management Console
&lt;/h2&gt;

&lt;p&gt;Based on the task given, a lab was provided.&lt;/p&gt;

&lt;h1&gt;
  
  
  Connect to the Red Hat EC2 instance by using SSH
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;In this task, an EC2 instance was already in existence.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As a Windows user, &lt;strong&gt;PuTTy&lt;/strong&gt; was recommended for usage.&lt;br&gt;&lt;br&gt;
&lt;em&gt;PuTTY is an SSH and telnet client, developed originally by Simon Tatham for the Windows platform.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Download PuTTY to use an SSH utility to connect to the EC2 instance. If you do not have PuTTY installed on your computer, &lt;a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html"&gt;download it&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A private key &lt;strong&gt;(.ppk format)&lt;/strong&gt; was provided based on the already existing EC2 instance created.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pAkxexB1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66vri01fl0rhdzbskn7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pAkxexB1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66vri01fl0rhdzbskn7q.png" alt="Image description" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Public IP was provided based on the already existing EC2 instance created.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vnFopN9c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j8xjdcuiap1j216piu5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vnFopN9c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j8xjdcuiap1j216piu5v.png" alt="Image description" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;After downloading &lt;strong&gt;PuTTY&lt;/strong&gt;, Open &lt;strong&gt;PuTTy.exe&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the PuTTY timeout to keep the PuTTY session open for a longer period of time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose Connection.&lt;/li&gt;
&lt;li&gt;For Seconds between keepalives, enter 30.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wiOy4VL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f18cf92jk2jqk9jfg2mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wiOy4VL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f18cf92jk2jqk9jfg2mg.png" alt="Image description" width="586" height="538"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configure your PuTTY session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose Session.&lt;/li&gt;
&lt;li&gt;For the Host Name (or IP address), enter the PublicIP address that you copied from the previous steps.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r-5X1z8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/clbbia0hoo1acp7nuw2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r-5X1z8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/clbbia0hoo1acp7nuw2f.png" alt="Image description" width="599" height="536"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;In PuTTY in the Connection list, choose SSH to expand it.&lt;/li&gt;
&lt;li&gt;Choose Auth, then choose Credentials&lt;/li&gt;
&lt;li&gt;Choose Browse.&lt;/li&gt;
&lt;li&gt;Browse and select the &lt;strong&gt;Private key&lt;/strong&gt; file that you downloaded.&lt;/li&gt;
&lt;li&gt;To choose the file, choose Open.&lt;/li&gt;
&lt;li&gt;Choose Open again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ougLjyJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m7dd6x8jz8mvuhz4lqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ougLjyJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m7dd6x8jz8mvuhz4lqv.png" alt="Image description" width="594" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Finally, click Open.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When prompted with login as, enter ec2-user and press Enter.&lt;br&gt;
&lt;em&gt;This step connects you to the EC2 instance.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ougLjyJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m7dd6x8jz8mvuhz4lqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ougLjyJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4m7dd6x8jz8mvuhz4lqv.png" alt="Image description" width="594" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Install the AWS CLI on a Red Hat Linux instance
&lt;/h1&gt;

&lt;h3&gt;
  
  
  From the terminal window to install the AWS CLI on a Red Hat Linux instance.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;To write the downloaded file to the current directory, run the following curl command with the -o option:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To unzip the installer, run the following unzip command with the -u option. In this command, the unzip command prompts you to overwrite any existing files. To skip these prompts, the command includes the -u option.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;unzip -u awscliv2.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To run the install program, run the following command. This sudo command grants write permissions to the directory. The installation command in the code snippet uses a file named install in the unzipped AWS directory to install the AWS CLI.
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To confirm the installation, run the following command:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;The following is an example of the output:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws-cli/2.13.35 Python/3.11.6 Linux/4.14.327-246.539.amzn2.x86_64  exe/x86_64.amzn.2 prompt/off
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: The version numbers that are installed change over time and might not reflect this example.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To verify that the AWS CLI is now working, run the following AWS help command. The help command displays the information for the AWS CLI.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;At the: prompt, enter q to exit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x4R3jbmn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wm7arom6w903hp0995i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x4R3jbmn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9wm7arom6w903hp0995i.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;h1&gt;
  
  
  Configure the AWS CLI to connect to your AWS Account
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;In the SSH session terminal window, run the configure command for the AWS CLI:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws configure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;At the prompt, configure the following:&lt;br&gt;&lt;br&gt;
&lt;em&gt;The following below was provided as a result of the existing Ec2 instance.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS Access Key ID:&lt;/strong&gt;  Copy and paste the AccessKey value into the terminal window. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Secret Access Key:&lt;/strong&gt; Copy and paste the SecretKey value into the terminal window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default region name:&lt;/strong&gt; Enter us-west-2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default output format:&lt;/strong&gt; Enter json&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w7dvOBNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ml7crmh20ybqr0brd5gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w7dvOBNg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ml7crmh20ybqr0brd5gm.png" alt="Image description" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;In the terminal window, test the IAM configuration by running the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws iam list-users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jFhnxEOK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0ydsgztll3pefptvnv4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jFhnxEOK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g0ydsgztll3pefptvnv4.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Fellow me for more practical steps&lt;/em&gt;
&lt;/h3&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>opensource</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Overview of AWS Security Group</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Tue, 25 Jul 2023 01:17:36 +0000</pubDate>
      <link>https://forem.com/oyohedmond/overview-of-aws-security-group-31ho</link>
      <guid>https://forem.com/oyohedmond/overview-of-aws-security-group-31ho</guid>
      <description>&lt;p&gt;In the world of Cloud Computing, we design everything with &lt;strong&gt;Security in mind.&lt;/strong&gt; While you may have heard about AWS Security Groups — have you ever stopped to think about what a security group is, and what it actually does?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Security Group?
&lt;/h2&gt;

&lt;p&gt;A security group acts as a virtual firewall for your instance to control inbound and outbound traffic. For each security group, you add rules that control the inbound traffic to instances, and a separate set of rules that control the outbound traffic. &lt;/p&gt;

&lt;p&gt;Security groups are acting as a "firewall" on EC2 instances.&lt;br&gt;
They regulate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to ports&lt;/li&gt;
&lt;li&gt;Authorized IP ranges (IPv4 and IPv6)&lt;/li&gt;
&lt;li&gt;Controls inbound network (from other to the instance)&lt;/li&gt;
&lt;li&gt;Controls outbound network (from instance to other)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What to know about Security Groups?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It can be attached to multiple instances within a security group.&lt;/li&gt;
&lt;li&gt;Locked down to a region / VPC combination.&lt;/li&gt;
&lt;li&gt;It lives "outside" the EC2 - if traffic is blocked the EC2 instance won't see it.&lt;/li&gt;
&lt;li&gt;If an application is not accessible (time out), then it's a security group issue.&lt;/li&gt;
&lt;li&gt;If an application gives a connection error, then it's an application error, or the application isn't launched.&lt;/li&gt;
&lt;li&gt;By default, all inbound traffic is blocked and all outbound traffic is authorized.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;NB: It is good to maintain one separate security group for SSH access&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Security group rules
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inbound:&lt;/strong&gt; Inbound rules control the incoming traffic to reach the instances that are associated with the security group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outbound:&lt;/strong&gt; Outbound rules control the traffic to leave the instances that are associated with the security group.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NB: For each inbound and outbound rule, you can add, update, or remove rules that take effect immediately in all instances associated with the security group.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each rule consists of the following key elements:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Name:&lt;/strong&gt; The name for the security group (for example: webserver-security-group, database-security-group).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protocol:&lt;/strong&gt; The network protocols to allow (for example: TCP, UDP, ICMP, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Port range:&lt;/strong&gt; A specific port or the range of ports to allow traffic on (for example: 80, 22, 7000-8000, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source or destination:&lt;/strong&gt; The source (inbound rules) or destination (outbound rules) for the traffic that can specify by an IP, IP range, or other security groups.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Lm2ociWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ttau0tr7tg3fk8mvf2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lm2ociWi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ttau0tr7tg3fk8mvf2h.png" alt="Image description" width="800" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ports to know
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;22 = SSH (Secure Shell) - Log into a Linux instance&lt;/li&gt;
&lt;li&gt;3389 = RDP (Remote Desktop Protocol) - Log into a Windows instance.&lt;/li&gt;
&lt;li&gt;22 = SFTP (Secure File Transfer Protocol) - Upload files using SSH.&lt;/li&gt;
&lt;li&gt;21 = FTP (File Transfer Protocol) - Upload files into a file share.&lt;/li&gt;
&lt;li&gt;80 = HTTP (Hyper Text Transfer Protocol ) - Access unsecured websites.&lt;/li&gt;
&lt;li&gt;443 = HTTPS (Hyper Text Transfer Protocol Secure) - Access secured websites.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's practice on our AWS console
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Create an EC2 instance and launch it, check if it is running.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T3jXRGzJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v9b37qmvh7r7fmxtlvxb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T3jXRGzJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v9b37qmvh7r7fmxtlvxb.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Under Network &amp;amp; Security, click Security Groups&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;You see two Security Groups, Default Security Group created by default and Launch-wizard-1 Security Group created when the EC2 instances was launched.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t1gXE9My--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rq3atm3n6ok2stbdi956.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t1gXE9My--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rq3atm3n6ok2stbdi956.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Click on the security group to edit the inbound rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EA87Bxx9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4tm2xsbhjtwe3pg8iul8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EA87Bxx9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4tm2xsbhjtwe3pg8iul8.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Inbound has two rules&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;HTTP which allows port 80 in the EC2 instances from anywhere&lt;/em&gt;&lt;br&gt;
&lt;em&gt;SSH which allows port 22 in the EC2 instances from anywhere&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4o1xmE_q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxbk8cby1wr76mqzfads.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4o1xmE_q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxbk8cby1wr76mqzfads.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Add more rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DJPsJdp4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugmzu5cako2m4ir9f494.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DJPsJdp4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugmzu5cako2m4ir9f494.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Delete the rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bsf76H0L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0d3nt17ujllu5kufp4fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bsf76H0L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0d3nt17ujllu5kufp4fb.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Edit the rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rcm7z-v3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0nb097m86l7gaan9i7ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rcm7z-v3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0nb097m86l7gaan9i7ij.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cloud to the world&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>How To Create an EC2 Instance on AWS</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Sat, 08 Jul 2023 08:07:31 +0000</pubDate>
      <link>https://forem.com/oyohedmond/how-to-create-an-ec2-instance-on-aws-28e8</link>
      <guid>https://forem.com/oyohedmond/how-to-create-an-ec2-instance-on-aws-28e8</guid>
      <description>&lt;p&gt;In this guide, i will be demonstrating the process of setting up a Linux virtual machine on the cloud, specifically using Amazon EC2. Amazon Elastic Compute Cloud (Amazon EC2) is a service that offers scalable and secure compute resources in the cloud, functioning as Infrastructure as a Service (IaaS).&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-requisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;An AWS account&lt;/li&gt;
&lt;li&gt;Familiarity with the AWS management console &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create EC2 Instance &lt;br&gt;&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Sign in to the &lt;a href="https://console.aws.amazon.com"&gt;Amazon Management Console.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KN-KgHpx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqdvvzeh1n6t7g5h7f71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KN-KgHpx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqdvvzeh1n6t7g5h7f71.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- From the navigation bar, choose a suitable geographic region that meets your requirements.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Tip: Choose a nearer geographic region from your location to get faster responses&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KTnurFvB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5eo7gnruhfbixt8fslyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KTnurFvB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5eo7gnruhfbixt8fslyz.png" alt="Image description" width="800" height="433"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Search EC2 in the search bar, and click on it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xy_R9YIR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kdsl9iwnrlyhqbei69x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xy_R9YIR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kdsl9iwnrlyhqbei69x.png" alt="Image description" width="800" height="436"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- In the EC2 dashboard, select instances.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ru0zARPY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7xmf8lr8aynjp11nbwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ru0zARPY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7xmf8lr8aynjp11nbwq.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Click Launch instances.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--98sPCkJO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgu2sth3ot7u6bzbcftw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--98sPCkJO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgu2sth3ot7u6bzbcftw.png" alt="Image description" width="800" height="435"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Give your instance a name.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VqzJ1Q9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2gqyubaqz60ukwcauzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VqzJ1Q9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2gqyubaqz60ukwcauzi.png" alt="Image description" width="481" height="157"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Select the appropriate AMI for your instance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KkLBR-0e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iqypbzh9xtheac6re47p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KkLBR-0e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iqypbzh9xtheac6re47p.png" alt="Image description" width="712" height="383"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;Amazon Machine Image (AMI)&lt;/strong&gt; is a pre-configured virtual machine image that is used to create EC2 instances.&lt;/p&gt;

&lt;p&gt;It contains the software configuration (operating system, application server, and applications) required to easily and quickly launch your instance that is pre-configured with their desired operating system and application stack, saving significant time and effort in configuring and deploying new instances. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Select an instance type and a key pair.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0YY96YVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/49o9vu2vlkfgrwofp1cs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0YY96YVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/49o9vu2vlkfgrwofp1cs.png" alt="Image description" width="711" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NB: &lt;a href="https://dev.to/oyohedmond/amazon-ec2-basics-11ik"&gt;Read for more&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Select create new key pair.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o_7RxzuS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8c8fkpv6xpo42byv4r2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o_7RxzuS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8c8fkpv6xpo42byv4r2.png" alt="Image description" width="796" height="219"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;A key pair is a set of security credentials that are used to securely authenticate a user's login credentials to an EC2 instance. &lt;/p&gt;

&lt;p&gt;It consists of two parts: a public key and a private key. The public key is shared with the instance, while the private key is kept secure by the user. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Enter Key pair name.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6FmPXgvK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vchpokghf59xlr946znm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6FmPXgvK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vchpokghf59xlr946znm.png" alt="Image description" width="795" height="417"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;AWS key pairs can be downloaded in &lt;strong&gt;.pem or .ppk formats&lt;/strong&gt;.&lt;br&gt;
The &lt;strong&gt;.pem format&lt;/strong&gt; is commonly used with SSH clients on Unix/Linux systems.&lt;br&gt;
The *&lt;em&gt;.ppk file format *&lt;/em&gt; is a proprietary format used by PuTTY, a popular SSH client for Windows.&lt;/p&gt;

&lt;p&gt;It is important to keep your private keys secure and should not be shared with others as anyone with access to your private key can gain access to your instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key pair types&lt;/strong&gt;&lt;br&gt;
RSA encryption works for both windows and MacOs/Linux instances. ED25519 keys work with Linux and Mac instances only.' &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Enter your preferred network settings.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zs-Y3vLT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cnz26twa4dwhc7qtdt8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zs-Y3vLT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cnz26twa4dwhc7qtdt8o.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Your network settings include &lt;strong&gt;setting your VPC (Virtual Private Cloud)&lt;/strong&gt; which is a virtual network infrastructure provided by AWS that allows users to launch resources in a logically isolated section of the AWS Cloud.&lt;/p&gt;

&lt;p&gt;Your VPC enables you to create your own IP address ranges, subnets, route tables, security groups, etc.&lt;/p&gt;

&lt;p&gt;AWS assigns a default VPC to every account, we'll use the default VPC and create a new security group that only allows SSH access to the instance. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Select Allow HTTPS traffic from the internet&lt;br&gt;
Select Allow HTTP traffic from the internet to allow access to the EC2 webpage.&lt;/strong&gt;&lt;/em&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Select the number of instances you want to create and review your selection, then click launch instance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jnwRwY1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k524wlsauz0yjx4tzwgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jnwRwY1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k524wlsauz0yjx4tzwgd.png" alt="Image description" width="194" height="417"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- The instance is running and has passed the checks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n3d3tc0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gq87kj65tcfnpyk47s5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n3d3tc0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gq87kj65tcfnpyk47s5i.png" alt="Image description" width="800" height="434"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
In this article, we discussed how to create an EC2 instance on AWS.&lt;/p&gt;

&lt;p&gt;We covered the basic steps involved in launching an EC2 instance, including selecting an Amazon Machine Image (AMI), choosing an instance type, configuring security settings, and creating a key pair to connect to the instance.&lt;/p&gt;

&lt;p&gt;We also discussed some important concepts related to EC2 instances, such as instance types, key pairs, and the free tier offering. Additionally, we provided a brief overview of VPCs and their importance in creating a secure and isolated environment in the cloud.&lt;/p&gt;

&lt;p&gt;If you are new to AWS or cloud computing, creating an EC2 instance can be a great way to get started and learn about the benefits of cloud computing.&lt;/p&gt;

&lt;p&gt;So, if you're interested in trying it out for yourself, sign up for an AWS account and launch your own EC2 instance today.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
      <category>ec2</category>
    </item>
    <item>
      <title>Amazon EC2 Basics</title>
      <dc:creator>Oyoh Edmond</dc:creator>
      <pubDate>Tue, 04 Jul 2023 00:40:00 +0000</pubDate>
      <link>https://forem.com/oyohedmond/amazon-ec2-basics-11ik</link>
      <guid>https://forem.com/oyohedmond/amazon-ec2-basics-11ik</guid>
      <description>&lt;p&gt;Hello there! I'm Edmond, an advocate of transparent learning, where I openly share my knowledge and experiences with the community while eagerly absorbing insights from others. Currently, I'm working on a blog post focused on a subject within AWS Cloud Computing.&lt;/p&gt;

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

&lt;p&gt;Cloud computing provides users with the ability to access abundant computing resources via the internet, surpassing the limitations of individual hardware. It encompasses crucial resources like processing power, memory, and other components necessary for successful program execution. This scalability and accessibility enable users to leverage larger resource quantities than what a single local server or laptop can accommodate, resulting in enhanced computational capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compute resources
&lt;/h2&gt;

&lt;p&gt;Compute resources are measurable quantities of compute power that can be requested, allocated, and consumed for computing activities. Examples of compute resources are:&lt;br&gt;
CPU and Memory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CPU:&lt;/strong&gt; Application developer can specify how many allocated CPUs are required for running their application and to process data. It is measured in millicores.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Memory:&lt;/strong&gt; It is responsible for holding data that is actively being processed by the CPU, as well as the program code and variables necessary for program execution. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AWS compute options
&lt;/h2&gt;

&lt;p&gt;Amazon Web Services (AWS) offers a broad range of functionality for your compute workloads or services.&lt;br&gt;
For compute in AWS, the three most commonly used services are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compute&lt;/strong&gt; (AWS EC2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container services&lt;/strong&gt; (AWS ECS &amp;amp; EKS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serverless services&lt;/strong&gt; (Lambda)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these options serves a specific function, provides configurable options, and exists to meet a variety of workloads within the AWS Cloud. &lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon EC2(Elastic Compute Cloud)
&lt;/h2&gt;

&lt;p&gt;Virtual machines(VMs) are basic building blocks that gets computing power from the cloud. A VM is software that can perform all the functions as a physical computer, including running applications and operating systems. It is a digital version of a physical computer.&lt;/p&gt;

&lt;p&gt;In AWS compute services, VMs are called instances.&lt;/p&gt;

&lt;p&gt;Amazon EC2 is a virtual machine that provides a diverse selection of instance types that can be tailored with different combinations of CPU, memory, storage, and networking resources. This allows users to configure instances according to their specific workload needs. The variety of options enables scalability and efficient resource management for applications hosted on Amazon EC2.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instance types
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Instance types&lt;/strong&gt; are grouped together into instance families. Each instance family is optimized for specific types of use cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instance families&lt;/strong&gt; have sub-families, which are grouped according to the combination of processer and storage used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A virtual central processing unit (vCPU)&lt;/strong&gt; is a measure of processing ability. For most instance types, a vCPU represents one thread of the underlining physical CPU core. For example, if an instance type has two CPU cores and two threads per core, it will have four vCPUs.&lt;/p&gt;

&lt;p&gt;The AWS instances are currently categorized into five distinct families.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;General Purposes Instances&lt;/strong&gt;&lt;br&gt;
It provides a balance of compute, memory, and networking resources and can be used for a wide range of workloads. You can use General Purpose Instances for &lt;strong&gt;&lt;em&gt;gaming servers, small databases, personal projects, etc&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: &lt;em&gt;If high performance CPUs are not required for your applications, you can go got General Purpose Instance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m5ddbM-S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cohfmrhag7yo2n3xcvvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m5ddbM-S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cohfmrhag7yo2n3xcvvv.png" alt="Image description" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The following diagram shows the icons for the general purpose family and sub-families as of this publication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compute Optimized Instances&lt;/strong&gt;&lt;br&gt;
it is an ideal for compute-bound applications that benefit from high-performance processors. Instances belonging to this family are well suited for compute-intensive operations, such as the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch processing workloads&lt;/li&gt;
&lt;li&gt;Media transcoding&lt;/li&gt;
&lt;li&gt;High performance web servers&lt;/li&gt;
&lt;li&gt;High performance computing (HPC)&lt;/li&gt;
&lt;li&gt;Scientific modeling&lt;/li&gt;
&lt;li&gt;Dedicated gaming servers and ad server engines&lt;/li&gt;
&lt;li&gt;Machine learning (ML) inference &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i9rRkJBE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eeud1ehg83pba0elwrc4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i9rRkJBE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eeud1ehg83pba0elwrc4.png" alt="Image description" width="800" height="570"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;NB:&lt;/strong&gt; &lt;em&gt;The following diagram shows the icons for the compute optimized family and sub-families as of this publication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Optimized Instances&lt;/strong&gt; &lt;br&gt;
They are designed to deliver fast performance for workloads that process large data sets in memory.&lt;br&gt;
Memory here defines RAM which allows us to do multiple tasks at a time. Memory is a temporary storage area.&lt;br&gt;
It loads from storage, holds the data, and process it before the computer can run it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F8wwGnf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylc05qdxos8rv78wedlc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F8wwGnf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylc05qdxos8rv78wedlc.png" alt="Image description" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; &lt;em&gt;The following diagram shows the icons for the memory optimized family and sub-families as of this publication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage optimized instances&lt;/strong&gt; &lt;br&gt;
They are designed for workloads that require high, sequential read and write access to very large data sets on local storage. &lt;br&gt;
Distributed file systems, data warehousing applications, and high frequency online transaction processing (OLTP) systems are examples of workloads that are suited for storage instances. &lt;br&gt;
They are optimized to deliver tens of thousands of low-latency, random input/output (I/O) operations per second (IOPS) to applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4K1smNaA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r51hob9zl1l92raqiuhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4K1smNaA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r51hob9zl1l92raqiuhz.png" alt="Image description" width="552" height="958"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; &lt;em&gt;The following diagram shows the icons for the storage optimized family and sub-families as of this publication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accelerated Computing Instances&lt;/strong&gt; &lt;br&gt;
It uses hardware accelerators, or co-processors, to perform some functions more efficiently than is possible in software running on CPUs. Examples of such functions include floating point number calculations, graphics processing, and data pattern matching. Accelerated computing instances facilitate more parallelism for higher throughput on compute-intensive workloads.&lt;br&gt;
Graphics applications, game streaming, and application streaming are all good candidates for Accelerated Computing Instances.&lt;br&gt;
Data pattern matching can be done more efficiently with this instance type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5ZqjFXNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79u7g176e8vi2pb230dx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5ZqjFXNe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79u7g176e8vi2pb230dx.png" alt="Image description" width="800" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; &lt;em&gt;The following diagram shows the icons for the Accelerated optimized family and sub-families as of this publication.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>opensource</category>
      <category>ec2</category>
    </item>
  </channel>
</rss>
