<?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: Olumoko Moses </title>
    <description>The latest articles on Forem by Olumoko Moses  (@aries4491).</description>
    <link>https://forem.com/aries4491</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%2F1042213%2F3194a655-da08-4eaa-abc5-fd06cc231973.jpeg</url>
      <title>Forem: Olumoko Moses </title>
      <link>https://forem.com/aries4491</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aries4491"/>
    <language>en</language>
    <item>
      <title>Embracing TON Blockchain: A Journey from Web2 to Web3</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Sun, 21 Jul 2024 13:07:30 +0000</pubDate>
      <link>https://forem.com/aries4491/embracing-ton-blockchain-a-journey-from-web2-to-web3-jin</link>
      <guid>https://forem.com/aries4491/embracing-ton-blockchain-a-journey-from-web2-to-web3-jin</guid>
      <description>&lt;p&gt;&lt;em&gt;Learning about Web3 and it's infrastructure has been an exhilarating adventure for me as an infrastructure engineer, and diving into the world of TON (Telegram Open Network) blockchain has been like discovering a hidden treasure chest of decentralized wonders!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Imagine me, a seasoned Web2 enthusiast, embarking on this new journey with wide-eyed curiosity and a hint of nerdy excitement. The TON blockchain, with its Infinite Sharding Paradigm and Instant Hypercube Routing, sounds like something straight out of a sci-fi flick—where every transaction zips through cyberspace at lightning speed, making my inner tech geek jump for joy.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Discovering TON Blockchain's Innovations
&lt;/h1&gt;

&lt;p&gt;As someone deeply rooted in traditional web technology (Web2), TON blockchain's architecture and innovations have been incredibly inspiring. The idea of Infinite Sharding Paradigm immediately caught my attention—it's a flexible solution that tackles the limits of typical blockchain networks by dynamically adjusting to handle more transactions. This approach not only boosts performance but also fits perfectly with the needs of modern decentralized apps (dApps).&lt;br&gt;
Furthermore, TON's Instant Hypercube Routing is a game-changer in transaction speed and efficiency. &lt;strong&gt;Having come from a background where improving network speed and reliability are crucial&lt;/strong&gt;, seeing TON achieve almost instant transaction confirmations through decentralized routing solidifies my respect for its technical capabilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9g60nstdz0cir4mwmj6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9g60nstdz0cir4mwmj6.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Navigating Challenges and Learning Opportunities
&lt;/h1&gt;

&lt;p&gt;Transitioning to Web3 infrastructure means facing new challenges, like navigating regulations and adapting to evolving technology landscapes. TON's journey highlights the importance of compliance while pushing forward with innovative blockchain solutions. Exploring TON's growth and regulatory hurdles provides valuable insights into how technology and governance intersect—a critical aspect of building strong decentralized systems.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So, while I may still be figuring out the intricacies of Web3, one thing's for sure: TON blockchain has me hooked with its blend of innovation, speed, and the promise of a decentralized utopia. And hey, if I can navigate these uncharted waters with a sense of humor and a love for learning, then bring on the next chapter of this wild ride!&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Engaging with Learning Resources
&lt;/h1&gt;

&lt;p&gt;To deepen my understanding of TON blockchain, I actively seek diverse learning materials. Engaging with official documents, whitepapers, and community discussions gives me a comprehensive view of TON's architecture and its potential applications. I am equipping myself to make meaningful contributions to the Web3 space.&lt;/p&gt;

&lt;h1&gt;
  
  
  Embracing TON's Potential for Change
&lt;/h1&gt;

&lt;p&gt;My transition from Web2 to Web3 as an infrastructure engineer is fueled by a genuine love for innovation and a deep respect for advancements like those in TON blockchain. TON isn't just a decentralized network—it represents a shift towards a more inclusive, efficient, and secure digital economy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In conclusion&lt;/em&gt;, my journey into Web3 with TON blockchain isn't just about adapting—it's about embracing the future of digital infrastructure with a grin and a geeky sense of wonder.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Automate Docker image builds and pushes to dual container registries (ECR and Docker Hub) in one go using GitHub Actions</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Mon, 22 Apr 2024 17:23:05 +0000</pubDate>
      <link>https://forem.com/aws-builders/automate-docker-image-builds-and-push-to-dual-container-registries-ecr-and-docker-hub-in-one-push-using-github-actions-2m82</link>
      <guid>https://forem.com/aws-builders/automate-docker-image-builds-and-push-to-dual-container-registries-ecr-and-docker-hub-in-one-push-using-github-actions-2m82</guid>
      <description>&lt;h1&gt;
  
  
  INTRODUCTION
&lt;/h1&gt;

&lt;p&gt;In this guide I will be taking you on a ride on how to leverage the power of GitHub actions, to efficiently build and push Docker image to two essential container registries, Amazon ECR and Docker Hub, Plus, we'll tag them based on the GitHub run number and "Latest", all in one go, optimizing your workflow for maximum efficiency and reliability.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prerequisite
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Git and GitHub&lt;/li&gt;
&lt;li&gt;Docker &lt;/li&gt;
&lt;li&gt;DockerHub account &lt;/li&gt;
&lt;li&gt;AWS account &lt;/li&gt;
&lt;li&gt;A GitHub repository, a Dockerfile, and the project you aim to build and push to the registry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Wondering why we are pushing to dual container registries &lt;br&gt;
and tagging the images twice using the GitHub run number and "Latest"?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Here you go:
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;1.Dual Image Distribution&lt;/strong&gt;&lt;br&gt;
By pushing the Docker image to both AWS ECR and Docker Hub simultaneously, you gain redundancy and flexibility. Here's why it's advantageous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High Availability:&lt;/strong&gt; If one container registry experiences downtime or issues, your application remains accessible through the other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geo-Distribution:&lt;/strong&gt; AWS ECR and Docker Hub have different global distributions. Pushing to both ensures that your application is available to users worldwide with lower latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vendor Independence:&lt;/strong&gt; Diversifying the storage locations mitigates the risk of vendor-specific limitations or changes affecting your deployments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2.Tagging with "latest" and GitHub Run Number&lt;/strong&gt;&lt;br&gt;
Tagging Docker images with "latest" and the GitHub run number offers several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Versioning:&lt;/strong&gt; The "latest" tag simplifies the process of deploying the most recent version of your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Traceability:&lt;/strong&gt; Each image is tagged with the GitHub run number, making it easy to trace back to the specific commit and build that produced the image. This is invaluable for debugging and auditing purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rollback:&lt;/strong&gt; In case of issues with a new release, you can easily revert to a previous image tagged with a specific run number.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  What is GitHub actions?
&lt;/h1&gt;

&lt;p&gt;GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline.&lt;/p&gt;
&lt;h1&gt;
  
  
  What is DockerHub?
&lt;/h1&gt;

&lt;p&gt;Docker Hub is a container registry built for developers and open source contributors to find, use, and share their container images.&lt;/p&gt;
&lt;h1&gt;
  
  
  What is Amazon ecr?
&lt;/h1&gt;

&lt;p&gt;Amazon Elastic Container Registry (Amazon ECR) is a fully AWS managed container registry offering high-performance hosting, so you can reliably deploy application images and artifacts anywhere&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Shall we begin? Okay,  Let’s get it done in 7 steps&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Create Dockerhub repository
&lt;/h1&gt;

&lt;p&gt;Create a repository on Docker Hub where your docker images will stored:&lt;br&gt;
Sign into your docker hub account, navigate to repositories, click on "create repository"&lt;br&gt;
Enter your preferred repository name, then click on create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jbf70kx3bzj6nb8u5xv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jbf70kx3bzj6nb8u5xv.png" alt="Image description" width="800" height="481"&gt;&lt;/a&gt;&lt;br&gt;
There! your repository is ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cijgnan49xwyhlz3nbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cijgnan49xwyhlz3nbc.png" alt="Image description" width="789" height="304"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Create Amazon ecr repository
&lt;/h1&gt;

&lt;p&gt;On your AWS account, search for ecr and create a repository for your docker images to be stored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the navigation pane, choose Repositories under "Private registry".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the Repositories page click on Create repository.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzy7daila9254fby3n3d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzy7daila9254fby3n3d.png" alt="Image description" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the preferred repository name and click on "Create".&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febcubu5ilyc530t9zdz6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febcubu5ilyc530t9zdz6.png" alt="Image description" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Configure your repository secrets on GitHub
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Click on the "settings" in your repository&lt;/li&gt;
&lt;li&gt;In the "Security" section of the sidebar, select Secrets and - variables, then click Actions.&lt;/li&gt;
&lt;li&gt;Click the Secrets tab.&lt;/li&gt;
&lt;li&gt;Click New repository secret.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;secrets to add: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_ACCOUNT_ID, DOCKERHUB_PASSWORD, DOCKERHUB_USERNAME.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY: These are credentials used to authenticate and authorize access to Amazon Web Services (AWS) resources.&lt;/li&gt;
&lt;li&gt;AWS_ACCOUNT_ID: This is the unique identifier for your AWS account.&lt;/li&gt;
&lt;li&gt;DOCKERHUB_USERNAME and DOCKERHUB_PASSWORD: These are credentials used to authenticate and authorize access to Docker Hub, a cloud-based repository for storing and sharing containerized applications. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf2ikpj3oon520wol5jp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf2ikpj3oon520wol5jp.png" alt="Image description" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Create a workflow file
&lt;/h1&gt;

&lt;p&gt;In the project directory where your source code and dockerfile resides you need to add the workflow file:&lt;br&gt;
Think of GitHub Actions workflows as sets of instructions written in YAML files. To get started, make a new file called &lt;strong&gt;main.yml&lt;/strong&gt; inside the &lt;strong&gt;.github/workflows&lt;/strong&gt; directory of your repository. This file will outline the steps needed to build and push your Docker image.&lt;/p&gt;

&lt;p&gt;The workflow will be triggered whenever we push to the main branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ewasflk2v6iv51x5co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ewasflk2v6iv51x5co.png" alt="Image description" width="255" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the below code and paste in the main.yml file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: In the workflow below, make sure to replace every [Repository name] with the actual name of your image repository&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;on:
  push:
    branches:
      - main

jobs:
  deploy_to_ecr:
    name: Deploy to ECR
    runs-on: ubuntu-latest

    steps:
      - name: Check out code now
        uses: actions/checkout@v2

      - name: Check out code
        uses: actions/checkout@v2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1

      - name: Build, tag, and push image to Amazon ECR
        env:
          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
          ECR_REPOSITORY: [Repository name]
          IMAGE_TAG: latest
        run: |
          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
          docker tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:${{ github.run_number }}
          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
          docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ github.run_number }}

  deploy_to_dockerhub:
    name: Deploy to Docker Hub
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}

      - name: Build and tag Docker images
        run: |
          docker build . --file Dockerfile --tag ${{ secrets.DOCKERHUB_USERNAME }}/[Repository name]:latest
          docker tag ${{ secrets.DOCKERHUB_USERNAME }}/[Repository name]:latest ${{ secrets.DOCKERHUB_USERNAME }}/[Repository name]:${{ github.run_number }}

      - name: Push images to Docker Hub
        run: |
          docker push ${{ secrets.DOCKERHUB_USERNAME }}/[Repository name]:latest
          docker push ${{ secrets.DOCKERHUB_USERNAME }}/[Repository name]:${{ github.run_number }}

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  Push your project To GitHub
&lt;/h1&gt;

&lt;p&gt;Now that you've added the GitHub Actions workflow to your project, it's time to take the next steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initialize a Git repository:&lt;/strong&gt; If you haven't already, initialize a Git repository in your project folder by running &lt;em&gt;git init**&lt;/em&gt;. This will set up a new Git repository locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add your files:&lt;/strong&gt; Use &lt;strong&gt;git add .&lt;/strong&gt; to add all files in your project to the staging area. If you want to add specific files, replace . with the file names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit your changes:&lt;/strong&gt; Commit the added files to the local repository with a descriptive message using &lt;strong&gt;git commit -m "Your commit message"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link to your GitHub repository:&lt;/strong&gt; If you haven't already, link your local repository to your GitHub repository by adding it as a remote. You can do this with the command &lt;strong&gt;git remote add origin&lt;/strong&gt; . Replace with the URL of your GitHub repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push to GitHub:&lt;/strong&gt; Finally, push your committed changes to GitHub with &lt;strong&gt;git push -u origin main&lt;/strong&gt;. This command pushes your changes to the main branch on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally! you can watch your workflow run:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;On your Github repository, Click on Actions&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg89xjzrz1b03r4lu0465.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg89xjzrz1b03r4lu0465.png" alt="Image description" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6yx67idds5zggbfp89t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6yx67idds5zggbfp89t.png" alt="Image description" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpd4b74ow0yuiinahltc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpd4b74ow0yuiinahltc.png" alt="Image description" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Verify that the Docker image is pushed to the container registries(Docker, Ecr)
&lt;/h1&gt;

&lt;p&gt;For Amazon Ecr:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9e8ru60ehnxu86spwirn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9e8ru60ehnxu86spwirn.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwud7bx2vzmxwdun3dhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwud7bx2vzmxwdun3dhh.png" alt="Image description" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Github Repository for this Tutorial
&lt;/h1&gt;

&lt;p&gt;You can also clone here and use the sample code: &lt;a href="https://github.com/ARIES5533/Image-push-to-Ecr-and-DockerHub"&gt;https://github.com/ARIES5533/Image-push-to-Ecr-and-DockerHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecr</category>
      <category>cicd</category>
      <category>aws</category>
      <category>docker</category>
    </item>
    <item>
      <title>Hosting a Static Website on AWS Using S3, CloudFront, and Route53, with Just 7 Steps</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Mon, 08 May 2023 22:48:38 +0000</pubDate>
      <link>https://forem.com/aws-builders/guide-to-hosting-a-static-website-on-aws-using-s3-cloudfront-and-route53-with-just-7-steps-220b</link>
      <guid>https://forem.com/aws-builders/guide-to-hosting-a-static-website-on-aws-using-s3-cloudfront-and-route53-with-just-7-steps-220b</guid>
      <description>&lt;p&gt;Looking for an easy, fast, and reliable way to host your static website? Say hello👋 to &lt;strong&gt;AWS S3&lt;/strong&gt; and &lt;strong&gt;CloudFront&lt;/strong&gt;, Services offered by Amazon Web Service(AWS)! And with &lt;strong&gt;Route53's&lt;/strong&gt; DNS routing capabilities, directing traffic to your website has never been so smooth, with this your visitors can access your website by simply typing your domain name into their web browser, for example, &lt;em&gt;&lt;strong&gt;olumoko.live&lt;/strong&gt;&lt;/em&gt;. Now let's get started with the perfect hosting solution.&lt;/p&gt;

&lt;p&gt;At the end of this baby steps article, You will be able to host a static website on AWS by deploying the website on &lt;strong&gt;Amazon S3&lt;/strong&gt;, Serving the website contents with &lt;strong&gt;Amazon CloudFront&lt;/strong&gt; to &lt;em&gt;improve website speed, reliability, cost-effectiveness, security,&lt;/em&gt; and using &lt;strong&gt;Amazon Route53&lt;/strong&gt; &lt;em&gt;to route traffic to the CloudFront distribution serving your website contents&lt;/em&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pwkubkcplpi7p0bindu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7pwkubkcplpi7p0bindu.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have an AWS account, if you don't have one yet, register &lt;a href="https://portal.aws.amazon.com/billing/signup?nc2=h_ct&amp;amp;src=header_signup&amp;amp;redirect_url=https%3A%2F%2Faws.amazon.com%2Fregistration-confirmation#/start/email" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To Be familiar with DNS and how it works, click &lt;a href="https://dev.to/aws-builders/understanding-dns-and-amazons-route-53-cloud-service-a-beginners-introduction-4jkc"&gt;here&lt;/a&gt; to have a deeper knowledge of DNS and Route53.&lt;/li&gt;
&lt;li&gt;Have a custom domain name, for example, &lt;strong&gt;olumoko.online&lt;/strong&gt;, click &lt;a href="https://aws.amazon.com/getting-started/hands-on/get-a-domain/" rel="noopener noreferrer"&gt;here&lt;/a&gt; to register a custom domain name in Amazon Route53 or Click &lt;a href="https://www.godaddy.com/en-uk/domains" rel="noopener noreferrer"&gt;here&lt;/a&gt; to get a custom domain name on Godaddy.&lt;/li&gt;
&lt;li&gt;Get your Website files (HTML) ready, If you don't have any then check &lt;a href="https://www.w3schools.com/html/html_basic.asp" rel="noopener noreferrer"&gt;here&lt;/a&gt; and copy one of the many examples.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is a Static Website?&lt;/strong&gt;&lt;br&gt;
Static websites are websites that consist of fixed contents, typically HTML, CSS, and JavaScript files, that are served to all visitors exactly as stored, it does not change based on user interactions, and without any backend or database processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Amazon S3?&lt;/strong&gt;&lt;br&gt;
Amazon S3(Simple Storage Service) is a cloud-based storage service provided by AWS, it allows users to store and retrieve data over the Internet. it provides a scalable, reliable, and highly available storage infrastructure for a variety of data types, including object storage, files, documents, and multimedia content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is CloudFront?&lt;/strong&gt;&lt;br&gt;
CloudFront is a Content Delivery Network(CDN) service also provided by AWS, it enables users to deliver content globally with low latency, high data transfer speed, and securely delivered. &lt;br&gt;
leveraging AWS edge locations around the world to cache and deliver content from the nearest location to the user, reducing latency and improving performance.&lt;br&gt;
&lt;em&gt;It also offers features such as SSL/TLS encryption, access controls, and real-time metrics&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Route53?&lt;/strong&gt;&lt;br&gt;
Route53 is a highly available and scalable cloud-based DNS service offered by AWS, It allows you to route traffic to resources such as CloudFront, EC2 instances, S3 buckets, and Elastic Load Balancers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is AWS Certificate Manager?&lt;/strong&gt;&lt;br&gt;
AWS Certificate Manager (ACM) is a service by AWS that makes it easy to provision, manage, and deploy SSL/TLS certificates for use with AWS services and your applications.&lt;br&gt;
&lt;em&gt;SSL/TLS certificates are used to establish a secure connection between a web browser and a web server, and to protect sensitive information like credentials and payment details by encrypting the data.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now come with me and let’s get this done in 7 steps!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Creating an S3 Bucket for Static Website Hosting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On your AWS console, search for S3, and on the S3 dashboard "Create bucket", enter a globally unique name for the bucket &lt;em&gt;as no two persons can use the same&lt;/em&gt;, and specify your preferred region.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2q88xpwkbs4mtcqu3ay6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2q88xpwkbs4mtcqu3ay6.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
then uncheck the "block all public access" and check the acknowledgment, then leave the rest of the configuration as default.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwyziry6s2sz9utexa2je.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwyziry6s2sz9utexa2je.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; &lt;em&gt;I only unchecked this so we can test that our website can also be accessed just being hosted on S3, but we will turn it off as soon as confirm it works because Leaving "Block all public access" Unchecked makes your website content and data accessible to anyone on the public internet, including hackers and other malicious actors which makes it &lt;strong&gt;unsecured&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Uploading Website Content to S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on your S3 bucket, click on Upload, then click on &lt;strong&gt;" add files"&lt;/strong&gt;, Select and upload your website files(HTML files).&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;3. Configuring S3 Bucket Permissions for Website Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the permission tab in your S3 bucket, click on edit permission, and paste the below Json configuration:&lt;/p&gt;

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

{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "AddPerm",
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
       }
  ]
}


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

&lt;/div&gt;

&lt;p&gt;Replace the &lt;strong&gt;&lt;em&gt;"YOUR_BUCKET_NAME"&lt;/em&gt;&lt;/strong&gt; in the configuration with your bucket name and click on save.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Enabling Static Website Hosting on S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the propriety Tab in your S3 bucket, scroll down to locate, and click on "static hosting", &lt;em&gt;by default it is disabled&lt;/em&gt;, click on enable static hosting, follow the configuration in the snapshot, and save.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F446kt9zx6prtjai299m7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F446kt9zx6prtjai299m7.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;So we have successfully hosted our website in S3 so scroll down and you would find a "Bucket website endpoint", copy it and paste it on your web browser and you can access your website.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1czvmtodofcztt0zskn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1czvmtodofcztt0zskn.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
...&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnl6rtm9t2r8i48lbo3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnl6rtm9t2r8i48lbo3b.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;I know you want to ask, “If our website works just by hosting on S3, why then do we need CloudFront?”&lt;/strong&gt; &lt;em&gt;Well, You will notice our website has a "Not Secure” tag which means even though our website is now hosted in the cloud, it's not secured, for this reason, we need CloudFront to securely serve our website content to our visitors or users.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Now that our website works, on the S3 dashboard, click on propriety and check the "block all public access", save, and then continue with the steps.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Creating an SSL/TLS Certificate for CloudFront&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the AWS console search for AWS Certificate Manager(ACM), click on "Request a certificate", enter your customized domain name(In my case olumoko.online), selected DNS validation, and click on request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jlegkf60joit74mf72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jlegkf60joit74mf72.png" alt="Image description"&gt;&lt;/a&gt; &lt;br&gt;
Click on "View certificate" &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3eu08g4ttmsinsev809q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3eu08g4ttmsinsev809q.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Click on the certificate ID and click on "&lt;strong&gt;create records in route53&lt;/strong&gt;", click on "&lt;strong&gt;create records&lt;/strong&gt;" then wait while the status change from "pending validation" to "success". &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsappauhu6hytdjirteh1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsappauhu6hytdjirteh1.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
If you check your domain name in route53, &lt;br&gt;
you should find a new set record name "CNAME" and you are good to go with the ACM.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvbwk41dahgo3xg8ubzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvbwk41dahgo3xg8ubzk.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;6. Configuring CloudFront Distributions for Website Delivery&lt;/strong&gt;&lt;br&gt;
On the CloudFront dashboard, click on "create CloudFront distribution", and select your S3 origin domain in the "origin domain" field.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3t9wix3h9fig9rw8smp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3t9wix3h9fig9rw8smp.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Scroll down, and enter your domain name in the "Alternate domain name(CNAME)" field then select your certificate manager in the "Custom SSL certificate" field, and the "Default root object" field, type your website HTML file (index.html) then click on "&lt;strong&gt;create a distribution"&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkos3n2971rsoqe273iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkos3n2971rsoqe273iq.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
...&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek6e7mwsx18rvr6ergxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek6e7mwsx18rvr6ergxf.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In your distribution dashboard, click on "General", copy your CloudFront "Distribution domain name" and paste it into your web browser to access your website fully secured.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswd3jdmj5791mmem4l32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswd3jdmj5791mmem4l32.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy66p8cbfmarajh0rk835.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy66p8cbfmarajh0rk835.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;And now you have another question “Our website works and it’s secured, so why do we need Route53?”&lt;/em&gt;&lt;/strong&gt; One out of many reasons to use Route53 is because it won't be easy for visitors to remember the CloudFront endpoint when trying to access your website, right? So using a custom domain name for your website makes it easier for your users to remember and access your website, now we can all agree "olumoko.online" is way easier to remember than a CloudFront endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Configuring Route53 for DNS Management&lt;/strong&gt;&lt;br&gt;
In the Route53 dashboard click on the hosted zone, click on your domain name, and "Create record".&lt;br&gt;
For the record turn on your alias, set your record type, set your routing policy, and "Route traffic to" field select your CloudFront "Distribution domain name".&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rubgv1jwxfsab99qor9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rubgv1jwxfsab99qor9.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Once you create your records, click on View status to know when your domain name is ready to be used to access your website.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhm35pndbye8t65la5gys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhm35pndbye8t65la5gys.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
If your status is "INSYNC" means you can now access your website using your custom domain.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif2lonktff54xfqq0eao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif2lonktff54xfqq0eao.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffncxmxidmah8ctplgsbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffncxmxidmah8ctplgsbl.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
Hurray! Your visitors can now access your website by simply typing your custom domain name into a web browser, fast, easy and secured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Easy! right? congratulations! you've successfully hosted your static website on AWS in just 7 steps, AWS S3, CloudFront, and Route53 offer a powerful combination of services for Hosting, Caching, and DNS management, making hosting your website on AWS reliable and cost-effective.&lt;br&gt;
Thank you for following this guide to the end, and cheers to more hosting🥂.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>html</category>
      <category>s3</category>
      <category>route53</category>
    </item>
    <item>
      <title>Understanding DNS and Amazon's Route 53 Cloud Service: A Beginner's Introduction</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Wed, 26 Apr 2023 22:17:40 +0000</pubDate>
      <link>https://forem.com/aws-builders/understanding-dns-and-amazons-route-53-cloud-service-a-beginners-introduction-4jkc</link>
      <guid>https://forem.com/aws-builders/understanding-dns-and-amazons-route-53-cloud-service-a-beginners-introduction-4jkc</guid>
      <description>&lt;p&gt;Have you ever wondered what happens in the background right after you type and search for a website name in the web browser? How does your computer know where to find a website?  This answer, you will find in the Domain Name System(DNS), mostly referred to as the &lt;strong&gt;internet’s address book&lt;/strong&gt;. So what's the connection between DNS and ROUTE53? well, Route53 is a highly available and scalable cloud-based DNS service provided by Amazon Web Service(AWS). But, before I go deeper into Amazon Route 53, I will guide you through the fundamentals of DNS to help you better understand how and why to use Route 53. Now get ready to learn more about the &lt;strong&gt;internet’s address book.&lt;/strong&gt;&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   SO WHAT IS DNS AND HOW DOES IT WORK?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;DNS is a system that helps translate human-readable domain names, for example, &lt;a href="http://www.moses.com" rel="noopener noreferrer"&gt;www.moses.com&lt;/a&gt; to their respective machine-readable IP Address(Internet-Protocol Address), for example, 192.168.1.2.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An IP address is a unique numerical identifier for every device, website, or network that connects to the Internet. Typically assigned by an internet service provider (ISP), an IP address is an online device address used for communicating across the internet.&lt;/em&gt;&lt;br&gt;
IP Address is solely responsible for locating websites and other services on the internet because, Unlike humans that identify by names, computers identify by numbers and that is how communications happen over the internet, But as you know it’s almost impossible for us as humans to remember the IP addresses of every website we need to visit on a daily basis, which begs the question, how do we bridge the communication gap?, then DNS came to our rescue, acts as a bridge by translating &lt;strong&gt;human-readable domain names&lt;/strong&gt; that we can easily remember into &lt;strong&gt;machine-readable IP addresses,&lt;/strong&gt; great right?.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of DNS servers that make sure your requests are served and they are as follows;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Recursive DNS Resolver:&lt;/strong&gt; Are responsible for directly processing requests from end-users or clients, and providing DNS resolution for end users. When a user types in a domain name, the recursive DNS server will query the other DNS servers on behalf of the end-users until it finds the IP address associated with the domain name. &lt;br&gt;
2.&lt;strong&gt;Caching DNS Servers:&lt;/strong&gt; These are DNS servers that store DNS records for a period of time after they have been retrieved. When a recursive DNS server queries a caching DNS server, it can retrieve the DNS records more quickly because they are already stored in the cache.&lt;br&gt;
3.&lt;strong&gt;Root DNS Servers:&lt;/strong&gt; This type of server is responsible for directing requests to the appropriate Top-Level Domain (TLD) DNS server. It maintains a list of all TLDs and their corresponding DNS servers. &lt;br&gt;
4.&lt;strong&gt;Top-Level Domain (TLD) DNS Servers:&lt;/strong&gt; This type of server is responsible for resolving domain names for a particular top-level domain (TLD), such as .com, .org, etc. It maintains a list of authoritative DNS servers for each domain registered under that TLD.&lt;br&gt;
5.&lt;strong&gt;Authoritative DNS Servers:&lt;/strong&gt; This type of server is responsible for maintaining the actual DNS records for a particular domain name. When a recursive DNS server queries an authoritative DNS server, it receives the final IP address for the domain name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How DNS Works? let's get to it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you type a domain name into your web browser, your computer contacts a &lt;strong&gt;Recursive DNS Resolver&lt;/strong&gt; to obtain the corresponding IP address for that domain. The DNS server checks the Cache of frequently-used IP Addresses, but if it doesn't have the information, it then will query other DNS servers recursively in a hierarchical order from &lt;strong&gt;Root DNS Servers&lt;/strong&gt; to &lt;strong&gt;Top-Level Domain (TLD)&lt;/strong&gt; DNS Servers and finally &lt;strong&gt;Authoritative DNS Servers&lt;/strong&gt; until it finds the correct IP address. Once your computer has the IP address, it can connect to the server hosting the website or service you requested.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh363jq2b07qxb2qp5iqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh363jq2b07qxb2qp5iqd.png" alt="DNS LOOKUP"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    WHAT IS AMAZON ROUTE53?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Amazon Route 53 is a highly scalable and reliable DNS web service provided by (AWS). It allows you to route traffic to resources such as EC2 instances, S3 buckets, and Elastic Load Balancers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;With Amazon Route53 you get domain management service features that go beyond domain registration and name resolution, you are allowed to control how traffic is directed globally.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits Of Route53?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Highly Available:&lt;/strong&gt; Consistently ensure traffic is routed to the end user, and DNS servers can be distributed across many availability zones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible:&lt;/strong&gt; Route 53 Traffic Flow provides users with flexibility in choosing traffic policies based on multiple criteria, such as endpoint health, geographic location, and latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast:&lt;/strong&gt; Route 53 DNS servers are distributed around the globe to provide a low-latency fast service.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable:&lt;/strong&gt; Route 53 can automatically scale out and handle a large volume of queries, making it ideal for applications with varying traffic patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy to use:&lt;/strong&gt; It’s easy to use, sign up, configure, and provides fast responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Effective:&lt;/strong&gt; Route 53 offers a pay-as-you-go pricing model, With route53 you only have to pay for the services you use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure:&lt;/strong&gt; It’s very secure, because of the easy integration with Identity and Access Management (IAM).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Functions Of Route53&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS management:&lt;/strong&gt; Route 53 allows users to manage DNS settings for their domains, including creating and editing DNS records such as A, and CNAME records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic Management:&lt;/strong&gt; Route 53 can manage the flow of traffic to different resources in a way that optimizes performance and minimizes latency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring:&lt;/strong&gt; Route 53 can monitor the health of your resources, discover unhealthy resources, and send traffic accordingly through to healthy resources only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain Registration:&lt;/strong&gt; This allows you to purchase a custom domain name in AWS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS query logging:&lt;/strong&gt; Route 53 is able to log DNS queries for your domains and provide you with insights into users' interaction with your website.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS failover:&lt;/strong&gt; Route 53 can automatically redirect traffic to healthy resources only in the event of a failure.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnn26x9sr8qfdng2se3me.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is Route 53 hosted zone?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A hosted zone is a like a container in route53, that contains and manages DNS records of a domain name.&lt;br&gt;
Hosted zone in route53 can be compared to the DNS zone file in traditional DNS.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnaaoes9rju4rh0g4fth8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnaaoes9rju4rh0g4fth8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS Records&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Several types of DNS  records are used to map domain names to their corresponding IP addresses or perform other functions. Here are some of the most common types of DNS records:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Record (Address Record):&lt;/strong&gt; This maps a domain name to an IPv4 address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AAAA Record (IPv6 Address Record):&lt;/strong&gt; This maps a domain name to an IPv6 address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CNAME Record (Canonical Name Record):&lt;/strong&gt; This maps a domain name to another domain name, which is usually the canonical (official) name of a website.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NS Record (Name Server Record):&lt;/strong&gt; This identifies the authoritative name servers for a domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOA Record (Start of Authority Record):&lt;/strong&gt; Contains information about a DNS zone, including the primary name server for the zone, the email address of the administrator responsible for the zone, and other settings.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy7n05be61u5lf1uspbf0.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Routing Policies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple Routing:&lt;/strong&gt; This Is the most basic routing policy defined using an A or AAAA record to resolve to a single resource with a specific function for your domain, for example, a cloud front distribution serving a static website.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Note that&lt;/em&gt;&lt;/strong&gt; Simple routing policy does not support health checks.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jkuv0lo3zlg3syua6m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jkuv0lo3zlg3syua6m9.png" alt="SIMPLE ROUTING POLICY"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Failover Routing:&lt;/strong&gt; This is used to configure active/passive setup, such that traffic is routed to one resource(a primary record) while it’s healthy but when unhealthy it automatically directs traffic to the other healthy resource(a secondary record).&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg0uzsn22urb9j57zrlo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg0uzsn22urb9j57zrlo.png" alt="FAILOVER ROUTING POLICY"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geolocation Routing:&lt;/strong&gt; This is used to route traffic based on the geographical location of the user or client, this traffic is routed to resources in the same region where the user’s DNS queries originated from.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lwdze6788btps51bngk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lwdze6788btps51bngk.png" alt="GEOLOCATION ROUTING POLICY"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Latency Routing:&lt;/strong&gt; Is used to route traffic to resources with the lowest latency to the customer/client, if you have your resources in multiple regions,  you want to route the client's traffic to the region that provides them the fattest delivery.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pam56d6csjxd95xhq9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pam56d6csjxd95xhq9h.png" alt="LATENCY ROUTING POLICY"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Weighted Routing:&lt;/strong&gt; A weighted routing policy allows you to distribute traffic across resources, however, this has nothing to do with latency or geographic location. Because you can choose how much traffic should be sent to each resource by allocating weight percentage, and you have full control over the flow of traffic.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hcrlixjwu6haoe2ehre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hcrlixjwu6haoe2ehre.png" alt="WEIGHTED ROUTING POLICY"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To learn even more about Route53, check out this documentation by AWS:&lt;br&gt;
&lt;a href="https://aws.amazon.com/route53/" rel="noopener noreferrer"&gt;https://aws.amazon.com/route53/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/route53/what-is-dns/" rel="noopener noreferrer"&gt;https://aws.amazon.com/route53/what-is-dns/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS HOW-TO GUIDE to Register a Domain Name with Amazon Route 53&lt;br&gt;
&lt;a href="https://aws.amazon.com/getting-started/hands-on/get-a-domain/" rel="noopener noreferrer"&gt;https://aws.amazon.com/getting-started/hands-on/get-a-domain/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
For anyone looking to manage their website's Domain Name and associated IP addresses, Amazon Route53 is a go-to tool that helps simplify the management of DNS and improve the overall performance and reliability of your websites.&lt;br&gt;
So with this beginner's introduction, you now have a better understanding of how DNS and Route53 work, with further practice and experimentation you should be ready to take full advantage of Route53 and all the special features it has to offer.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using Systems Manager To Automate Operational Tasks Across AWS Resources</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Tue, 14 Mar 2023 16:46:09 +0000</pubDate>
      <link>https://forem.com/aws-builders/using-systems-manager-to-automate-operational-tasks-across-aws-resources-2gb4</link>
      <guid>https://forem.com/aws-builders/using-systems-manager-to-automate-operational-tasks-across-aws-resources-2gb4</guid>
      <description>&lt;p&gt;If you’re an AWS administrator, you know that managing a big infrastructure with hundreds or thousands of instances can be a time-consuming and error-prone process. But what if you could automate these tasks and streamline your operations? &lt;strong&gt;&lt;em&gt;Amazon Systems Manager (SSM) provides a powerful solution, allowing you to automate a wide range of IT operations tasks&lt;/em&gt;&lt;/strong&gt;. In this article, we’ll focus on how to use Amazon Systems Manager (Run Command) to automate tasks across multiple ec2 instances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AuXnQfjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AI-VkAokilIdbqVRim_UD0Q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AuXnQfjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AI-VkAokilIdbqVRim_UD0Q.jpeg" alt="" width="750" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is Cloud Service?
&lt;/h3&gt;

&lt;p&gt;A Cloud Service is any system that provides on-demand availability of computer system resources, e.g; data storage and computing power, without direct active management by the user.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cloud is like an extra hard drive/computer that is somewhere away from you, which you can access anytime just by connecting to the Internet.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is AWS?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt; is an on-demand online platform by AMAZON that provides secured, scalable, cost-effective cloud services.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is EC2 &amp;amp; EC2 Instance?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EC2&lt;/strong&gt; is an on-demand computing service on the AWS cloud platform that allows users to rent virtual computers on which to run their computer applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EC2 Instance&lt;/strong&gt; is a virtual server in &lt;strong&gt;(EC2) *&lt;em&gt;for running applications on the Amazon Web Services *&lt;/em&gt;(AWS)&lt;/strong&gt; infrastructure.&lt;/p&gt;

&lt;p&gt;So, EC2 is a service provided by AWS, while an EC2 instance is a virtual machine launched using this service.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is a Systems Manager?
&lt;/h3&gt;

&lt;p&gt;AWS Systems Manager gives you visibility and control of your infrastructure on AWS. Systems Manager provides a unified user interface so you can view operational data from multiple AWS services and enables you to automate operational tasks including patching, configuration management, and deployment across your AWS resources which reduced the time and effort required to manage your infrastructure, while also reducing the risk of errors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p-4oOpUP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AiP1GK25W5nnh1nPPI4UlCQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p-4oOpUP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AiP1GK25W5nnh1nPPI4UlCQ.png" alt="photo credit: AWS" width="750" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Systems Manager Prerequisites for EC2 instances:
&lt;/h2&gt;

&lt;p&gt;To enable the AWS Systems Manager to manage your Amazon Elastic Compute Cloud (Amazon EC2) instances, we need to check the prerequisites first. Let’s go through the important points listed below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Configure the required AWS Identity and Access Management (IAM) roles with the AmazonEC2RoleforSSM policy attached.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify that your instances run a supported operating system like Amazon Linux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Amazon EC2 instances, you can create an IAM instance profile and attach it to your machines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install or verify the installation of the SSM Agent on each of your Managed instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Note: *&lt;/em&gt;&lt;em&gt;AWS Systems Manager Agent (SSM Agent) is preinstalled on some Amazon Machine Images (AMIs) provided by AWS.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For example, when you launch an Amazon Elastic Compute Cloud (Amazon EC2) instance created from an AMI with one of the following operating systems, you’ll likely find that the SSM Agent is already installed:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Amazon Linux Base AMIs dated 2017.09 and later&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Amazon Linux 2&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Amazon Linux 2 ECS-Optimized Base AMIs&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Amazon EKS-Optimized Amazon Linux AMIs&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;macOS 10.14.x (Mojave), 10.15.x (Catalina), and 11.x (Big Sur)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;SUSE Linux Enterprise Server (SLES) 12 and 15&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Ubuntu Server 16.04, 18.04, and 20.04&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Windows Server 2008–2012 R2 AMIs published in November 2016 or later&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Windows Server 2016, 2019, and 2022&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;To help you understand how to use Amazon System Manager (Run Command), I will guide you through a simple example and break down the steps involved.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The architecture
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;Step 1 — Choose a Systems Manager capability&lt;/strong&gt; — choose a systems manager capability depending on what action you want to perform on your resources. The diagram below shows the capabilities that IT administrators and DevOps personnel use to manage their applications and resources.&lt;/p&gt;

&lt;p&gt;And in this article, we are using “Run Command”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pPMWZw4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3476/1%2AnaTG2lk0yLJ03JNYms-haw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pPMWZw4p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3476/1%2AnaTG2lk0yLJ03JNYms-haw.png" alt="Photo Credit: AWS" width="880" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2— Create a set of EC2 instances&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create three (Amazon Linux 2) EC2 instances with the following tags (testing-1, testing-2, testing-3).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vUKn7zSy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2200/1%2AJg1o6NFihyb_bGpG09LB3g.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vUKn7zSy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2200/1%2AJg1o6NFihyb_bGpG09LB3g.jpeg" alt="" width="880" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3— Creating a Custom Command Document to create create a Directory with a file inside in all instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To demonstrate RUN command capability, search for Systems Manager and click to open it, scroll down and you will find the Run command then click on it.&lt;/p&gt;

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

&lt;p&gt;We are using a custom script to execute this task, and what the task would do is create a directory and also create a file inside the directory in all of the instances that we registered.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Note&lt;/em&gt;&lt;em&gt;: Depending on your use case, you can either use a shell script or AWS CLI Commands in the **SSM Run Command.&lt;/em&gt;**&lt;/p&gt;

&lt;p&gt;Below is a simple shell script we will use to run our task.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir name
cd name &amp;amp;&amp;amp; touch olumoko.text autotxt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Follow the below configurations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Put in your script for the task in the space for &lt;strong&gt;commands.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IA_-9MaR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AZaF_y-c9y2lzYtPePKTlcQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IA_-9MaR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AZaF_y-c9y2lzYtPePKTlcQ.png" alt="" width="880" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is where you get to register the instances that you want the systems manager to execute the task on, and you can use any of the 3 options below depending on your use case, but I chose “choose instances manually” for this simple tutorial.&lt;/p&gt;

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

&lt;p&gt;This page allows you to choose your output option, you can choose to send your output to an amazon s3 bucket by checking the “Enable an s3 bucket”&lt;/p&gt;

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

&lt;p&gt;Now click on run and it will show you the progress of the execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MlEsGbfc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2132/1%2A8nYIGJfkJxI2vUv6viK3HA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MlEsGbfc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2132/1%2A8nYIGJfkJxI2vUv6viK3HA.png" alt="" width="880" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Now that the systems manager said our task is successful we can connect to the instances one after the other to confirm if truly we have a Directory (name) and a file(olumoko) inside it.&lt;/p&gt;

&lt;p&gt;Go to Ec2 and click on test-1 instance then click on connect and connect using session manager.&lt;/p&gt;

&lt;p&gt;Now list the Directories and Files in the instance using the command &lt;strong&gt;ls -la&lt;/strong&gt; to check if there is a directory with “&lt;strong&gt;name&lt;/strong&gt;” then cd into the directory using the command &lt;strong&gt;cd name **to check if there is a file with the name **olumoko.txt&lt;/strong&gt; in there.&lt;/p&gt;

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

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

&lt;p&gt;So with this, you can make the systems manager perform your tasks for you on multiple instances with ease, and as a DevOps engineer, shortening the processes is one of the goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful Link To further dive into Amazon Systems Manager&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html"&gt;&lt;strong&gt;What is AWS Systems Manager?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Hope this was helpful.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Have a great day!❤️&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Installing Jenkins On AWS EC2 Instance: Simplified Guide For Beginners</title>
      <dc:creator>Olumoko Moses </dc:creator>
      <pubDate>Tue, 14 Mar 2023 16:24:42 +0000</pubDate>
      <link>https://forem.com/aries4491/-installing-jenkins-on-aws-ec2-instance-simplified-guide-for-beginners-3c3m</link>
      <guid>https://forem.com/aries4491/-installing-jenkins-on-aws-ec2-instance-simplified-guide-for-beginners-3c3m</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OudL1g-g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7GY1d3aejCs4oR52z8TAcw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OudL1g-g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7GY1d3aejCs4oR52z8TAcw.jpeg" alt="Credits: Image via official Amazon EC2 Services documentation" width="694" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey! Buddy, Since you are here, I want to believe that you already know what cloud and cloud computing are, so I will go straight to a quick introduction of &lt;strong&gt;Amazon’s Web Service(AWS), Elastic Compute Cloud(EC2) instance, and Jenkins .&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is AWS?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt; is an on-demand online platform by AMAZON that provides secured, scalable, cost-effective cloud services.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  What Is EC2 &amp;amp; EC2 Instance?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EC2&lt;/strong&gt; is an on-demand computing service on the AWS cloud platform that allows users to rent virtual computers on which to run their computer applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EC2 Instance&lt;/strong&gt; is a virtual server in (EC2)for running applications on the Amazon Web Services (AWS) infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is Jenkins?
&lt;/h3&gt;

&lt;p&gt;Jenkins is an open-source CI/CD tool that helps with automation and enables developers to reliably build, test, and deploy their software.&lt;/p&gt;

&lt;p&gt;Prerequisite: An AWS account. if you don't have one, you can register &lt;a href="https://portal.aws.amazon.com/billing/signup?nc2=h_ct&amp;amp;src=header_signup&amp;amp;redirect_url=https%3A%2F%2Faws.amazon.com%2Fregistration-confirmation#/start/email"&gt;here&lt;/a&gt;**.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's Begin 🤝
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Signing In and Accessing AWS Services
&lt;/h3&gt;

&lt;p&gt;Now log into your AWS account and click on Console Home Page to have access to all AWS services.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Launch EC2 Instance
&lt;/h3&gt;

&lt;p&gt;Now that you are on the console home page scroll down to see the list of AWS services and click on “&lt;strong&gt;Launch EC2 Machine&lt;/strong&gt;”.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  3. Name &amp;amp; Choose an Amazon Machine Image
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now it’s time to name/tag your instance, so put any name you want.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An &lt;strong&gt;Amazon Machine Image (AMI) **is **a template that contains a software configuration&lt;/strong&gt; (for example, an operating system, an application server, and applications). From an AMI, you launch an instance, which is a copy of the AMI running as a virtual server in the cloud.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now that you know what AMI is, go ahead and select **Amazon Linux, **this I strongly recommend because it is free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HOf70U9O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2704/1%2AuaC9NBKf-vkrjVb3X7RnDA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HOf70U9O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2704/1%2AuaC9NBKf-vkrjVb3X7RnDA.png" alt="" width="880" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Choose Instance Type
&lt;/h3&gt;

&lt;p&gt;Leave it as default and if you must change the settings, make sure to select a free tier eligible, so you don’t get charged.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  5. Create Key Pair
&lt;/h3&gt;

&lt;p&gt;A key pair, consisting of a public key and a private key, is a set of security credentials that you use to prove your identity when connecting to an Amazon EC2 instance.&lt;/p&gt;

&lt;p&gt;So now click on “Create new Key pair”.&lt;/p&gt;

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

&lt;p&gt;Enter a name for the key pair and click on “create key pair” and it will automatically be downloaded on your computer.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  6. Configuring Network Settings
&lt;/h3&gt;

&lt;p&gt;On the security network settings, Click on &lt;br&gt;
“edit”.&lt;/p&gt;

&lt;p&gt;Then navigate to the “inbound security group rules” page and click on &lt;strong&gt;add security group rule.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Now make the same configuration as shown below for your &lt;strong&gt;security group rule 2&lt;/strong&gt;, and then click on add security group rule again.&lt;/p&gt;

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

&lt;p&gt;Lastly, make the same configuration as below for your &lt;strong&gt;Security group rule 3&lt;/strong&gt;, and our network security configuration is complete.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  7. Add Storage
&lt;/h3&gt;

&lt;p&gt;Follow the below settings:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  8. Summary
&lt;/h3&gt;

&lt;p&gt;Now, this is the part you specify how many EC2 Instances you want to launch, I will only select 1 for this tutorial after that &lt;strong&gt;Click on Launch Instance.&lt;/strong&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  9. Installing Jenkins and Running Jenkins
&lt;/h3&gt;

&lt;p&gt;Now that your instance is running, click on your instance then click on &lt;strong&gt;connect&lt;/strong&gt; to access the **AWS **terminal where you will run the below commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Sg4ogshN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2698/1%2A7DeVAtD0duqWFDwcm5v1rw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Sg4ogshN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2698/1%2A7DeVAtD0duqWFDwcm5v1rw.png" alt="" width="880" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Completing the previous steps enables you to download and install Jenkins on AWS. To download and install Jenkins:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ensure that your software packages are up to date on your instance by using the following command to perform a quick software update:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo yum update –y&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the Jenkins repo using the following command:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[ec2-user ~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo &lt;a href="https://pkg.jenkins.io/redhat-stable/jenkins.repo"&gt;https://pkg.jenkins.io/redhat-stable/jenkins.repo&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Import a key file from Jenkins-CI to enable installation from the package:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[ec2-user ~]$ sudo rpm --import &lt;a href="https://pkg.jenkins.io/redhat-stable/jenkins.io.key"&gt;https://pkg.jenkins.io/redhat-stable/jenkins.io.key&lt;/a&gt;&lt;/p&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then this&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ec2-user ~]$ sudo yum upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install Java:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo amazon-linux-extras install java-openjdk11 -y&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Jenkins:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo yum install jenkins -y&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable the Jenkins service to start at boot:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo systemctl enable jenkins&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start Jenkins as a service:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo systemctl start jenkins&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check Jenkins Status:&lt;/p&gt;

&lt;p&gt;[ec2-user ~]$ sudo systemctl status jenkins&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  10. Configuring Jenkins
&lt;/h3&gt;

&lt;p&gt;Now that Jenkins is installed and running on your EC2 Instance.&lt;/p&gt;

&lt;p&gt;Connect to :8080 from your browser&lt;/p&gt;

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

&lt;p&gt;You will be able to access Jenkins through its management interface:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GHasBtiK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2478/1%2Asv2YAtI7qS7aSb9WdHyrIQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GHasBtiK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2478/1%2Asv2YAtI7qS7aSb9WdHyrIQ.png" alt="" width="880" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As prompted, enter the password found in &lt;strong&gt;/var/lib/jenkins/secrets/initialAdminPassword&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enter the below command in your terminal to display the password in &lt;strong&gt;/var/lib/jenkins/secrets/initialAdminPassword :&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ec2-user ~]$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Jenkins installation script directs you to the &lt;strong&gt;Customize Jenkins page&lt;/strong&gt;. Click &lt;strong&gt;Install suggested plugins&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the installation is complete, then &lt;strong&gt;Create First Admin User&lt;/strong&gt; will open. Enter your information, and then select &lt;strong&gt;Save and Continue&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And Boom! our Jenkins is now ready!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bUiv2ZDF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/5760/1%2ABFqeBiekt0YdM1ZE03BiOg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bUiv2ZDF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/5760/1%2ABFqeBiekt0YdM1ZE03BiOg.jpeg" alt="JENKINS DASHBOARD" width="880" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Creating A Simple Build Project On Jenkins
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;•Create a New Freestyle Project&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click on the &lt;strong&gt;New Item&lt;/strong&gt; link on the left-hand side of the Jenkins dashboard.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Name the new project in the &lt;strong&gt;Enter an item name&lt;/strong&gt; field and select the &lt;strong&gt;Freestyle project&lt;/strong&gt; type. Click &lt;strong&gt;OK&lt;/strong&gt; to continue.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Under the &lt;em&gt;General&lt;/em&gt; tab, add a project description that explains what your project is about in the &lt;strong&gt;Description&lt;/strong&gt; field.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;•Add A New Build Step&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Scroll down to the &lt;em&gt;Build&lt;/em&gt; section Open the &lt;strong&gt;Add build step&lt;/strong&gt; drop-down menu and select &lt;strong&gt;Execute Windows batch command&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Enter the commands you want to execute in the &lt;strong&gt;Command&lt;/strong&gt; field. For this tutorial, I will be using a simple Bash Script that generates Password:&lt;/p&gt;
&lt;h1&gt;
  
  
  ! /usr/bin/bash
&lt;/h1&gt;
&lt;h1&gt;
  
  
  NOTE: THIS IS A SIMPLE PASSWORD GENERATOR USING BASH SCRIPTING
&lt;/h1&gt;

&lt;p&gt;echo "THIS IS A SIMPLE PASSWORD GENERATOR"&lt;/p&gt;

&lt;p&gt;echo "Now enter the length of the password you want to generate:"&lt;/p&gt;

&lt;p&gt;read PASS_LENGTH&lt;/p&gt;

&lt;p&gt;for p in $(seq 1);&lt;/p&gt;

&lt;p&gt;do&lt;/p&gt;

&lt;p&gt;openssl rand -base64 48 | cut -c1-$PASS_LENGTH&lt;/p&gt;

&lt;p&gt;done&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Save&lt;/strong&gt; button to save changes to the project.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  •Build The Project
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Build Now&lt;/strong&gt; link on the left-hand side of the new project page.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Click the link to the latest project build in the &lt;em&gt;Build History&lt;/em&gt; section.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Console Output&lt;/strong&gt; link on the left-hand side to display the output for the commands you entered.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;The console output indicates that Jenkins is successfully executing the commands.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;em&gt;After this going through this tutorial, you should be able to launch an EC2 Instance, Install Jenkins on it and run your first Jenkins freestyle project.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Please leave a clap if you find this helpful.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
