<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harshal Jethwa</title>
    <description>The latest articles on DEV Community by Harshal Jethwa (@harshaljethwaa).</description>
    <link>https://dev.to/harshaljethwaa</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1106878%2F8780a9e3-e557-4c30-b2d1-23636314518c.jpg</url>
      <title>DEV Community: Harshal Jethwa</title>
      <link>https://dev.to/harshaljethwaa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshaljethwaa"/>
    <language>en</language>
    <item>
      <title>Introducing AetherKube Beta: A Smarter Approach to Kubernetes Troubleshooting</title>
      <dc:creator>Harshal Jethwa</dc:creator>
      <pubDate>Sat, 17 Oct 2026 06:32:07 +0000</pubDate>
      <link>https://dev.to/harshaljethwaa/introducing-aetherkube-beta-a-smarter-approach-to-kubernetes-troubleshooting-5895</link>
      <guid>https://dev.to/harshaljethwaa/introducing-aetherkube-beta-a-smarter-approach-to-kubernetes-troubleshooting-5895</guid>
      <description>&lt;p&gt;Kubernetes gives teams powerful tools for running distributed applications, but troubleshooting cluster issues can still require time-consuming investigation across pod events, logs, resource usage, and workload configuration.&lt;/p&gt;

&lt;p&gt;Understanding what went wrong is only part of the challenge. Teams also need to determine an appropriate response and verify whether the issue has actually been resolved.&lt;/p&gt;

&lt;p&gt;AetherKube is an AI-powered Kubernetes diagnostics and remediation platform designed to bring these steps into a more cohesive operational workflow.&lt;/p&gt;

&lt;p&gt;What is AetherKube?&lt;/p&gt;

&lt;p&gt;AetherKube focuses on helping DevOps engineers, Site Reliability Engineers (SREs), and platform engineering teams investigate Kubernetes problems and work through remediation workflows.&lt;/p&gt;

&lt;p&gt;The platform is built around three stages:&lt;/p&gt;

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

&lt;p&gt;Investigate cluster issues and surface actionable diagnostic information to help engineers understand what may be causing a problem.&lt;/p&gt;

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

&lt;p&gt;Work through remediation workflows with appropriate approval controls. The goal is to make operational actions more deliberate and easier to review.&lt;/p&gt;

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

&lt;p&gt;Check the outcome after remediation instead of assuming that executing a command automatically means the problem is fixed.&lt;/p&gt;

&lt;p&gt;Why this matters&lt;/p&gt;

&lt;p&gt;When a Kubernetes workload fails, engineers often need to inspect pod status, review events, examine container logs, check resource constraints, and determine whether a proposed fix is appropriate.&lt;/p&gt;

&lt;p&gt;A structured workflow can help make that investigation more consistent and keep the focus on evidence, operational safety, and recovery.&lt;/p&gt;

&lt;p&gt;AetherKube aims to support that workflow by bringing diagnostics, remediation, and verification together.&lt;/p&gt;

&lt;p&gt;Who is it for?&lt;/p&gt;

&lt;p&gt;AetherKube is intended for people working with Kubernetes, including:&lt;/p&gt;

&lt;p&gt;DevOps engineers&lt;/p&gt;

&lt;p&gt;Site Reliability Engineers&lt;/p&gt;

&lt;p&gt;Platform engineering teams&lt;/p&gt;

&lt;p&gt;Cloud and infrastructure engineers&lt;/p&gt;

&lt;p&gt;Developers responsible for Kubernetes workloads&lt;/p&gt;

&lt;p&gt;Explore the beta&lt;/p&gt;

&lt;p&gt;The AetherKube beta is now available.&lt;/p&gt;

&lt;p&gt;🌐 Website: &lt;a href="https://aetherkube.pages.dev/" rel="noopener noreferrer"&gt;https://aetherkube.pages.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📥 Beta and downloads: &lt;a href="https://aetherkube.pages.dev/download/" rel="noopener noreferrer"&gt;https://aetherkube.pages.dev/download/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Explore the platform, review the available documentation, and evaluate whether its workflow fits your Kubernetes environment.&lt;/p&gt;

&lt;p&gt;What's next?&lt;/p&gt;

&lt;p&gt;Kubernetes operations continue to evolve, and useful tooling should evolve with them. The focus is on making troubleshooting more understandable, remediation more controlled, and outcomes easier to verify.&lt;/p&gt;

&lt;p&gt;AetherKube — Intelligent Kubernetes Operations.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>cloudnative</category>
      <category>sre</category>
    </item>
    <item>
      <title>Why Exit Code 137 (OOMKilled) is Still Kubernetes' Biggest Headache — And How We Built an Autonomous Self-Healing Engine to Solve It</title>
      <dc:creator>Harshal Jethwa</dc:creator>
      <pubDate>Mon, 07 Sep 2026 09:13:54 +0000</pubDate>
      <link>https://dev.to/harshaljethwaa/why-exit-code-137-oomkilled-is-still-kubernetes-biggest-headache-and-how-we-built-an-13ob</link>
      <guid>https://dev.to/harshaljethwaa/why-exit-code-137-oomkilled-is-still-kubernetes-biggest-headache-and-how-we-built-an-13ob</guid>
      <description>&lt;p&gt;`# Why Exit Code 137 (OOMKilled) is Still Kubernetes' Biggest Headache — And How We Built an Autonomous Self-Healing Engine to Solve It&lt;/p&gt;

&lt;p&gt;It is 3:17 AM on a Tuesday. Your PagerDuty alarm sounds. &lt;/p&gt;

&lt;p&gt;You open your laptop, squint at a wall of red alerts, and run the ritual commands every SRE has memorized by heart:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
kubectl get pods -n production&lt;br&gt;
kubectl describe pod auth-service-789f5cb68-9vxz2 -n production&lt;br&gt;
kubectl logs auth-service-789f5cb68-9vxz2 --previous&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
And there it is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Last State:     Terminated&lt;br&gt;
  Reason:       OOMKilled&lt;br&gt;
  Exit Code:    137&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
For the next 45 minutes, you manually review memory consumption profiles, calculate container headroom, patch deployment specifications, and trigger rolling rollouts—all while production traffic is degraded.&lt;/p&gt;

&lt;p&gt;Despite a decade of Kubernetes evolution, Exit Code 137 remains one of the most common, disruptive, and manual incidents in cloud infrastructure.&lt;/p&gt;

&lt;p&gt;In this article, we'll examine why traditional Kubernetes monitoring fails at this, how Linux kernel memory pressure triggers eviction cascades, and how we engineered an autonomous, outbound-only control plane to detect and heal these failures automatically in seconds.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Anatomy of an OOMKill: What Actually Happens Under the Hood
When a container exceeds its memory ceiling, Kubernetes doesn't kill it directly—the Linux kernel OOM killer (cgroups) does.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kernel Cgroup Monitoring: The Linux kernel's memory controller monitors memory usage against memory.max (or memory.limit_in_bytes in cgroups v1).&lt;br&gt;
Signal 9 (SIGKILL): When a process breaches its allocation, the kernel immediately dispatches an uncatchable SIGKILL (Signal 9).&lt;br&gt;
Exit Code 137 Calculation: In Unix systems, when a process terminates due to a signal, its exit code is calculated as: $$\text{Exit Code} = 128 + \text{Signal Number} = 128 + 9 = 137$$&lt;br&gt;
CrashLoopBackOff Cascade: Kubelet restarts the container. If memory pressure recurs immediately, restart delays increase exponentially ($10s \to 20s \to 40s \to 300s$), locking the service into a prolonged downtime spiral.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why Conventional Dashboards Don't Fix the Problem
Today’s cloud monitoring landscape is saturated with dashboards: Grafana, Datadog, Lens, New Relic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While these tools are visually impressive, they suffer from a fundamental architectural limitation: they are purely passive.&lt;/p&gt;

&lt;p&gt;They scrape Prometheus metrics.&lt;br&gt;
They plot a red spike on a chart.&lt;br&gt;
They blast a webhook to your Slack channel.&lt;br&gt;
At 3 AM, an alert doesn’t resolve downtime; an engineered remediation does.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inverting the Paradigm: Autonomous In-Cluster Operations
When building AetherKube, we wanted to eliminate the manual troubleshooting loop entirely. Instead of relying on human intervention for predictable failures, the platform operates as an in-cluster autonomous platform engineer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Self-Healing Architecture&lt;br&gt;
┌────────────────────────┐         Outbound mTLS         ┌────────────────────────┐&lt;br&gt;
│      Target Cluster    │  ───────────────────────────► │     AetherKube Hub     │&lt;br&gt;
│  (aetherkube-agent)    │  ◄─────────────────────────── │     (Control Plane)    │&lt;br&gt;
└────────────────────────┘        Autonomous Patch       └────────────────────────┘&lt;br&gt;
          │                                                          │&lt;br&gt;
          ▼                                                          ▼&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;eBPF Event Tap                                         3. Deterministic Safety&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OOMKill Detection                                         &amp;amp; Blast Radius Limit&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Outbound-Only Mutual-TLS Architecture
Traditional remote cluster tooling requires opening inbound firewall ports or configuring public ingress load balancers. AetherKube operates entirely via outbound-only TLS 1.3 WebSocket streams. Your clusters remain isolated behind private VPCs, restrictive enterprise NATs, or egress proxies.&lt;/li&gt;
&lt;li&gt;Sub-Second Diagnostic Reasoning
The engine intercepts kubelet probe events and eBPF socket events. When an Exit Code 137 occurs:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It analyzes peak memory delta (e.g., Memory exceeded by 24MiB beyond 256MiB limit).&lt;br&gt;
It validates that the host node has sufficient capacity without risking node-level eviction.&lt;br&gt;
It dynamically computes the target limit (e.g., 512MiB) with a safe buffer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Non-Destructive Rolling Patch
Under strict configurable safety guardrails (maximum percentage of pods modified, cooldown backoffs, and immutable audit logging), AetherKube applies an automated resource patch and monitors the subsequent healthz probe.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;text&lt;br&gt;
[14:02:18] ALERT: CrashLoopBackOff in prod-ingress (Exit Code 137: OOMKilled)&lt;br&gt;
[14:02:19] SCAN: Memory limit exceeded by 24MiB. Host node headroom: 8.4GiB available.&lt;br&gt;
[14:02:20] PATCH: Applied limits.memory = 512MiB. Rolling restart verified.&lt;br&gt;
[14:02:22] RESOLVED: 4/4 Pods RUNNING (0 Restarts). SLA preserved at 99.99%.&lt;br&gt;
The entire cycle finishes in under 5 seconds—before an on-call engineer can even unlock their phone.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Try AetherKube Today
We have officially opened our public launchpad and documentation:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;👉 Official Website: &lt;a href="https://aetherkube.pages.dev" rel="noopener noreferrer"&gt;https://aetherkube.pages.dev&lt;/a&gt;&lt;br&gt;
👉 Documentation &amp;amp; Architecture Specs: &lt;a href="https://aetherkube.pages.dev/docs/" rel="noopener noreferrer"&gt;https://aetherkube.pages.dev/docs/&lt;/a&gt;&lt;br&gt;
👉 Follow our engineering updates on LinkedIn: AetherKube on LinkedIn&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hosting Static Website Using AWS S3, ACM, CloudFront and AWS CodePipeline</title>
      <dc:creator>Harshal Jethwa</dc:creator>
      <pubDate>Fri, 23 Jun 2023 06:27:53 +0000</pubDate>
      <link>https://dev.to/harshaljethwaa/hosting-static-website-using-aws-s3-acm-cloudfront-and-aws-codepipeline-4g9e</link>
      <guid>https://dev.to/harshaljethwaa/hosting-static-website-using-aws-s3-acm-cloudfront-and-aws-codepipeline-4g9e</guid>
      <description>&lt;h1&gt;
  
  
  10WeeksOfCloudOps
&lt;/h1&gt;

&lt;p&gt;Introduction of AWS Services that we are going to use :&lt;/p&gt;

&lt;p&gt;AWS S3 (Simple Storage Service):&lt;/p&gt;

&lt;p&gt;AWS S3 is a highly scalable, reliable, and secure object storage service that allows you to store and retrieve any amount of data from anywhere on the web. S3 provides developers with simple API access to the same scalable storage infrastructure that Amazon.com uses to run its global e-commerce network. It is ideal for hosting static websites, storing backups, and archiving data.&lt;/p&gt;

&lt;p&gt;AWS ACM (AWS Certificate Manager):&lt;/p&gt;

&lt;p&gt;AWS ACM is a service that makes it easy for you to provision, manage, and deploy SSL/TLS certificates for use with AWS services. It removes the time-consuming manual process of purchasing, uploading, and renewing SSL/TLS certificates. ACM provides you with a simple interface for requesting and managing certificates, as well as for configuring SSL/TLS encryption for your web applications running on AWS.&lt;/p&gt;

&lt;p&gt;AWS CloudFront:&lt;/p&gt;

&lt;p&gt;AWS CloudFront is a content delivery network (CDN) that securely delivers data, videos, applications, and APIs to customers globally, with low latency, high transfer speeds, and no minimum usage commitments. It integrates with other AWS services like S3 and EC2, enabling you to distribute content stored in S3 buckets or EC2 instances to customers worldwide.&lt;/p&gt;

&lt;p&gt;AWS CodePipeline:&lt;/p&gt;

&lt;p&gt;AWS CodePipeline is a fully managed continuous delivery service that helps you automate your software release process. With CodePipeline, you can model, visualize, and automate the steps required to release your software, such as building, testing, and deploying code changes. It integrates with other AWS services, such as CodeCommit, CodeBuild, and CodeDeploy, allowing you to create continuous delivery pipelines that are scalable, resilient, and easy to manage.&lt;/p&gt;

&lt;p&gt;Setup to Host Static Website Using AWS S3, ACM, CloudFront and AWS CodePipeline :&lt;/p&gt;

&lt;p&gt;Setup 1 :&lt;/p&gt;

&lt;p&gt;Create An AWS S3 Bucket :&lt;/p&gt;

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

&lt;p&gt;Upload the website files to bucket:&lt;/p&gt;

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

&lt;p&gt;Block Public Access of S3 Bucket for Security :&lt;/p&gt;

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

&lt;p&gt;Select an Option of Static Website Hosting and write index file name :&lt;/p&gt;

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

&lt;p&gt;Access the Website using link of Static Website you will not get anything.&lt;/p&gt;

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

&lt;p&gt;Setup 2:&lt;/p&gt;

&lt;p&gt;Now, Go to CloudFront and Create distribution:&lt;/p&gt;

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

&lt;p&gt;Create Distribution and select WAF option&lt;/p&gt;

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

&lt;p&gt;Setup 3 :&lt;/p&gt;

&lt;p&gt;Then, go to ACM(AWS Certificate Manager) validate CName and CValue of your Domain&lt;/p&gt;

&lt;p&gt;Add CName and CValue of your AWS cloudfront to your dmain CName and HostName&lt;/p&gt;

&lt;p&gt;Now, copy your distribution domain name and paste it to url. you will see your website&lt;/p&gt;

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

&lt;p&gt;Setup 3 :&lt;/p&gt;

&lt;p&gt;Go to AWS CodePipeline&lt;/p&gt;

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

&lt;p&gt;Create Pipeline and name it and connect with the Github&lt;/p&gt;

&lt;p&gt;Select Git Repo and Branch&lt;/p&gt;

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

&lt;p&gt;Build it and you will see Done Screen&lt;/p&gt;

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

&lt;p&gt;Now to go to your buckets Invalidation and create invalidation&lt;/p&gt;

&lt;p&gt;Now, your Static Website is hosted using AWS S3, ACM, CloudFront and AWS CodePipeline.&lt;/p&gt;

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

&lt;p&gt;Follow me :&lt;/p&gt;

&lt;p&gt;Linkedin : &lt;a href="https://www.linkedin.com/in/harshaljethwa/"&gt;https://www.linkedin.com/in/harshaljethwa/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/HARSHALJETHWA19/"&gt;https://github.com/HARSHALJETHWA19/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitter: &lt;a href="https://twitter.com/harshaljethwaa"&gt;https://twitter.com/harshaljethwaa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank You!!!&lt;/p&gt;

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