<?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: Shashank Gupta</title>
    <description>The latest articles on DEV Community by Shashank Gupta (@shashank-2310).</description>
    <link>https://dev.to/shashank-2310</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%2F3729846%2F302febf8-6b39-4de8-a535-80008704684a.jpg</url>
      <title>DEV Community: Shashank Gupta</title>
      <link>https://dev.to/shashank-2310</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shashank-2310"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Shashank Gupta</dc:creator>
      <pubDate>Sat, 24 Jan 2026 09:52:06 +0000</pubDate>
      <link>https://dev.to/shashank-2310/-54fi</link>
      <guid>https://dev.to/shashank-2310/-54fi</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/shashank-2310" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3729846%2F302febf8-6b39-4de8-a535-80008704684a.jpg" alt="shashank-2310"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/shashank-2310/converting-an-unencrypted-ebs-volume-to-an-encrypted-one-in-aws-a-step-by-step-guide-4b1h" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Converting an Unencrypted EBS Volume to an Encrypted One in AWS: A Step-by-Step Guide&lt;/h2&gt;
      &lt;h3&gt;Shashank Gupta ・ Jan 24&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cloud&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#security&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>devops</category>
      <category>cloud</category>
      <category>aws</category>
      <category>security</category>
    </item>
    <item>
      <title>Converting an Unencrypted EBS Volume to an Encrypted One in AWS: A Step-by-Step Guide</title>
      <dc:creator>Shashank Gupta</dc:creator>
      <pubDate>Sat, 24 Jan 2026 09:19:59 +0000</pubDate>
      <link>https://dev.to/shashank-2310/converting-an-unencrypted-ebs-volume-to-an-encrypted-one-in-aws-a-step-by-step-guide-4b1h</link>
      <guid>https://dev.to/shashank-2310/converting-an-unencrypted-ebs-volume-to-an-encrypted-one-in-aws-a-step-by-step-guide-4b1h</guid>
      <description>&lt;h2&gt;
  
  
  🔐 Encrypt Existing Unencrypted EBS Volumes &lt;strong&gt;Without Data Loss&lt;/strong&gt; (The AWS Way)
&lt;/h2&gt;

&lt;p&gt;Encryption at rest is a &lt;strong&gt;fundamental AWS security control&lt;/strong&gt;.&lt;br&gt;
Yet in reality, EC2 instances often still run with &lt;strong&gt;unencrypted EBS volumes&lt;/strong&gt; — especially in sandbox accounts, legacy setups, or “just-testing” environments that accidentally made it to prod. 😬&lt;/p&gt;

&lt;p&gt;Here’s the catch:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;❌ &lt;strong&gt;AWS does NOT support in-place encryption for EBS volumes&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So… how do you encrypt an existing volume &lt;strong&gt;without losing data&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;This article walks through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ The &lt;strong&gt;AWS-recommended approach&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🛠️ A &lt;strong&gt;manual step-by-step process&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🤖 How to &lt;strong&gt;automate detection &amp;amp; remediation&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⚠️ A &lt;strong&gt;critical AWS limitation you must know&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🚨 Key AWS Constraint (Very Important)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Amazon EBS volumes cannot be encrypted in-place.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;strong&gt;only supported method&lt;/strong&gt; is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unencrypted Volume → Snapshot → Encrypted Snapshot → New Encrypted Volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;Data volumes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;💽 &lt;strong&gt;Root volumes&lt;/strong&gt; (requires downtime)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;root volumes&lt;/strong&gt;, the EC2 instance &lt;strong&gt;must be stopped&lt;/strong&gt; before detaching the volume. The steps are identical — just riskier.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Environment Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  EC2 Instance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AMI:&lt;/strong&gt; Ubuntu&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instance Type:&lt;/strong&gt; &lt;code&gt;t3.micro&lt;/code&gt; (or your choice)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tags (recommended):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Name = ebs-encryption-poc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Environment = test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  EBS Volume
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Size:&lt;/strong&gt; 4 GiB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; &lt;code&gt;gp3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encryption:&lt;/strong&gt; Disabled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability Zone:&lt;/strong&gt; Must match EC2 AZ&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🪜 Step-by-Step: Encrypt an Existing EBS Volume
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Launch an EC2 Instance&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Create an EC2 instance with the configuration above.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Create an Unencrypted EBS Volume&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From &lt;strong&gt;EC2 → Volumes → Create volume&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Size: &lt;code&gt;4 GiB&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Type: &lt;code&gt;gp3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Encryption: ❌ Disabled&lt;/li&gt;
&lt;li&gt;AZ: Same as EC2&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Name = unencrypted-ebs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Environment = test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Attach this volume to the EC2 instance.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Connect to EC2 &amp;amp; Create a Filesystem&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-i&lt;/span&gt; key.pem ubuntu@&amp;lt;public-ip&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Optional) Change hostname:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;hostnamectl set-hostname ebs-demo
&lt;span class="nb"&gt;exec &lt;/span&gt;bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Identify the volume and format it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkfs &lt;span class="nt"&gt;-t&lt;/span&gt; xfs /dev/nvme1n1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mount it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; /data
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount /dev/nvme1n1 /data
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4: Add Test Data&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /data
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello Unencrypted World!!"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee &lt;/span&gt;hello.txt
&lt;span class="nb"&gt;cat &lt;/span&gt;hello.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Step 5 (Optional): Resize the EBS Volume&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From AWS Console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select volume → &lt;strong&gt;Modify volume&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Increase size (e.g. &lt;code&gt;4 GiB → 6 GiB&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ You can only &lt;strong&gt;increase&lt;/strong&gt; EBS volume size.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 6: Extend the Filesystem (Only If Resized)&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;xfs_growfs &lt;span class="nt"&gt;-d&lt;/span&gt; /data
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; /data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Step 7: Create a Snapshot (Unencrypted)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From &lt;strong&gt;EC2 → Volumes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select unencrypted volume&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actions → Create snapshot&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This preserves &lt;strong&gt;all existing data&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 8: Copy Snapshot With Encryption Enabled&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From &lt;strong&gt;EBS → Snapshots&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select snapshot → &lt;strong&gt;Copy snapshot&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ Enable encryption&lt;/li&gt;
&lt;li&gt;KMS key: &lt;code&gt;aws/ebs&lt;/code&gt; (default)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 9: Create an Encrypted Volume&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;From the &lt;strong&gt;encrypted snapshot&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create volume&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add tags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Name = encrypted-ebs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Environment = test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Step 10: Replace the Volume&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Attach the encrypted volume to the EC2 instance.&lt;/p&gt;

&lt;p&gt;On EC2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk
&lt;span class="nb"&gt;cd
sudo &lt;/span&gt;umount /data
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount /dev/nvme2n1 /data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /data
&lt;span class="nb"&gt;cat&lt;/span&gt; /data/hello.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix permissions if needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nv"&gt;$USER&lt;/span&gt; /data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ &lt;strong&gt;Data persists&lt;/strong&gt;&lt;br&gt;
✅ &lt;strong&gt;Volume is encrypted at rest&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Automation Ideas (Because Manual ≠ Scalable)
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Idea 1: EventBridge + Lambda (Auto-Remediation)&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;EventBridge detects unencrypted volume creation&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lambda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates snapshot&lt;/li&gt;
&lt;li&gt;Encrypts it&lt;/li&gt;
&lt;li&gt;Replaces the volume&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;SNS sends notification&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Zero manual effort&lt;/li&gt;
&lt;li&gt;Real-time remediation&lt;/li&gt;
&lt;li&gt;Audit-friendly&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Idea 2: Scheduled Lambda Scan&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;EventBridge cron (e.g. every 6 hours)&lt;/li&gt;
&lt;li&gt;Lambda scans all attached volumes&lt;/li&gt;
&lt;li&gt;Replaces unencrypted volumes&lt;/li&gt;
&lt;li&gt;Sends report&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Simple&lt;/li&gt;
&lt;li&gt;Lightweight&lt;/li&gt;
&lt;li&gt;Ideal for legacy environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Idea 3: Prevent It at Account Level (Best Practice)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Enable &lt;strong&gt;EBS Encryption by Default&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;EC2 → Settings → &lt;strong&gt;Enable EBS encryption by default&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🔥 This ensures &lt;strong&gt;all future volumes are encrypted automatically&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Best Strategy: Defense in Depth
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Prevent&lt;/strong&gt;&lt;br&gt;
→ Enable EBS encryption by default&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Detect &amp;amp; Remediate (Real-Time)&lt;/strong&gt;&lt;br&gt;
→ EventBridge + Lambda&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Audit Regularly&lt;/strong&gt;&lt;br&gt;
→ Scheduled Lambda scans&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Lessons Learned &amp;amp; Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;❌ You &lt;strong&gt;cannot&lt;/strong&gt; enable encryption on an existing volume&lt;/li&gt;
&lt;li&gt;❌ AWS does &lt;strong&gt;not&lt;/strong&gt; support in-place encryption&lt;/li&gt;
&lt;li&gt;✅ Snapshots are the &lt;strong&gt;only safe path&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ Data volumes can be auto-remediated&lt;/li&gt;
&lt;li&gt;⚠️ Root volumes always require downtime&lt;/li&gt;
&lt;li&gt;🧠 Prevention &amp;gt; Remediation&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Wrap Up
&lt;/h2&gt;

&lt;p&gt;This workflow is &lt;strong&gt;mandatory AWS knowledge&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For real-world production systems&lt;/li&gt;
&lt;li&gt;For security reviews&lt;/li&gt;
&lt;li&gt;For AWS interviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding &lt;em&gt;why&lt;/em&gt; AWS enforces this model gives you a deeper appreciation of how AWS balances &lt;strong&gt;security, durability, and safety&lt;/strong&gt; — even when it’s inconvenient.&lt;/p&gt;

&lt;p&gt;If you live in the AWS ecosystem, &lt;strong&gt;this is one of those “know it cold” workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Happy encrypting 🔐🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>aws</category>
      <category>security</category>
    </item>
  </channel>
</rss>
