<?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: sourav chakraborty</title>
    <description>The latest articles on Forem by sourav chakraborty (@devopssourav).</description>
    <link>https://forem.com/devopssourav</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%2F889808%2Fbbba2bbe-531f-410f-8340-6d7a212ab398.png</url>
      <title>Forem: sourav chakraborty</title>
      <link>https://forem.com/devopssourav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devopssourav"/>
    <language>en</language>
    <item>
      <title>🔐 OWASP Top 10 in AWS: A Practical Security Series for Builders</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Thu, 09 Apr 2026 18:49:29 +0000</pubDate>
      <link>https://forem.com/devopssourav/owasp-top-10-in-aws-a-practical-security-series-for-builders-3199</link>
      <guid>https://forem.com/devopssourav/owasp-top-10-in-aws-a-practical-security-series-for-builders-3199</guid>
      <description>&lt;p&gt;Most security breaches don’t happen because attackers are geniuses.&lt;br&gt;
They happen because:&lt;/p&gt;

&lt;p&gt;Access control is missing one check&lt;br&gt;
Encryption is configured “later”&lt;br&gt;
Input validation is assumed, not enforced&lt;/p&gt;

&lt;p&gt;The OWASP Top 10 documents these exact failures—the most common, most dangerous application security risks seen across the internet.&lt;br&gt;
This series is about understanding them deeply and fixing them practically, specifically in AWS‑based architectures.&lt;/p&gt;

&lt;p&gt;🎯 What This Series Is (and Isn’t)&lt;br&gt;
✅ What You’ll Get&lt;/p&gt;

&lt;p&gt;Clear explanations of each OWASP Top 10 category&lt;br&gt;
Realistic AWS examples (API Gateway, ALB, ECS, Lambda, WAF)&lt;br&gt;
Practical mitigation strategies you can apply immediately&lt;br&gt;
Security reasoning that developers, DevOps, and architects can align on&lt;/p&gt;

&lt;p&gt;❌ What You Won’t Get&lt;/p&gt;

&lt;p&gt;Vendor fluff&lt;br&gt;
Overly academic theory&lt;br&gt;
Fear‑driven security talk&lt;br&gt;
“Enable this checkbox and you’re done” advice&lt;/p&gt;

&lt;p&gt;This is about how vulnerabilities actually happen in real systems—and how to stop them.&lt;/p&gt;

&lt;p&gt;🧭 Why the OWASP Top 10 Still Matters&lt;br&gt;
The OWASP Top 10 is more than a list. It’s the common language of application security.&lt;br&gt;
It matters because it:&lt;/p&gt;

&lt;p&gt;🛠 Aligns Engineering &amp;amp; Security&lt;br&gt;
Tools like AWS WAF, F5, Burp Suite, and SAST/DAST scanners reference OWASP risks directly.&lt;/p&gt;

&lt;p&gt;📜 Defines Compliance Baselines&lt;br&gt;
Standards like SOC 2, PCI DSS, HIPAA, and ISO 27001 map directly to OWASP categories.&lt;/p&gt;

&lt;p&gt;🚨 Focuses on Real‑World Breaches&lt;br&gt;
Addressing the OWASP Top 10 mitigates the majority of web application attacks seen in production.&lt;/p&gt;

&lt;p&gt;If you build or operate applications, you’re already dealing with OWASP—whether you realize it or not.&lt;/p&gt;

&lt;p&gt;🗺️ The 10‑Day Roadmap&lt;br&gt;
Each post covers one OWASP category per day, with hands‑on cloud context.&lt;/p&gt;

&lt;p&gt;✅ Day 1: Broken Access Control (A01:2021)&lt;br&gt;
🔐 Day 2: Cryptographic Failures&lt;br&gt;
💉 Day 3: Injection&lt;br&gt;
🔄 Day 4: Insecure Design&lt;br&gt;
⚙️ Day 5: Security Misconfiguration&lt;br&gt;
🧩 Day 6: Vulnerable &amp;amp; Outdated Components&lt;br&gt;
🔑 Day 7: Identification &amp;amp; Authentication Failures&lt;br&gt;
📊 Day 8: Software &amp;amp; Data Integrity Failures&lt;br&gt;
📝 Day 9: Security Logging &amp;amp; Monitoring Failures&lt;br&gt;
🌐 Day 10: Server‑Side Request Forgery (SSRF)&lt;/p&gt;

&lt;p&gt;Each post stands alone—but together they form a complete security mindset.&lt;/p&gt;

&lt;p&gt;☁️ AWS‑First, Vendor‑Aware&lt;br&gt;
Examples and mitigations will focus on:&lt;/p&gt;

&lt;p&gt;AWS WAF &amp;amp; Shield&lt;br&gt;
API Gateway&lt;br&gt;
Application Load Balancers&lt;br&gt;
ECS, EKS, and Lambda&lt;br&gt;
IAM, CloudWatch, and CloudTrail&lt;/p&gt;

&lt;p&gt;Where useful, I’ll also reference advanced WAFs (like F5) to show how defense‑in‑depth actually works in real enterprises.&lt;/p&gt;

&lt;p&gt;👥 Who This Series Is For&lt;/p&gt;

&lt;p&gt;Backend &amp;amp; frontend developers&lt;br&gt;
Cloud &amp;amp; DevOps engineers&lt;br&gt;
Architects responsible for secure design&lt;br&gt;
Security engineers working with product teams&lt;br&gt;
Anyone tired of security advice that doesn’t map to real systems&lt;/p&gt;

&lt;p&gt;If you’ve ever said:&lt;/p&gt;

&lt;p&gt;“We’ll fix security later…”&lt;/p&gt;

&lt;p&gt;This series is for you.&lt;/p&gt;

&lt;p&gt;📌 Follow the series to get each post as it drops&lt;br&gt;
Let’s build systems that are harder to break—and easier to defend.&lt;/p&gt;

</description>
      <category>cloudsecurity</category>
      <category>aws</category>
      <category>cybersecurity</category>
      <category>owasp</category>
    </item>
    <item>
      <title># 🧹 Build an AWS Orphan Resource Cleaner with Go (Step-by-Step + Visual Guide)</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sun, 22 Mar 2026 18:45:47 +0000</pubDate>
      <link>https://forem.com/aws-builders/-build-an-aws-orphan-resource-cleaner-with-go-step-by-step-visual-guide-g1</link>
      <guid>https://forem.com/aws-builders/-build-an-aws-orphan-resource-cleaner-with-go-step-by-step-visual-guide-g1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;💸 Stop wasting money on unused AWS resources — automate cleanup with Go&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🚀 Introduction
&lt;/h2&gt;

&lt;p&gt;Cloud environments grow fast… and so do unused resources.&lt;/p&gt;

&lt;p&gt;Unattached EBS volumes, unused Elastic IPs — they sit quietly and &lt;strong&gt;increase your AWS bill every month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll build a &lt;strong&gt;real-world Orphan Resource Cleaner&lt;/strong&gt; using Go and the AWS SDK for Go v2.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Are Orphan Resources?
&lt;/h2&gt;

&lt;p&gt;Orphan resources are:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AWS resources that are no longer in use but still cost money&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Examples:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🪫 Unattached EBS volumes&lt;/li&gt;
&lt;li&gt;🌐 Unassociated Elastic IPs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🖼️ Architecture Overview
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EventBridge (Scheduler)
        ↓
Go Program (Scanner)
        ↓
AWS APIs (EC2)
        ↓
Detect Orphan Resources
        ↓
Alert / Delete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ Why Use Go for This?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🟢 Single Binary Deployment
&lt;/h3&gt;

&lt;p&gt;No runtime dependency → perfect for automation &amp;amp; Lambda&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ High Performance
&lt;/h3&gt;

&lt;p&gt;Fast execution for large AWS environments&lt;/p&gt;

&lt;h3&gt;
  
  
  🧵 Built-in Concurrency
&lt;/h3&gt;

&lt;p&gt;Scan multiple regions in parallel using goroutines&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Safer Automation
&lt;/h3&gt;

&lt;p&gt;Strong typing → reduces accidental deletion risks&lt;/p&gt;




&lt;h2&gt;
  
  
  🟢 Go Basics (Quick Primer)
&lt;/h2&gt;

&lt;p&gt;If you're new to Go, here’s what you need:&lt;/p&gt;

&lt;h3&gt;
  
  
  Hello World
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"fmt"&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, Go!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"AWS Cleaner"&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Error Handling
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Error:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ Step-by-Step Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Install Go
&lt;/h3&gt;

&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If not installed:&lt;br&gt;
👉 &lt;a href="https://go.dev/dl/" rel="noopener noreferrer"&gt;https://go.dev/dl/&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2️⃣ Create Project
&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;mkdir &lt;/span&gt;orphan-cleaner
&lt;span class="nb"&gt;cd &lt;/span&gt;orphan-cleaner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3️⃣ Initialize Module
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go mod init orphan-cleaner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4️⃣ Add Code
&lt;/h3&gt;

&lt;p&gt;Create file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste the Orphan Cleaner code.&lt;/p&gt;




&lt;h3&gt;
  
  
  5️⃣ Install Dependencies
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go mod tidy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  6️⃣ Configure AWS Credentials
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;p&gt;OR&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;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;xxx
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;xxx
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_REGION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ap-south-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  7️⃣ Run the Program
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖼️ Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;🔍 Discovering regions...

🌍 Scanning region: ap-south-1
🌐 [ap-south-1] Orphan Elastic IP: 13.xxx.xxx.xxx

🌍 Scanning region: us-east-1
🌐 [us-east-1] Orphan Elastic IP: 100.23.233.31

📊 Summary Report
-------------------------
🪫 Total Orphan EBS Volumes: 2
🌐 Total Orphan Elastic IPs: 3


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

&lt;/div&gt;



&lt;p&gt;&lt;a href="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%2Farticles%2F20yadr7var3obaqww5pn.png" class="article-body-image-wrapper"&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%2Farticles%2F20yadr7var3obaqww5pn.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Safety First
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔒 Always Start with Dry Run
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;autoDelete&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🏷️ Use Tags to Protect Resources
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;Keep&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;Critical&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ⏳ Add Grace Period
&lt;/h3&gt;

&lt;p&gt;Only delete resources older than 7 days.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔔 Add Alerts (Optional)
&lt;/h2&gt;

&lt;p&gt;Use Amazon SNS to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send email alerts&lt;/li&gt;
&lt;li&gt;Notify before deletion&lt;/li&gt;
&lt;li&gt;Integrate with Slack&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 Real-World Impact
&lt;/h2&gt;

&lt;p&gt;This simple tool can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save &lt;strong&gt;real money 💰&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Improve AWS hygiene&lt;/li&gt;
&lt;li&gt;Reduce attack surface&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤔 Why Not Python?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Go&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Single binary&lt;/td&gt;
&lt;td&gt;Runtime needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Concurrency&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lambda cold start&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;You’ve built a &lt;strong&gt;production-relevant AWS automation tool&lt;/strong&gt; using Go.&lt;/p&gt;

&lt;p&gt;This isn’t just a demo — it’s something:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevOps teams use daily&lt;/li&gt;
&lt;li&gt;FinOps teams rely on&lt;/li&gt;
&lt;li&gt;Companies build internally&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Next Steps
&lt;/h2&gt;

&lt;p&gt;Want to take it further?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔔 Add SNS alerts&lt;/li&gt;
&lt;li&gt;⚡ Add parallel scanning&lt;/li&gt;
&lt;li&gt;🌍 Multi-account support&lt;/li&gt;
&lt;li&gt;☁️ Deploy as Lambda&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Final Thought
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Unused cloud resources are silent money leaks — automation is the only scalable fix.”&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>automation</category>
      <category>aws</category>
      <category>go</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🔐 TLS Encryption &amp; Decryption in AWS Network Firewall</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sun, 22 Feb 2026 16:28:07 +0000</pubDate>
      <link>https://forem.com/aws-builders/tls-encryption-decryption-in-aws-network-firewall-3olb</link>
      <guid>https://forem.com/aws-builders/tls-encryption-decryption-in-aws-network-firewall-3olb</guid>
      <description>&lt;p&gt;Today, over 90% of internet traffic uses TLS (HTTPS). While this protects confidentiality, it also prevents traditional firewalls from seeing what’s inside the traffic.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;TLS inspection in AWS Network Firewall&lt;/strong&gt; becomes critical.&lt;/p&gt;

&lt;p&gt;In this article, we’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why TLS inspection is required&lt;/li&gt;
&lt;li&gt;How TLS normally works&lt;/li&gt;
&lt;li&gt;How AWS Network Firewall performs TLS decryption &amp;amp; inspection&lt;/li&gt;
&lt;li&gt;Architecture design (EC2 → Firewall → NAT → IGW)&lt;/li&gt;
&lt;li&gt;Certificate requirements&lt;/li&gt;
&lt;li&gt;Common deployment mistakes&lt;/li&gt;
&lt;li&gt;Best practices&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚨 Why TLS Inspection Is Required
&lt;/h2&gt;

&lt;p&gt;Without TLS inspection, a firewall can only see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source IP&lt;/li&gt;
&lt;li&gt;Destination IP&lt;/li&gt;
&lt;li&gt;Port (443)&lt;/li&gt;
&lt;li&gt;Limited SNI/domain info&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it &lt;strong&gt;cannot see&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Malware downloads&lt;/li&gt;
&lt;li&gt;Command &amp;amp; Control traffic&lt;/li&gt;
&lt;li&gt;Data exfiltration&lt;/li&gt;
&lt;li&gt;Exploit payloads&lt;/li&gt;
&lt;li&gt;Unauthorized SaaS usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Encrypted traffic becomes a blind spot.&lt;/p&gt;

&lt;p&gt;TLS inspection restores visibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔎 How TLS Normally Works
&lt;/h2&gt;

&lt;p&gt;Before encryption begins, two steps happen:&lt;/p&gt;

&lt;h2&gt;
  
  
  1️⃣ TCP 3-Way Handshake
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client → SYN → Server
Server → SYN-ACK → Client
Client → ACK → Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TCP session established.&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ TLS Handshake
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ClientHello
ServerHello
Certificate exchange
Key negotiation
Encrypted session established
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After this, traffic becomes encrypted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client ⇄ Encrypted ⇄ Server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A traditional firewall cannot inspect payload contents.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 How TLS Inspection Works in AWS Network Firewall
&lt;/h2&gt;

&lt;p&gt;When TLS inspection is enabled, the firewall becomes a proxy.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 ⇄ Google
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We now have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 ⇄ Firewall ⇄ Google
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The firewall acts as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt; toward EC2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client&lt;/strong&gt; toward Google&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Packet Flow Example (Outbound HTTPS)
&lt;/h2&gt;

&lt;p&gt;Architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Private Subnet (EC2)
        ↓
AWS Network Firewall
        ↓
NAT Gateway
        ↓
Internet Gateway
        ↓
Internet (google.com)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Return traffic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet → IGW → NAT → Firewall → EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step-by-Step Flow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ EC2 sends HTTPS request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 → Firewall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2️⃣ Firewall intercepts TLS handshake
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Receives ClientHello&lt;/li&gt;
&lt;li&gt;Creates second TLS session to Google&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3️⃣ Firewall validates certificate
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;OCSP / CRL check&lt;/li&gt;
&lt;li&gt;Certificate inspection&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4️⃣ Firewall decrypts traffic
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Applies IPS rules&lt;/li&gt;
&lt;li&gt;Applies domain filtering&lt;/li&gt;
&lt;li&gt;Checks for malware&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5️⃣ Firewall re-encrypts traffic
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Firewall → NAT → Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔑 Certificate Requirements
&lt;/h2&gt;

&lt;p&gt;TLS inspection requires:&lt;/p&gt;

&lt;h2&gt;
  
  
  1️⃣ Inspection Certificate
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stored in AWS Certificate Manager&lt;/li&gt;
&lt;li&gt;Presented by firewall to clients&lt;/li&gt;
&lt;li&gt;Must be trusted by EC2/workloads&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2️⃣ Revocation Policy
&lt;/h2&gt;

&lt;p&gt;Best practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GOOD → Allow
UNKNOWN → Allow
REVOKED → Reject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Strictly rejecting UNKNOWN often causes outages.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Cloudwatch logs for Unknown revocation -&amp;gt; passed traffic.&lt;/code&gt;&lt;br&gt;
&lt;a href="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%2Farticles%2Ffmdxdgfehp9pp8qd76b8.png" class="article-body-image-wrapper"&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%2Farticles%2Ffmdxdgfehp9pp8qd76b8.png" alt="Cloudwatch logs" width="800" height="662"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🧱 Required Configuration Building Blocks
&lt;/h2&gt;

&lt;p&gt;To make TLS inspection work correctly:&lt;/p&gt;
&lt;h3&gt;
  
  
  ✅ 1) Routing (Symmetric)
&lt;/h3&gt;

&lt;p&gt;Private subnet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.0.0.0/0 → Firewall endpoint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NAT subnet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Private subnet CIDR → Firewall endpoint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Return traffic must pass through firewall.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ 2) Layer 4 Rule (TCP 443)
&lt;/h3&gt;

&lt;p&gt;You must allow TCP first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pass tcp $HOME_NET any -&amp;gt; $EXTERNAL_NET 443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TLS runs on top of TCP.&lt;/p&gt;




&lt;h3&gt;
  
  
  ✅ 3) TLS Rule (Layer 7)
&lt;/h3&gt;

&lt;p&gt;Then allow TLS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pass tls $HOME_NET any -&amp;gt; $EXTERNAL_NET 443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  ✅ 4) Default Action
&lt;/h3&gt;

&lt;p&gt;Recommended:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Drop everything else
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Sample Firewall Policy&lt;/code&gt;&lt;br&gt;
&lt;a href="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%2Farticles%2Frm9x4ryumu782021xr07.png" class="article-body-image-wrapper"&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%2Farticles%2Frm9x4ryumu782021xr07.png" alt="example rule for tls/https" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for an HTTPS connection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP session is established (port 443)&lt;/li&gt;
&lt;li&gt;Then TLS handshake happens inside that TCP session&lt;/li&gt;
&lt;li&gt;Then encrypted data flows&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  ⚠️ Common Deployment Mistakes
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ❌ Asymmetric Routing
&lt;/h3&gt;

&lt;p&gt;Return traffic bypasses firewall → TLS resets&lt;/p&gt;


&lt;h3&gt;
  
  
  ❌ Revocation Policy Too Strict
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UNKNOWN → REJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Causes unexpected connection resets.&lt;/p&gt;


&lt;h3&gt;
  
  
  ❌ Missing TCP Rule
&lt;/h3&gt;

&lt;p&gt;Allowing TLS but blocking TCP 443 breaks handshake.&lt;/p&gt;


&lt;h3&gt;
  
  
  ❌ Inspecting All Ports
&lt;/h3&gt;

&lt;p&gt;Only inspect required ports (usually 443).&lt;/p&gt;


&lt;h2&gt;
  
  
  📈 Performance Considerations
&lt;/h2&gt;

&lt;p&gt;TLS inspection adds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU overhead&lt;/li&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Reduced throughput&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Best practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspect only necessary traffic&lt;/li&gt;
&lt;li&gt;Bypass trusted domains&lt;/li&gt;
&lt;li&gt;Monitor firewall capacity&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🏢 Enterprise Deployment Model
&lt;/h2&gt;

&lt;p&gt;For multi-VPC environments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spoke VPCs
      ↓
Transit Gateway
      ↓
Inspection VPC
      ↓
AWS Network Firewall
      ↓
Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Centralized inspection reduces cost and improves control.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 When TLS Inspection Is Most Valuable
&lt;/h2&gt;

&lt;p&gt;TLS inspection is especially important for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer environments&lt;/li&gt;
&lt;li&gt;Outbound internet access&lt;/li&gt;
&lt;li&gt;SaaS-heavy organizations&lt;/li&gt;
&lt;li&gt;Data exfiltration protection&lt;/li&gt;
&lt;li&gt;Compliance environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;TLS encryption protects data — but it also hides threats.&lt;/p&gt;

&lt;p&gt;AWS Network Firewall TLS inspection allows organizations to:&lt;/p&gt;

&lt;p&gt;✅ Regain visibility&lt;br&gt;
✅ Detect malware in encrypted traffic&lt;br&gt;
✅ Prevent data exfiltration&lt;br&gt;
✅ Enforce SaaS policies&lt;br&gt;
✅ Maintain compliance&lt;/p&gt;

&lt;p&gt;When deployed with proper routing, policy design, and certificate handling, TLS inspection becomes a powerful security control without disrupting business operations.&lt;/p&gt;




</description>
      <category>aws</category>
      <category>awsnetworkfirewall</category>
      <category>cloudsecurity</category>
      <category>tls</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Mon, 02 Feb 2026 06:36:07 +0000</pubDate>
      <link>https://forem.com/devopssourav/-300j</link>
      <guid>https://forem.com/devopssourav/-300j</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/aws-builders" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__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%2Forganization%2Fprofile_image%2F2794%2F88da75b6-aadd-4ea1-8083-ae2dfca8be94.png" alt="AWS Community Builders " width="350" height="350"&gt;
      &lt;div class="ltag__link__user__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%2F889808%2Fbbba2bbe-531f-410f-8340-6d7a212ab398.png" alt="" width="420" height="420"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/aws-builders/minutes-for-attackers-weeks-for-defenders-reducing-attack-surface-in-aws-417g" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Minutes for Attackers, Weeks for Defenders: Reducing Attack Surface in AWS&lt;/h2&gt;
      &lt;h3&gt;sourav chakraborty for AWS Community Builders  ・ Jan 31&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cloud&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cybersecurity&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>aws</category>
      <category>cloud</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
    <item>
      <title>Minutes for Attackers, Weeks for Defenders: Reducing Attack Surface in AWS</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sat, 31 Jan 2026 17:02:48 +0000</pubDate>
      <link>https://forem.com/aws-builders/minutes-for-attackers-weeks-for-defenders-reducing-attack-surface-in-aws-417g</link>
      <guid>https://forem.com/aws-builders/minutes-for-attackers-weeks-for-defenders-reducing-attack-surface-in-aws-417g</guid>
      <description>&lt;h2&gt;
  
  
  🚨 Attack Surface Blind Spots: The Reality Security Teams Face
&lt;/h2&gt;

&lt;p&gt;Despite increased investment in security tooling 🛡️, most organizations still struggle to gain a &lt;strong&gt;complete and accurate view&lt;/strong&gt; of their attack surface. Research consistently shows that &lt;strong&gt;nearly 40% of publicly accessible assets remain unknown&lt;/strong&gt; 👻 to the organization that owns them.&lt;/p&gt;

&lt;p&gt;These blind spots are not theoretical—they are &lt;strong&gt;actively exploited&lt;/strong&gt; 🚨. Attackers often begin scanning for vulnerabilities &lt;strong&gt;within minutes&lt;/strong&gt; ⏱️ of a new &lt;strong&gt;remote code execution (RCE)&lt;/strong&gt; exploit being disclosed. In contrast, many organizations take &lt;strong&gt;weeks&lt;/strong&gt; 🐢 to identify and remediate risky exposures.&lt;/p&gt;

&lt;p&gt;This growing gap between &lt;strong&gt;attacker speed&lt;/strong&gt; ⚡ and &lt;strong&gt;defender visibility&lt;/strong&gt; 👀 creates a dangerous imbalance. Organizations cannot protect assets they &lt;strong&gt;don’t know exist&lt;/strong&gt;, and response times cannot be compressed for exposures that remain &lt;strong&gt;invisible&lt;/strong&gt; 🕶️.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;You can’t secure what you can’t see — visibility is the foundation of attack surface reduction.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🛡️ Reducing Attack Surface with AWS Native Security Tools
&lt;/h2&gt;

&lt;p&gt;An organization’s &lt;strong&gt;attack surface&lt;/strong&gt; 🚨 is no longer limited to a physical data center or a clearly defined network perimeter. It now spans every method, service, identity, and configuration used to access workloads across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏢 On-premises environments
&lt;/li&gt;
&lt;li&gt;☁️ Public cloud platforms
&lt;/li&gt;
&lt;li&gt;📦 SaaS applications
&lt;/li&gt;
&lt;li&gt;🌐 Internet-facing services
&lt;/li&gt;
&lt;li&gt;💻 Remote and mobile users
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In AWS, this attack surface grows rapidly due to automation, identity-driven access, and elastic infrastructure. &lt;strong&gt;Misconfigurations, excessive permissions, exposed services, and unpatched workloads&lt;/strong&gt; are among the most common entry points for attackers.&lt;/p&gt;

&lt;p&gt;The good news? AWS offers a powerful set of &lt;strong&gt;native security services&lt;/strong&gt; 🛡️ that help &lt;strong&gt;discover, reduce, and monitor&lt;/strong&gt; your attack surface—without relying on third-party tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Understanding Attack Surface in AWS
&lt;/h2&gt;

&lt;p&gt;In a cloud-native environment, the attack surface commonly includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Public-facing EC2 instances, load balancers, and APIs
&lt;/li&gt;
&lt;li&gt;🔐 Over-permissive IAM users, roles, and policies
&lt;/li&gt;
&lt;li&gt;🚪 Open security groups and network ACLs
&lt;/li&gt;
&lt;li&gt;🪣 Public S3 buckets and exposed EBS snapshots
&lt;/li&gt;
&lt;li&gt;🧪 Unpatched AMIs and vulnerable container images
&lt;/li&gt;
&lt;li&gt;🧹 Unused or forgotten cloud resources
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Attackers don’t “hack the cloud”—they exploit misconfigurations, weak identity controls, and lack of visibility.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🛡️ Key AWS Services That Reduce Attack Surface
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔐 Identity and Access Management (IAM)
&lt;/h3&gt;

&lt;p&gt;Identity is the &lt;strong&gt;new perimeter&lt;/strong&gt; in the cloud. Poor identity hygiene dramatically expands the attack surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best practices include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Enforcing &lt;strong&gt;least privilege&lt;/strong&gt; with scoped IAM policies
&lt;/li&gt;
&lt;li&gt;🔑 Replacing long-term access keys with IAM roles
&lt;/li&gt;
&lt;li&gt;📲 Enabling MFA for all privileged users
&lt;/li&gt;
&lt;li&gt;🔍 Using IAM Access Analyzer to detect unintended external access
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reducing identity exposure limits how far attackers can move—even after an initial compromise.&lt;/p&gt;




&lt;h3&gt;
  
  
  🕵️ Amazon GuardDuty – Continuous Threat Detection
&lt;/h3&gt;

&lt;p&gt;Amazon GuardDuty provides &lt;strong&gt;always-on threat detection&lt;/strong&gt; 🔎 by analyzing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧾 AWS CloudTrail logs
&lt;/li&gt;
&lt;li&gt;🌊 VPC Flow Logs
&lt;/li&gt;
&lt;li&gt;🌐 DNS activity
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It detects threats such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚨 Compromised credentials
&lt;/li&gt;
&lt;li&gt;🤖 Command-and-control traffic
&lt;/li&gt;
&lt;li&gt;⛏️ Cryptocurrency mining
&lt;/li&gt;
&lt;li&gt;🧠 Suspicious API behavior
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Early detection prevents attackers from expanding your attack surface.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fzcw4xaekzf3eerv2ghk3.png" class="article-body-image-wrapper"&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%2Farticles%2Fzcw4xaekzf3eerv2ghk3.png" alt=" " width="800" height="549"&gt;&lt;/a&gt;&lt;br&gt;
Sample GD dashboard &lt;/p&gt;




&lt;h3&gt;
  
  
  🧭 AWS Security Hub – Centralized Security Visibility
&lt;/h3&gt;

&lt;p&gt;AWS Security Hub acts as a &lt;strong&gt;single pane of glass&lt;/strong&gt; 🧭 by aggregating findings from services such as GuardDuty, Inspector, Macie, and Firewall Manager.&lt;/p&gt;

&lt;p&gt;Security Hub helps teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👀 Gain centralized security visibility
&lt;/li&gt;
&lt;li&gt;🚪 Identify exposed or misconfigured resources
&lt;/li&gt;
&lt;li&gt;📋 Track compliance against CIS AWS Foundations Benchmarks
&lt;/li&gt;
&lt;li&gt;🎯 Prioritize high-risk findings
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🛑 You can’t reduce what you can’t see.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🔄 AWS Config – Prevent Configuration Drift
&lt;/h3&gt;

&lt;p&gt;AWS Config continuously monitors and evaluates resource configurations 🔄.&lt;/p&gt;

&lt;p&gt;It helps reduce attack surface by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚫 Detecting security groups open to &lt;code&gt;0.0.0.0/0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;🪣 Identifying public S3 buckets
&lt;/li&gt;
&lt;li&gt;🔐 Flagging unencrypted storage
&lt;/li&gt;
&lt;li&gt;🏷️ Enforcing required tagging and ownership
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With automated remediation, risky configurations can be fixed &lt;strong&gt;before attackers find them&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧪 Amazon Inspector – Vulnerability Management at Scale
&lt;/h3&gt;

&lt;p&gt;Amazon Inspector continuously scans for vulnerabilities 🧪 across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🖥️ EC2 instances
&lt;/li&gt;
&lt;li&gt;📦 Amazon ECR container images
&lt;/li&gt;
&lt;li&gt;⚙️ AWS Lambda functions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It identifies missing patches, known CVEs, and vulnerable packages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🚨 Unpatched workloads significantly expand the attack surface—continuous scanning helps close those gaps.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🌐 Network Controls – Shrinking Entry Points
&lt;/h3&gt;

&lt;p&gt;Network-level controls remain essential to limiting exposure 🌐.&lt;/p&gt;

&lt;p&gt;Best practices include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚪 Using security groups as default-deny firewalls
&lt;/li&gt;
&lt;li&gt;🧱 Deploying AWS Network Firewall for deep packet inspection
&lt;/li&gt;
&lt;li&gt;🔒 Leveraging VPC endpoints to remove unnecessary internet access
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every closed port reduces attacker opportunity.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔎 Amazon Macie – Protecting Sensitive Data Exposure
&lt;/h3&gt;

&lt;p&gt;Amazon Macie discovers and classifies sensitive data stored in Amazon S3 🔎, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧍 Personally identifiable information (PII)
&lt;/li&gt;
&lt;li&gt;💳 Financial data
&lt;/li&gt;
&lt;li&gt;🔑 Credentials and secrets
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Macie helps answer a critical question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;❓ &lt;strong&gt;Do we have sensitive data exposed where it shouldn’t be?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Reducing data exposure lowers breach impact.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Defense-in-Depth: Bringing It All Together
&lt;/h2&gt;

&lt;p&gt;Reducing attack surface in AWS is not a one-time task—it’s a &lt;strong&gt;continuous security discipline&lt;/strong&gt; 🧠.&lt;/p&gt;

&lt;p&gt;Each service plays a role:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 IAM controls &lt;strong&gt;who&lt;/strong&gt; can act
&lt;/li&gt;
&lt;li&gt;🌐 Network controls restrict &lt;strong&gt;where&lt;/strong&gt; access is possible
&lt;/li&gt;
&lt;li&gt;🧪 Inspector reduces &lt;strong&gt;what vulnerabilities&lt;/strong&gt; exist
&lt;/li&gt;
&lt;li&gt;🕵️ GuardDuty detects &lt;strong&gt;active threats&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🧭 Security Hub provides centralized awareness
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they enable &lt;strong&gt;proactive, scalable cloud security&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏁 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;In the cloud, speed and scale can amplify risk—but only when visibility and controls are missing.&lt;/p&gt;

&lt;p&gt;AWS native security services enable organizations to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👀 Continuously discover exposed assets
&lt;/li&gt;
&lt;li&gt;🔐 Enforce least privilege at scale
&lt;/li&gt;
&lt;li&gt;🚨 Detect threats in near real time
&lt;/li&gt;
&lt;li&gt;💥 Reduce blast radius before incidents escalate
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🛡️ &lt;strong&gt;Reducing attack surface isn’t just security—it’s resilience, compliance, and confidence.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
    <item>
      <title>From Alerts to Answers: AWS Security Hub &amp; Amazon Detective</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Wed, 24 Dec 2025 17:41:42 +0000</pubDate>
      <link>https://forem.com/aws-builders/from-alerts-to-answers-aws-security-hub-amazon-detective-mel</link>
      <guid>https://forem.com/aws-builders/from-alerts-to-answers-aws-security-hub-amazon-detective-mel</guid>
      <description>&lt;p&gt;Cloud security doesn’t fail because of missing tools — it fails when &lt;strong&gt;alerts don’t turn into answers fast enough&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AWS provides two powerful services that solve &lt;em&gt;different parts of the same security problem&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Security Hub → Centralized detection &amp;amp; compliance
&lt;/li&gt;
&lt;li&gt;Amazon Detective → Deep investigation &amp;amp; root-cause analysis
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Used together, they create a &lt;strong&gt;complete detection → investigation workflow&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 The Problem: Too Many Alerts, Too Little Context
&lt;/h2&gt;

&lt;p&gt;In real-world AWS environments, security teams face:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hundreds of findings across accounts &amp;amp; regions
&lt;/li&gt;
&lt;li&gt;Alerts from GuardDuty, Inspector, IAM Access Analyzer
&lt;/li&gt;
&lt;li&gt;Manual log analysis across CloudTrail and VPC Flow Logs
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;🚨 Alert fatigue
&lt;/li&gt;
&lt;li&gt;🕒 Slow incident response
&lt;/li&gt;
&lt;li&gt;❌ Unclear blast radius
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 What is AWS Security Hub?
&lt;/h2&gt;

&lt;p&gt;AWS Security Hub acts as a &lt;strong&gt;centralized security posture dashboard&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Aggregates findings from:

&lt;ul&gt;
&lt;li&gt;Amazon GuardDuty&lt;/li&gt;
&lt;li&gt;Amazon Inspector&lt;/li&gt;
&lt;li&gt;IAM Access Analyzer&lt;/li&gt;
&lt;li&gt;AWS Firewall Manager&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Continuous compliance checks (CIS, AWS FSBP)&lt;/li&gt;

&lt;li&gt;Multi-account and multi-region visibility&lt;/li&gt;

&lt;li&gt;Supports automation using EventBridge&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Security Hub tells you &lt;em&gt;what happened&lt;/em&gt;, but not always &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕵️ What is Amazon Detective?
&lt;/h2&gt;

&lt;p&gt;Amazon Detective helps security teams &lt;strong&gt;investigate incidents faster&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Detective matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automatically ingests:

&lt;ul&gt;
&lt;li&gt;AWS CloudTrail&lt;/li&gt;
&lt;li&gt;VPC Flow Logs&lt;/li&gt;
&lt;li&gt;GuardDuty findings&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Builds a &lt;strong&gt;behavior graph&lt;/strong&gt; of users, IPs, and resources&lt;/li&gt;

&lt;li&gt;Visual timelines and relationship mapping&lt;/li&gt;

&lt;li&gt;No manual log correlation required&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Think of Detective as your &lt;strong&gt;cloud forensics engine&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 How Security Hub Integrates with Detective
&lt;/h2&gt;

&lt;p&gt;The integration is automatically enabled when you enable the Detective service. No other configuration besides turning on the service is required&lt;/p&gt;

&lt;h3&gt;
  
  
  End-to-end workflow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;GuardDuty detects suspicious activity
&lt;/li&gt;
&lt;li&gt;Security Hub aggregates and normalizes the finding
&lt;/li&gt;
&lt;li&gt;One-click investigation opens in Amazon Detective
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fg0ry8wiiw5k0pqhvbthi.png" class="article-body-image-wrapper"&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%2Farticles%2Fg0ry8wiiw5k0pqhvbthi.png" alt=" " width="800" height="858"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deep analysis of API calls, network traffic, and resources
&lt;/li&gt;
&lt;li&gt;Confirm severity and trigger remediation
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This dramatically reduces &lt;strong&gt;MTTR (Mean Time to Respond)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: IAM Credential Compromise
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
GuardDuty reports unusual IAM credential usage from a new location.&lt;/p&gt;

&lt;h3&gt;
  
  
  Without Detective
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manual CloudTrail analysis
&lt;/li&gt;
&lt;li&gt;Time-consuming IP validation
&lt;/li&gt;
&lt;li&gt;Delayed containment
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  With Security Hub + Detective
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open finding directly in Detective
&lt;/li&gt;
&lt;li&gt;View login history and API activity
&lt;/li&gt;
&lt;li&gt;Identify affected resources immediately
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  High-Level Architecture
&lt;/h2&gt;

&lt;p&gt;GuardDuty / Inspector / IAM Access Analyzer&lt;br&gt;
↓&lt;br&gt;
AWS Security Hub&lt;br&gt;
↓&lt;br&gt;
Amazon Detective&lt;br&gt;
↓&lt;br&gt;
SOC / IR Team / Automation&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Why the Integration Matters
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Security Hub&lt;/th&gt;
&lt;th&gt;Detective&lt;/th&gt;
&lt;th&gt;Combined&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Detection&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggregation&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Investigation&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visualization&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Faster MTTR&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;🚀&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ✅ Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Enable Security Hub organization-wide
&lt;/li&gt;
&lt;li&gt;Enable Detective wherever GuardDuty is active
&lt;/li&gt;
&lt;li&gt;Use EventBridge and Lambda for automated response
&lt;/li&gt;
&lt;li&gt;Focus on high-severity findings
&lt;/li&gt;
&lt;li&gt;Regularly test investigation workflows
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AWS Security Hub answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What security issues exist in my AWS environment?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Amazon Detective answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What actually happened and how bad is it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Together, they turn &lt;strong&gt;alerts into answers&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this useful, consider sharing or dropping a comment below.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>cloudsecurity</category>
      <category>devops</category>
    </item>
    <item>
      <title>🌟 The Ultimate Memory Hooks for AWS Certified AI Practitioner (AIF-C01)</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sun, 07 Dec 2025 16:47:27 +0000</pubDate>
      <link>https://forem.com/aws-builders/the-ultimate-memory-hooks-for-aws-certified-ai-practitioner-aif-c01-3jme</link>
      <guid>https://forem.com/aws-builders/the-ultimate-memory-hooks-for-aws-certified-ai-practitioner-aif-c01-3jme</guid>
      <description>&lt;p&gt;Preparing for the &lt;strong&gt;AWS Certified AI Practitioner&lt;/strong&gt; (AIF-C01) can feel overwhelming — not because the concepts are complex, but because the exam covers a wide range of AI terminology, AWS services, ML workflows, prompt engineering, RAG, and evaluation metrics.&lt;/p&gt;

&lt;p&gt;When I started preparing for the AWS Certified AI Practitioner (AIF-C01) exam, I quickly realized something — the content wasn’t “hard,” but there was so much to remember, and many terms sounded similar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supervised vs Unsupervised&lt;/li&gt;
&lt;li&gt;Evaluation metrics&lt;/li&gt;
&lt;li&gt;SageMaker services&lt;/li&gt;
&lt;li&gt;Bedrock features&lt;/li&gt;
&lt;li&gt;Prompt engineering techniques&lt;/li&gt;
&lt;li&gt;RAG components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To keep things simple, I began writing down small memory hooks, short patterns, and mental shortcuts on a notepad.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These hooks helped me instantly recall concepts during the exam — especially when faced with confusingly worded scenario questions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During my preparation, I followed the excellent &lt;strong&gt;QA/CloudAcademy course&lt;/strong&gt;:“&lt;strong&gt;AWS Certified AI Practitioner (AIF-C01) Certification Preparation&lt;/strong&gt;” by &lt;strong&gt;Danny Jessee&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This course helped me understand how different services fit together, while my memory hooks helped me recall the details under exam pressure.&lt;/p&gt;

&lt;p&gt;This blog post is a summary of all the memory hooks that helped me pass the exam — shared so you (and others) can benefit as well.&lt;/p&gt;

&lt;p&gt;To make learning efficient, here is a single consolidated guide of the best memory hooks and mnemonics used to successfully pass the exam — now shared so others can benefit too.&lt;/p&gt;

&lt;p&gt;🧠 1. Machine Learning Basics &lt;/p&gt;

&lt;p&gt;Supervised vs Unsupervised&lt;/p&gt;

&lt;p&gt;Labels → Supervised&lt;br&gt;
No Labels → Unsupervised&lt;/p&gt;

&lt;p&gt;✔ Supervised = Teacher + Correct Answers&lt;br&gt;
✔ Unsupervised = Find patterns (clustering, segments)&lt;/p&gt;

&lt;p&gt;Classification vs Regression&lt;/p&gt;

&lt;p&gt;Classes → Classification&lt;br&gt;
Numbers → Regression&lt;/p&gt;

&lt;p&gt;Overfitting vs Underfitting&lt;/p&gt;

&lt;p&gt;Overfitting = Too complex → Increase regularization&lt;br&gt;
Underfitting = Too simple → Decrease regularization&lt;/p&gt;

&lt;p&gt;🧠 2. Key Algorithms &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clustering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Group customers? No labels? → K-Means&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image Classification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Flower Classification → k-NN or Decision Tree&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anomaly Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No labels + abnormal detection → Autoencoders&lt;/p&gt;

&lt;p&gt;🧠 3. GenAI Prompt Engineering &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Few-shot prompting&lt;/li&gt;
&lt;li&gt;Show format → Few-shot prompting.&lt;/li&gt;
&lt;li&gt;Prompt chaining&lt;/li&gt;
&lt;li&gt;Multi-step workflow → Prompt chaining.&lt;/li&gt;
&lt;li&gt;ReAct prompting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reason + Action + Tool use → ReAct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temperature&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creativity ↑ → Temperature ↑&lt;br&gt;
Consistency ↑ → Temperature ↓&lt;/p&gt;

&lt;p&gt;🧠 4. LLM Inference Parameters &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temperature: Creativity&lt;/li&gt;
&lt;li&gt;Top-K: Number of token choices&lt;/li&gt;
&lt;li&gt;Top-P: Probability bucket&lt;/li&gt;
&lt;li&gt;Max Tokens: Output length&lt;/li&gt;
&lt;li&gt;Frequency Penalty: Reduce repeated words&lt;/li&gt;
&lt;li&gt;Presence Penalty: Discourage repeated topics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Creativity → Temp / Top-K / Top-P&lt;br&gt;
Length → Max Tokens&lt;br&gt;
Repetition → Frequency &amp;amp; Presence&lt;/p&gt;

&lt;p&gt;🧠 5. RAG (Retrieval-Augmented Generation) &lt;/p&gt;

&lt;p&gt;Purpose of Chunking&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Chunking = Better retrieval → Better context&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Batch Steps in RAG&lt;/p&gt;

&lt;p&gt;✔ Content embeddings&lt;br&gt;
✔ Build search index&lt;br&gt;
(NOT query embeddings or response generation)&lt;/p&gt;

&lt;p&gt;LLM Type for Multimodal Search&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Text + Image queries → Multimodal model&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🧠 6. Evaluating ML Models &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summarization Metrics&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Summarization → ROUGE&lt;br&gt;
(If ROUGE missing → Choose BLEU)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Translation Metrics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Translation → BLEU / METEOR&lt;br&gt;
Classification Metrics&lt;br&gt;
Imbalanced data → F1 Score&lt;br&gt;
Balanced → Accuracy&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regression Metrics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Numeric prediction → MSE / RMSE&lt;/li&gt;
&lt;li&gt;LLM Quality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perplexity → How surprised is the model?&lt;/p&gt;

&lt;p&gt;🧠 7. AWS Services — Quick Memory Hooks&lt;br&gt;
&lt;strong&gt;Model Cards&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Governance + Documentation → Model Cards&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Detect drift in production → Model Monitor&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ground Truth&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Human labeling → Ground Truth&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JumpStart&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pre-built models + quick deploy → JumpStart&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SageMaker Canvas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No-code data prep → Canvas&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HealthScribe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Medical speech-to-text → HealthScribe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Guardrails for Bedrock&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Responsible AI (safety filters) → Guardrails&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PartyRock&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Experiment + Learn + No cost → PartyRock&lt;br&gt;
(Not for VPC, not for deployments)&lt;/p&gt;

&lt;p&gt;🧠 8. GenAI Lifecycle &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Design → Data → Train → Evaluate → Deploy → Monitor&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Evaluation Stage&lt;/p&gt;

&lt;p&gt;Accuracy testing&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Safety + toxicity testing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hallucination measurements&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inference&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Train = Learn&lt;/li&gt;
&lt;li&gt;Infer = Predict&lt;/li&gt;
&lt;li&gt;Deploy = Serve&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🧠 9. Embeddings &lt;/p&gt;

&lt;p&gt;Embeddings = Meaning → Vectors&lt;br&gt;
Reduced dimension → Same meaning → Similarity search&lt;/p&gt;

&lt;p&gt;🧠 10. Foundational Concepts &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Teach big model a small task well.&lt;br&gt;
✔ Domain-specific labeled data&lt;br&gt;
✔ Improves specific task performance&lt;br&gt;
✔ NOT retraining from scratch&lt;br&gt;
✔ NOT updating model to recent events&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Responsible AI&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Safety + Filters + Detect toxicity → Use Guardrails&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🎉 Final Thoughts&lt;/p&gt;

&lt;p&gt;These memory hooks are designed with one purpose:&lt;/p&gt;

&lt;p&gt;👉 Make recall instant during the exam&lt;br&gt;
👉 Reduce confusion between similar concepts&lt;br&gt;
👉 Build confidence with patterns instead of memorising definitions&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS Route 53 Resolver DNS Firewall — The First Line of Egress Defense</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sun, 09 Nov 2025 16:09:56 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-route-53-resolver-dns-firewall-the-first-line-of-egress-defense-4gba</link>
      <guid>https://forem.com/aws-builders/aws-route-53-resolver-dns-firewall-the-first-line-of-egress-defense-4gba</guid>
      <description>&lt;p&gt;&lt;a href="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%2Farticles%2Fczlptzzbeidrz3wiyom0.png" class="article-body-image-wrapper"&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%2Farticles%2Fczlptzzbeidrz3wiyom0.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🧭 Securing Outbound Traffic at the DNS Layer with AWS Route 53 Resolver DNS Firewall
&lt;/h1&gt;

&lt;p&gt;When you think of network security in AWS, you probably picture &lt;strong&gt;Security Groups&lt;/strong&gt;, &lt;strong&gt;NACLs&lt;/strong&gt;, or &lt;strong&gt;AWS Network Firewall&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But what if you could stop malicious traffic &lt;em&gt;before&lt;/em&gt; it even knows where to go — before an IP address is ever resolved?&lt;/p&gt;

&lt;p&gt;That’s the power of &lt;strong&gt;AWS Route 53 Resolver DNS Firewall&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Why DNS-Layer Protection Matters
&lt;/h2&gt;

&lt;p&gt;Every outbound connection starts with a &lt;strong&gt;DNS query&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Whether your EC2 instance is reaching an API, a SaaS endpoint, or — in a worst-case scenario — a command-and-control (C2) domain — the first step is always:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What’s the IP of this domain?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Attackers exploit this by using DNS for &lt;strong&gt;malware callbacks&lt;/strong&gt; and &lt;strong&gt;data exfiltration&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Traditional firewalls inspect packets &lt;strong&gt;after&lt;/strong&gt; DNS resolution.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;DNS Firewall&lt;/strong&gt; stops threats &lt;strong&gt;before&lt;/strong&gt; they even resolve.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 What Is AWS Route 53 Resolver DNS Firewall?
&lt;/h2&gt;

&lt;p&gt;It’s a managed security layer inside Route 53 Resolver that lets you &lt;strong&gt;filter outbound DNS queries&lt;/strong&gt; from your VPCs.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧱 Key Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Domain Lists&lt;/strong&gt; – Collections of domains you allow or block.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule Groups&lt;/strong&gt; – Sets of filtering rules (allow, block, alert).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC Associations&lt;/strong&gt; – Bind rule groups to VPCs for enforcement.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed Domain Lists&lt;/strong&gt; – AWS-maintained threat feeds for malware, botnets, and phishing domains.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;In short:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When a resource in your VPC queries a domain, DNS Firewall checks it before the resolver returns an IP.&lt;br&gt;&lt;br&gt;
If the domain matches a block rule, the lookup fails — and the connection never happens.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Step-by-Step Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create a Domain List from CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws route53resolver create-firewall-domain-list   &lt;span class="nt"&gt;--name&lt;/span&gt; blocked-domains   &lt;span class="nt"&gt;--domains&lt;/span&gt; file://blocked.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Add a Rule
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws route53resolver create-firewall-rule   &lt;span class="nt"&gt;--firewall-rule-group-id&lt;/span&gt; &amp;lt;rule-group-id&amp;gt;   &lt;span class="nt"&gt;--firewall-domain-list-id&lt;/span&gt; &amp;lt;domain-list-id&amp;gt;   &lt;span class="nt"&gt;--priority&lt;/span&gt; 100   &lt;span class="nt"&gt;--action&lt;/span&gt; BLOCK

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

&lt;/div&gt;



&lt;p&gt;You can create from AWS console&lt;br&gt;
&lt;a href="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%2Farticles%2Fmnbrsnj3lk6uthl18mh6.png" class="article-body-image-wrapper"&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%2Farticles%2Fmnbrsnj3lk6uthl18mh6.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create new domain list seperately or while creating rules or refer to an existing domain list&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fwgimg6119jfdey4crqqp.png" class="article-body-image-wrapper"&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%2Farticles%2Fwgimg6119jfdey4crqqp.png" alt=" " width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fbwn32ihcy0r6x06ti6kj.png" class="article-body-image-wrapper"&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%2Farticles%2Fbwn32ihcy0r6x06ti6kj.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS also provided a managed domain list for threats&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fptsc0tlxpulhukf7y67f.png" class="article-body-image-wrapper"&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%2Farticles%2Fptsc0tlxpulhukf7y67f.png" alt=" " width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Associate with a VPC
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws route53resolver associate-firewall-rule-group   &lt;span class="nt"&gt;--firewall-rule-group-id&lt;/span&gt; &amp;lt;rule-group-id&amp;gt;   &lt;span class="nt"&gt;--vpc-id&lt;/span&gt; &amp;lt;your-vpc-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ &lt;strong&gt;Result:&lt;/strong&gt; Any instance in that VPC trying to resolve a blocked domain will receive an &lt;code&gt;NXDOMAIN&lt;/code&gt; — connection denied at the DNS layer.&lt;/p&gt;

&lt;p&gt;From console also it's simple to attach VPC&lt;br&gt;
&lt;a href="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%2Farticles%2Fhm4bqf4tth1v2s06sgfh.png" class="article-body-image-wrapper"&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%2Farticles%2Fhm4bqf4tth1v2s06sgfh.png" alt=" " width="800" height="236"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Practical Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Prevent data exfiltration&lt;/strong&gt; by blocking known or suspicious domains.
&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Enforce corporate DNS policies&lt;/strong&gt; — allow only trusted domains.
&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Integrate with GuardDuty&lt;/strong&gt; — auto-block malicious domains detected in findings.
&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Automate updates&lt;/strong&gt; using Lambda to refresh blocklists from threat feeds.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔍 DNS Firewall vs. AWS Network Firewall for Egress Control
&lt;/h2&gt;

&lt;p&gt;Both can manage outbound traffic — but they work at &lt;strong&gt;different OSI layers&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“DNS Firewall stops bad domains &lt;em&gt;before&lt;/em&gt; they resolve.&lt;br&gt;&lt;br&gt;
Network Firewall inspects packets &lt;em&gt;after&lt;/em&gt; they resolve.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature / Aspect&lt;/th&gt;
&lt;th&gt;AWS DNS Firewall&lt;/th&gt;
&lt;th&gt;AWS Network Firewall&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DNS (Name Resolution)&lt;/td&gt;
&lt;td&gt;Network / Transport&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Controls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Outbound DNS queries&lt;/td&gt;
&lt;td&gt;Outbound TCP/UDP packets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Allow / Block / Alert&lt;/td&gt;
&lt;td&gt;Allow / Drop / Inspect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;VPC-level (Resolver)&lt;/td&gt;
&lt;td&gt;Subnet-level (Routing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost Profile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (per DNS query)&lt;/td&gt;
&lt;td&gt;Higher (per GB processed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Negligible&lt;/td&gt;
&lt;td&gt;Slight (due to inspection)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  🧱 Why DNS Firewall Shines for Egress Security
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fqt218n7oe9cljlamn3g3.png" class="article-body-image-wrapper"&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%2Farticles%2Fqt218n7oe9cljlamn3g3.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ 1. Stops Threats Early
&lt;/h4&gt;

&lt;p&gt;Blocks queries before IP resolution — no data leaves your network.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ 2. Cost-Efficient
&lt;/h4&gt;

&lt;p&gt;Charged per DNS query, not per GB of traffic. Ideal for workloads with heavy egress.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ 3. Easy to Deploy
&lt;/h4&gt;

&lt;p&gt;No routing changes or extra endpoints — just associate and enforce.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✅ 4. Works with Network Firewall
&lt;/h4&gt;

&lt;p&gt;Use DNS Firewall for domain filtering, Network Firewall for deep inspection.&lt;br&gt;&lt;br&gt;
Together they provide &lt;strong&gt;defense in depth&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔐 Combined Example
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;An EC2 instance tries &lt;code&gt;steal-data.bad-domain.com&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS Firewall&lt;/strong&gt; blocks the DNS query.
&lt;/li&gt;
&lt;li&gt;If not blocked, &lt;strong&gt;Network Firewall&lt;/strong&gt; inspects packets for threats.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 &lt;strong&gt;Result:&lt;/strong&gt; Threats stopped early, less bandwidth wasted, lower cost.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧮 Cost &amp;amp; Logging Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS Firewall&lt;/strong&gt; pricing → per query inspected + rule group associations.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network Firewall&lt;/strong&gt; pricing → per GB processed + endpoint hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enable &lt;strong&gt;Route 53 Resolver Query Logging&lt;/strong&gt; to send logs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CloudWatch Logs
&lt;/li&gt;
&lt;li&gt;S3
&lt;/li&gt;
&lt;li&gt;Kinesis Data Firehose
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Use &lt;strong&gt;AWS Managed Domain Lists&lt;/strong&gt; as baseline.
&lt;/li&gt;
&lt;li&gt;🧾 Layer &lt;strong&gt;custom blocklists&lt;/strong&gt; for organization-specific policies.
&lt;/li&gt;
&lt;li&gt;📊 Enable &lt;strong&gt;CloudWatch metrics&lt;/strong&gt; for visibility.
&lt;/li&gt;
&lt;li&gt;🧩 Use &lt;strong&gt;AWS Firewall Manager&lt;/strong&gt; for central governance.
&lt;/li&gt;
&lt;li&gt;🤝 Combine with &lt;strong&gt;GuardDuty findings&lt;/strong&gt; for automated domain blocking.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Common Pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;❌ Assuming it controls inbound DNS — it only handles outbound queries.
&lt;/li&gt;
&lt;li&gt;❌ Forgetting VPC associations.
&lt;/li&gt;
&lt;li&gt;❌ Over-blocking — test lists before applying globally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏦 Real-World Example
&lt;/h2&gt;

&lt;p&gt;A financial organization noticed beaconing attempts to suspicious &lt;code&gt;.ru&lt;/code&gt; domains.&lt;br&gt;&lt;br&gt;
By deploying &lt;strong&gt;AWS DNS Firewall&lt;/strong&gt;, they blocked these at the DNS level — cutting off the connection before it began.&lt;br&gt;&lt;br&gt;
No routing updates, no inspection overhead — just clean, effective protection.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Defense-in-Depth Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DNS&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Route 53 Resolver DNS Firewall&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Block malicious domains before resolution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AWS Network Firewall&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Inspect IPs, ports, protocols&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AWS WAF&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filter HTTP/S web layer attacks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;AWS Route 53 Resolver DNS Firewall gives your VPCs an &lt;strong&gt;invisible yet critical layer of egress protection&lt;/strong&gt; — stopping bad domains before they resolve.&lt;/p&gt;

&lt;p&gt;When combined with AWS Network Firewall, it forms a &lt;strong&gt;multi-layered egress defense&lt;/strong&gt; that’s cost-efficient, scalable, and easy to manage.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🧱 &lt;strong&gt;DNS Firewall = DNS Gatekeeper&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
🚧 &lt;strong&gt;Network Firewall = Border Guard&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Together, they ensure nothing untrusted leaves your cloud unchecked.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;💬 Have you used DNS Firewall in your AWS environment?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Share your setup, automation tricks, or lessons learned in the comments below! 👇&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudsecurity</category>
      <category>networking</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>🛡️ Beyond the Model: How Amazon Bedrock Guardrails Protect Your Users and Data</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Fri, 12 Sep 2025 18:35:33 +0000</pubDate>
      <link>https://forem.com/aws-builders/amazon-bedrock-guardrails-a-practical-guide-to-safer-generative-ai-5ghp</link>
      <guid>https://forem.com/aws-builders/amazon-bedrock-guardrails-a-practical-guide-to-safer-generative-ai-5ghp</guid>
      <description>&lt;p&gt;&lt;a href="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%2Farticles%2Fygxq1l6jwjmk42pbzke0.png" class="article-body-image-wrapper"&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%2Farticles%2Fygxq1l6jwjmk42pbzke0.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generative AI is transforming how we build products — from conversational bots 🤖 to creative content engines ✍️. But as these systems become more powerful, they’re also being probed in &lt;strong&gt;harmful and unsafe ways&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Users may try to submit prompts that are inappropriate ⚠️ or manipulate models to bypass built-in security mechanisms. And because foundation models can occasionally “hallucinate,” they might produce responses that violate your company’s standards or reveal sensitive information.&lt;/p&gt;

&lt;p&gt;Amazon Bedrock already includes automated mechanisms to detect and prevent potential misuse and abuse, but there’s still a need for &lt;strong&gt;enhanced, configurable security controls&lt;/strong&gt;. That’s where &lt;strong&gt;Guardrails&lt;/strong&gt; come in 🚦.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Amazon Bedrock&lt;/strong&gt; is AWS’s fully managed platform for building and running generative AI applications without managing servers or training models from scratch.&lt;/p&gt;

&lt;p&gt;✨ &lt;strong&gt;Key benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose from top-tier foundation models — Amazon Titan, Anthropic Claude, Cohere Command.&lt;/li&gt;
&lt;li&gt;Invoke them via API; optionally fine-tune them with your own data.&lt;/li&gt;
&lt;li&gt;Serverless — pay only for what you use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔒 &lt;strong&gt;Privacy &amp;amp; Data Protection by Design:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your prompts and outputs &lt;strong&gt;aren’t used to train&lt;/strong&gt; Amazon Titan or any other foundation model and are not stored in service logs.&lt;/li&gt;
&lt;li&gt;When you fine-tune a model, Bedrock creates a &lt;strong&gt;private copy&lt;/strong&gt; just for you and trains only that copy.&lt;/li&gt;
&lt;li&gt;All data is &lt;strong&gt;encrypted with AWS KMS&lt;/strong&gt;, and you control the keys.&lt;/li&gt;
&lt;li&gt;Connect via &lt;strong&gt;AWS PrivateLink&lt;/strong&gt; so your traffic never traverses the public internet; lock it down further with a custom endpoint policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination gives you access to powerful models while keeping corporate data under your control.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Are Guardrails? 🚦
&lt;/h2&gt;

&lt;p&gt;Guardrails are like &lt;strong&gt;policy fences&lt;/strong&gt; for your AI models. They sit between your application and the model to &lt;strong&gt;control both user inputs and model outputs&lt;/strong&gt; — including any fine-tuned models you deploy.&lt;/p&gt;

&lt;p&gt;They help you keep user interactions “within the lanes” you define, giving administrators granular controls over filtering strength and scope. You can define multiple Guardrail policies and reuse them across your portfolio of Bedrock applications, regardless of which foundation model you’re using.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four Guardrail Categories
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;📝 Category&lt;/th&gt;
&lt;th&gt;🛠️ What it does&lt;/th&gt;
&lt;th&gt;💡 Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Denied Topics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Define topics your application should avoid using natural language descriptions and sample phrases.&lt;/td&gt;
&lt;td&gt;A financial institution prevents its banking chatbot from answering investment advice questions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Content Filters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Set thresholds (None, Low, Medium, High) for four categories of potentially harmful or sensitive content. Apply independently to prompts and outputs.&lt;/td&gt;
&lt;td&gt;A customer-facing chatbot uses a High filter to reduce the chance of offensive content reaching users.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PII Redaction&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Detect and filter personally identifiable information (PII) in prompts and redact it from model responses.&lt;/td&gt;
&lt;td&gt;A call-center app summarizes customer calls with all names and account numbers removed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Word Filters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Filter specific words or phrases such as profanity, competitors’ names, or product names. You can mask or respond with a pre-configured message.&lt;/td&gt;
&lt;td&gt;Block a competitor’s product names in generated copy.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;🛡️ &lt;em&gt;Most foundation models already have some safeguards built in, but Guardrails add a **customizable, consistent protection layer&lt;/em&gt;* that you control.*&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Setting Up Guardrails in the Console
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log into the &lt;strong&gt;AWS Management Console&lt;/strong&gt; and navigate to &lt;code&gt;Amazon Bedrock → Guardrails&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Guardrail&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Configure the four categories: denied topics, content filters (thresholds per category), PII redaction, and word filters.&lt;/li&gt;
&lt;li&gt;Save and &lt;strong&gt;attach&lt;/strong&gt; the Guardrail to your chosen model(s).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test&lt;/strong&gt; with sample prompts to verify that your settings work before deploying to production.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F16y0lhq9ojteabwkt66w.png" class="article-body-image-wrapper"&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%2Farticles%2F16y0lhq9ojteabwkt66w.png" alt=" " width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F0n079457ljzt7y8dtdhd.png" class="article-body-image-wrapper"&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%2Farticles%2F0n079457ljzt7y8dtdhd.png" alt=" " width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Programmatic Example 💻
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;

&lt;span class="n"&gt;bedrock&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;bedrock-runtime&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bedrock&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;modelId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your-model-id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;guardrailId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your-guardrail-id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contentType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;accept&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inputText&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Test prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Every invocation automatically goes through your Guardrail policies.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Best Practices 🧠
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start broad, refine later. Begin with default filters and adjust thresholds based on monitoring data.&lt;/li&gt;
&lt;li&gt;Monitor metrics. Use CloudWatch to see how often Guardrails trigger and adjust accordingly.&lt;/li&gt;
&lt;li&gt;Combine automated and human review. Route flagged outputs to a human moderator for high-risk cases.&lt;/li&gt;
&lt;li&gt;Reuse policies. Create a library of Guardrails for different apps to ensure consistent enforcement.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Wrapping Up 🎁
&lt;/h2&gt;

&lt;p&gt;With the recent proliferation of AI-based systems and conversational applications, attempts to exploit them are rising. Amazon Bedrock Guardrails give you a second line of defense — on top of the foundation models’ own protections — to ensure user interactions stay appropriate and your data stays safe.&lt;/p&gt;

&lt;p&gt;By combining Bedrock’s privacy-first design with the granular controls of Guardrails, you can deploy generative AI faster and with greater confidence, whether it’s a public chatbot, an internal knowledge assistant, or a custom-tuned model running in your VPC.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>bedrock</category>
      <category>guardrails</category>
      <category>awsgenai</category>
    </item>
    <item>
      <title>Simplifying Cross-VPC Communication with AWS VPC Lattice</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Thu, 24 Jul 2025 05:42:23 +0000</pubDate>
      <link>https://forem.com/aws-builders/simplifying-cross-vpc-communication-with-aws-vpc-lattice-2779</link>
      <guid>https://forem.com/aws-builders/simplifying-cross-vpc-communication-with-aws-vpc-lattice-2779</guid>
      <description>&lt;p&gt;🚀 Tired of managing complex VPC peering or Transit Gateway configurations? Discover how AWS VPC Lattice simplifies service-to-service communication across VPCs.&lt;/p&gt;

&lt;h1&gt;
  
  
  NetworkingMadeSimple 🌐✨
&lt;/h1&gt;

&lt;p&gt;💡In modern cloud architectures, applications are often distributed across multiple VPCs for better isolation and security. However, this creates &lt;br&gt;
challenges for service-to-service communication. Traditional solutions like VPC peering or Transit Gateway can be complex to manage and scale.&lt;/p&gt;

&lt;p&gt;AWS VPC Lattice offers a simpler approach by providing a fully managed service networking solution. In this post, I'll walk through a practical proof &lt;br&gt;
of concept (POC) that demonstrates how VPC Lattice can connect services across different VPCs without complex networking configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Cross-VPC Service Communication
&lt;/h2&gt;

&lt;p&gt;🔁 Consider this common scenario:&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;SpokeA VPC&lt;/strong&gt;: Contains your application logic (Lambda functions)&lt;br&gt;
• &lt;strong&gt;SpokeC VPC&lt;/strong&gt;: Contains your backend services (web servers)&lt;/p&gt;

&lt;p&gt;🧱 Traditionally, you'd need to set up VPC peering, Transit Gateway, or use an Application Load Balancer (ALB) to enable communication between these VPCs.&lt;br&gt;
Each approach has its own complexities and limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: VPC Lattice
&lt;/h2&gt;

&lt;p&gt;VPC Lattice provides a service-oriented approach to networking. Instead of focusing on network connectivity, you register services and let VPC Lattice &lt;br&gt;
handle the discovery and routing.&lt;/p&gt;

&lt;p&gt;Our POC demonstrates this by connecting a Lambda function in SpokeA VPC to an Apache web server in SpokeC VPC through VPC Lattice.&lt;/p&gt;

&lt;h2&gt;
  
  
  POC Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fbraf985xec8zg1sbouzt.png" class="article-body-image-wrapper"&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%2Farticles%2Fbraf985xec8zg1sbouzt.png" alt=" " width="654" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SpokeC VPC: Contains an EC2 instance running Apache&lt;/li&gt;
&lt;li&gt;SpokeA VPC: Contains a Lambda function that accesses the Apache server&lt;/li&gt;
&lt;li&gt;VPC Lattice: Connects the two VPCs and enables service discovery&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step-by-Step Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create a VPC Lattice Service Network
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-service-network --name "poc-service-network" --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:servicenetwork/sn-0735c8dcd85f31ba0",&lt;br&gt;
    "createdAt": "2025-07-06T13:34:38.065000+00:00",&lt;br&gt;
    "id": "sn-0735c8dcd85f31ba0",&lt;br&gt;
    "lastUpdatedAt": "2025-07-06T13:34:38.065000+00:00",&lt;br&gt;
    "name": "poc-service-network",&lt;br&gt;
    "numberOfAssociatedResourceConfigurations": 0,&lt;br&gt;
    "numberOfAssociatedServices": 0,&lt;br&gt;
    "numberOfAssociatedVPCs": 0&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Associate VPCs with the Service Network
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-service-network-vpc-association \&lt;br&gt;
  --service-network-identifier sn-0735c8dcd85f31ba0 \&lt;br&gt;
  --vpc-identifier vpc-09e69971ba778dc66 \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:servicenetworkvpcassociation/snva-0b31c3c150f75e0cd",&lt;br&gt;
    "createdBy": "XXYY112233",&lt;br&gt;
    "id": "snva-0b31c3c150f75e0cd",&lt;br&gt;
    "status": "CREATE_IN_PROGRESS"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;$ aws vpc-lattice create-service-network-vpc-association \&lt;br&gt;
  --service-network-identifier sn-0735c8dcd85f31ba0 \&lt;br&gt;
  --vpc-identifier vpc-06bb9f3453465ee95 \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:servicenetworkvpcassociation/snva-088beb43dc9cc2e88",&lt;br&gt;
    "createdBy": "XXYY1122333",&lt;br&gt;
    "id": "snva-088beb43dc9cc2e88",&lt;br&gt;
    "status": "CREATE_IN_PROGRESS"&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Create a VPC Lattice Service for the Apache Server
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-service \&lt;br&gt;
  --name "apache-service" \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:service/svc-0b5ef28909b938204",&lt;br&gt;
    "authType": "NONE",&lt;br&gt;
    "dnsEntry": {&lt;br&gt;
        "domainName": "apache-service-0b5ef28909b938204.7d67968.vpc-lattice-svcs.us-east-1.on.aws",&lt;br&gt;
        "hostedZoneId": "Z0681547Z82L3THDFSCZ"&lt;br&gt;
    },&lt;br&gt;
    "id": "svc-0b5ef28909b938204",&lt;br&gt;
    "name": "apache-service",&lt;br&gt;
    "status": "CREATE_IN_PROGRESS"&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Create a Target Group for the Apache EC2 Instance
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-target-group \&lt;br&gt;
  --name "apache-target-group" \&lt;br&gt;
  --type INSTANCE \&lt;br&gt;
  --config '{"port": 80, "protocol": "HTTP", "vpcIdentifier": "vpc-09e69971ba778dc66"}' \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:targetgroup/tg-08a1d70cb62776f59",&lt;br&gt;
    "config": {&lt;br&gt;
        "healthCheck": {&lt;br&gt;
            "enabled": true,&lt;br&gt;
            "healthCheckIntervalSeconds": 30,&lt;br&gt;
            "healthCheckTimeoutSeconds": 5,&lt;br&gt;
            "healthyThresholdCount": 5,&lt;br&gt;
            "matcher": {&lt;br&gt;
                "httpCode": "200"&lt;br&gt;
            },&lt;br&gt;
            "path": "/",&lt;br&gt;
            "protocol": "HTTP",&lt;br&gt;
            "protocolVersion": "HTTP1",&lt;br&gt;
            "unhealthyThresholdCount": 2&lt;br&gt;
        },&lt;br&gt;
        "ipAddressType": "IPV4",&lt;br&gt;
        "port": 80,&lt;br&gt;
        "protocol": "HTTP",&lt;br&gt;
        "protocolVersion": "HTTP1",&lt;br&gt;
        "vpcIdentifier": "vpc-09e69971ba778dc66"&lt;br&gt;
    },&lt;br&gt;
    "id": "tg-08a1d70cb62776f59",&lt;br&gt;
    "name": "apache-target-group",&lt;br&gt;
    "status": "CREATE_IN_PROGRESS",&lt;br&gt;
    "type": "INSTANCE"&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Register the EC2 Instance with the Target Group
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice register-targets \&lt;br&gt;
  --target-group-identifier tg-08a1d70cb62776f59 \&lt;br&gt;
  --targets '[{"id": "i-012ab2d1599a3a7f5", "port": 80}]' \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "successful": [&lt;br&gt;
        {&lt;br&gt;
            "id": "i-012ab2d1599a3a7f5",&lt;br&gt;
            "port": 80&lt;br&gt;
        }&lt;br&gt;
    ],&lt;br&gt;
    "unsuccessful": []&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Create a Listener for the Service
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-listener \&lt;br&gt;
  --service-identifier svc-0b5ef28909b938204 \&lt;br&gt;
  --name "http-listener" \&lt;br&gt;
  --protocol HTTP \&lt;br&gt;
  --port 80 \&lt;br&gt;
  --default-action '{"forward": {"targetGroups": [{"targetGroupIdentifier": "tg-08a1d70cb62776f59"}]}}' \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:service/svc-0b5ef28909b938204/listener/listener-0db2fbc883a854bf3",&lt;br&gt;
    "defaultAction": {&lt;br&gt;
        "forward": {&lt;br&gt;
            "targetGroups": [&lt;br&gt;
                {&lt;br&gt;
                    "targetGroupIdentifier": "tg-08a1d70cb62776f59",&lt;br&gt;
                    "weight": 100&lt;br&gt;
                }&lt;br&gt;
            ]&lt;br&gt;
        }&lt;br&gt;
    },&lt;br&gt;
    "id": "listener-0db2fbc883a854bf3",&lt;br&gt;
    "name": "http-listener",&lt;br&gt;
    "port": 80,&lt;br&gt;
    "protocol": "HTTP",&lt;br&gt;
    "serviceArn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:service/svc-0b5ef28909b938204",&lt;br&gt;
    "serviceId": "svc-0b5ef28909b938204"&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Associate the Service with the Service Network
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws vpc-lattice create-service-network-service-association \&lt;br&gt;
  --service-network-identifier sn-0735c8dcd85f31ba0 \&lt;br&gt;
  --service-identifier svc-0b5ef28909b938204 \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "arn": "arn:aws:vpc-lattice:us-east-1:XXYY112233:servicenetworkserviceassociation/snsa-0091d77572ee6e123",&lt;br&gt;
    "createdBy": "XXYY112233",&lt;br&gt;
    "dnsEntry": {&lt;br&gt;
        "domainName": "apache-service-0b5ef28909b938204.7d67968.vpc-lattice-svcs.us-east-1.on.aws",&lt;br&gt;
        "hostedZoneId": "Z0681547Z82L3THDFSCZ"&lt;br&gt;
    },&lt;br&gt;
    "id": "snsa-0091d77572ee6e123",&lt;br&gt;
    "status": "CREATE_IN_PROGRESS"&lt;br&gt;
}&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Create a Lambda Function to Access the Apache Server
&lt;/h3&gt;

&lt;p&gt;python&lt;br&gt;
import json&lt;br&gt;
import urllib.request&lt;br&gt;
import os&lt;/p&gt;

&lt;p&gt;def lambda_handler(event, context):&lt;br&gt;
    # Get the VPC Lattice service DNS name from environment variable&lt;br&gt;
    service_url = os.environ['SERVICE_URL']&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;try:
    # Make a request to the Apache server through VPC Lattice
    with urllib.request.urlopen(f"http://{service_url}") as response:
        html = response.read().decode('utf-8')

    return {
        'statusCode': 200,
        'body': json.dumps({
            'message': 'Successfully accessed Apache server through VPC Lattice',
            'html_snippet': html[:500] + '...' if len(html) &amp;gt; 500 else html
        })
    }
except Exception as e:
    return {
        'statusCode': 500,
        'body': json.dumps({
            'message': 'Error accessing Apache server',
            'error': str(e)
        })
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws lambda create-function \&lt;br&gt;
  --function-name VPCLatticeApacheAccess \&lt;br&gt;
  --runtime python3.9 \&lt;br&gt;
  --role arn:aws:iam::XXYY112233:role/LatticeAccessRole \&lt;br&gt;
  --handler lambda_function.lambda_handler \&lt;br&gt;
  --zip-file fileb://~/lambda_function.zip \&lt;br&gt;
  --vpc-config "SubnetIds=subnet-02f8a7734c22ff7a5,subnet-0139b62cbd4fc7768,SecurityGroupIds=sg-0760a256370568790" \&lt;br&gt;
  --environment "Variables={SERVICE_URL=apache-service-0b5ef28909b938204.7d67968.vpc-lattice-svcs.us-east-1.on.aws}" \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Test the Lambda Function
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws lambda invoke \&lt;br&gt;
  --function-name VPCLatticeApacheAccess \&lt;br&gt;
  --payload '{}' \&lt;br&gt;
  --region us-east-1 \&lt;br&gt;
  response.json &amp;amp;&amp;amp; cat response.json&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "StatusCode": 200,&lt;br&gt;
    "ExecutedVersion": "$LATEST"&lt;br&gt;
}&lt;br&gt;
{"statusCode": 200, "body": "{\"message\": \"Successfully accessed Apache server through VPC Lattice\", \"html_snippet\": \"test web\n\"}"}&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Make the Lambda Function Publicly Accessible (Optional)
&lt;/h3&gt;

&lt;p&gt;bash&lt;br&gt;
$ aws apigateway create-rest-api \&lt;br&gt;
  --name "VPCLatticeApacheAccess-API" \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;$ aws apigateway create-resource \&lt;br&gt;
  --rest-api-id xxyyzzzxx \&lt;br&gt;
  --parent-id ju51yslurg \&lt;br&gt;
  --path-part "apache" \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;$ aws apigateway put-method \&lt;br&gt;
  --rest-api-id xxyyzzzxx \&lt;br&gt;
  --resource-id 129hegto \&lt;br&gt;
  --http-method GET \&lt;br&gt;
  --authorization-type NONE \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;$ aws apigateway put-integration \&lt;br&gt;
  --rest-api-id xxyyzzxx \&lt;br&gt;
  --resource-id 129hegto \&lt;br&gt;
  --http-method GET \&lt;br&gt;
  --type AWS_PROXY \&lt;br&gt;
  --integration-http-method POST \&lt;br&gt;
  --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:XXYY112233:function:VPCLatticeApacheAccess/invocations \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;$ aws apigateway create-deployment \&lt;br&gt;
  --rest-api-id xxyyxxzz \&lt;br&gt;
  --stage-name prod \&lt;br&gt;
  --region us-east-1&lt;/p&gt;

&lt;p&gt;Test the public endpoint:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
$ curl -s &lt;a href="https://xxxyyyxxx.execute-api.us-east-1.amazonaws.com/prod/apache" rel="noopener noreferrer"&gt;https://xxxyyyxxx.execute-api.us-east-1.amazonaws.com/prod/apache&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;{"message": "Successfully accessed Apache server through VPC Lattice", "html_snippet": "test web\n"}&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fk802di1rzgafe2w1a7xq.png" class="article-body-image-wrapper"&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%2Farticles%2Fk802di1rzgafe2w1a7xq.png" alt=" " width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use VPC Lattice with Lambda Instead of ALB
&lt;/h2&gt;

&lt;p&gt;✅ ## When to Use VPC Lattice Instead of ALB&lt;/p&gt;

&lt;p&gt;While Application Load Balancers (ALBs) are a common choice for routing traffic to backend services, VPC Lattice with Lambda offers several advantages in specific scenarios:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Multi-VPC Architectures 🌐
&lt;/h3&gt;

&lt;p&gt;VPC Lattice Advantage: VPC Lattice is designed for multi-VPC environments. It eliminates the need for complex networking setups like VPC peering or &lt;br&gt;
Transit Gateway.&lt;/p&gt;

&lt;p&gt;Business Case: Organizations with strict isolation requirements between different business units or applications that still need to communicate with &lt;br&gt;
each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Service Discovery 🧭
&lt;/h3&gt;

&lt;p&gt;VPC Lattice Advantage: Built-in service discovery through DNS and service mesh capabilities.&lt;/p&gt;

&lt;p&gt;Business Case: Microservices architectures where services need to discover and communicate with each other dynamically.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fine-Grained Access Control 🔐
&lt;/h3&gt;

&lt;p&gt;VPC Lattice Advantage: Supports IAM-based authentication and authorization at the service level.&lt;/p&gt;

&lt;p&gt;Business Case: Environments with strict security requirements where you need to control which services can communicate with each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Serverless-First Architectures ☁️⚡
&lt;/h3&gt;

&lt;p&gt;VPC Lattice Advantage: Seamless integration with Lambda functions, eliminating the need for maintaining networking infrastructure.&lt;/p&gt;

&lt;p&gt;Business Case: Organizations embracing serverless architectures that need to connect to legacy or containerized services.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Cost Optimization for Variable Traffic 💰📉
&lt;/h3&gt;

&lt;p&gt;VPC Lattice Advantage: Pay-per-use pricing model with no minimum fees or idle charges.&lt;/p&gt;

&lt;p&gt;Business Case: Applications with variable or unpredictable traffic patterns where maintaining always-on ALBs would be costly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛍️ Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;1.🏦 Financial Services: Connecting customer-facing applications with backend processing systems while maintaining strict isolation between environments.&lt;/p&gt;

&lt;p&gt;2.🏥 Healthcare: Enabling secure communication between patient-facing applications and protected health information (PHI) systems across different &lt;br&gt;
security domains.&lt;/p&gt;

&lt;p&gt;3.🛒 Retail: Connecting inventory management systems with order processing services across different business units or acquisitions.&lt;/p&gt;

&lt;p&gt;4.🧑‍💻 SaaS Platforms: Providing isolated environments for each customer while enabling shared services to communicate across tenant boundaries.&lt;/p&gt;

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

&lt;p&gt;VPC Lattice provides a simpler, more service-oriented approach to networking in AWS. By focusing on services rather than network connectivity, it &lt;br&gt;
eliminates much of the complexity associated with traditional networking solutions.&lt;/p&gt;

&lt;p&gt;Our POC demonstrates how VPC Lattice can connect services across different VPCs with minimal configuration. The Lambda function in SpokeA VPC can &lt;br&gt;
seamlessly access the Apache server in SpokeC VPC through VPC Lattice, without any direct network connectivity between the VPCs.&lt;/p&gt;

&lt;p&gt;For organizations with multi-VPC architectures, microservices, or serverless applications, VPC Lattice offers a compelling alternative to traditional &lt;br&gt;
networking approaches. It simplifies service-to-service communication, enhances security through fine-grained access control, and reduces operational &lt;br&gt;
overhead.&lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;💬 Have you tried VPC Lattice in your environment? What challenges did you face with cross-VPC communication?&lt;br&gt;
👇 Drop your thoughts and war stories in the comments! Let’s learn together. 🔍🧵&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awsnetworking</category>
      <category>vpc</category>
      <category>vpclattice</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Tue, 15 Jul 2025 10:39:14 +0000</pubDate>
      <link>https://forem.com/devopssourav/-5a7m</link>
      <guid>https://forem.com/devopssourav/-5a7m</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/aws-builders/serverless-meets-secure-networking-payment-gateway-building-block-with-vpc-lattice-3f2b" class="crayons-story__hidden-navigation-link"&gt;Serverless Meets Secure Networking: Payment Gateway building block with VPC Lattice&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/aws-builders"&gt;
            &lt;img alt="AWS Community Builders  logo" 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%2Forganization%2Fprofile_image%2F2794%2F88da75b6-aadd-4ea1-8083-ae2dfca8be94.png" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/devopssourav" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&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%2F889808%2Fbbba2bbe-531f-410f-8340-6d7a212ab398.png" alt="devopssourav profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/devopssourav" class="crayons-story__secondary fw-medium m:hidden"&gt;
              sourav chakraborty
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                sourav chakraborty
                
              
              &lt;div id="story-author-preview-content-2661447" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/devopssourav" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2F889808%2Fbbba2bbe-531f-410f-8340-6d7a212ab398.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;sourav chakraborty&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/aws-builders" class="crayons-story__secondary fw-medium"&gt;AWS Community Builders &lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/aws-builders/serverless-meets-secure-networking-payment-gateway-building-block-with-vpc-lattice-3f2b" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 12 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/aws-builders/serverless-meets-secure-networking-payment-gateway-building-block-with-vpc-lattice-3f2b" id="article-link-2661447"&gt;
          Serverless Meets Secure Networking: Payment Gateway building block with VPC Lattice
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/aws"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;aws&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/serverless"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;serverless&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vpclattice"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vpclattice&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/aws-builders/serverless-meets-secure-networking-payment-gateway-building-block-with-vpc-lattice-3f2b" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/aws-builders/serverless-meets-secure-networking-payment-gateway-building-block-with-vpc-lattice-3f2b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            14 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>aws</category>
      <category>serverless</category>
      <category>vpclattice</category>
    </item>
    <item>
      <title>🛡️ Zero Trust for File Uploads in S3: Protecting Amazon S3 with Trend Micro FSS</title>
      <dc:creator>sourav chakraborty</dc:creator>
      <pubDate>Sat, 12 Jul 2025 17:43:14 +0000</pubDate>
      <link>https://forem.com/aws-builders/shielding-s3-buckets-securing-file-uploads-with-trend-micro-file-storage-security-3be6</link>
      <guid>https://forem.com/aws-builders/shielding-s3-buckets-securing-file-uploads-with-trend-micro-file-storage-security-3be6</guid>
      <description>&lt;h2&gt;
  
  
  📥 Introduction
&lt;/h2&gt;

&lt;p&gt;In today’s cloud-native world, &lt;strong&gt;Amazon S3&lt;/strong&gt; is a cornerstone for storing application uploads—images, documents, archives, and more. But with flexibility comes risk. Users might unknowingly (or intentionally) upload malicious files that can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Compromise your backend systems
&lt;/li&gt;
&lt;li&gt;📤 Spread malware through shared downloads
&lt;/li&gt;
&lt;li&gt;📦 Bypass downstream processors
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;S3 doesn't scan uploaded files for malware.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Trend Micro File Storage Security (FSS)&lt;/strong&gt; — a real-time, serverless scanning solution to &lt;strong&gt;protect your S3 buckets&lt;/strong&gt; from file-based threats.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧨 The Problem: Vulnerable File Uploads
&lt;/h2&gt;

&lt;p&gt;Let’s say you’re running a file-sharing or content review app. Malicious users could upload:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📎 Ransomware-infected ZIPs
&lt;/li&gt;
&lt;li&gt;📄 Trojan-embedded Word docs
&lt;/li&gt;
&lt;li&gt;🧾 JavaScript exploits hidden in PDFs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without inspection, these files could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🖥️ Be processed by backend Lambda or EC2 services
&lt;/li&gt;
&lt;li&gt;🔗 Be shared with other users
&lt;/li&gt;
&lt;li&gt;📉 Lead to data breaches or cloud compromise
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ The Solution: Trend Micro File Storage Security (FSS)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Trend Micro FSS&lt;/strong&gt; Trend Micro FSS is a serverless, event-driven scanning solution built for AWS. It integrates directly with Amazon S3 and uses Trend Micro's advanced malware detection engine to scan files in real-time. The solution classifies scan outcomes and takes defined actions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🧪 Scan Result&lt;/th&gt;
&lt;th&gt;✅ Action Taken&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✔️ Clean&lt;/td&gt;
&lt;td&gt;Move to ✅ Clean Bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛑 Malicious&lt;/td&gt;
&lt;td&gt;Move to 🚫 Quarantine Bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;❓ Scan Failed&lt;/td&gt;
&lt;td&gt;Move to ⚠️ Failure Bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Key Features at a Glance&lt;/p&gt;

&lt;p&gt;⬇️ Decrease Threat Vectors with Malware Scanning: Block known harmful files using Trend Micro anti-malware signatures for viruses, Trojans, spyware, and more.&lt;/p&gt;

&lt;p&gt;🤝 File Reputation: Cross-check files against threat intelligence to determine if they are known to be malicious.&lt;/p&gt;

&lt;p&gt;✨ Variant Protection: Detect polymorphic or obfuscated malware using advanced pattern-matching and fragment analysis.&lt;/p&gt;

&lt;p&gt;💪 Extensive Flexibility: Scan all file types, including .BIN, .EXE, .JPEG, .MP4, .PDF, .TXT, .ZIP, and more — with no size or type restriction.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Architecture Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F3nht0gjl2gq5h9aztu05.png" class="article-body-image-wrapper"&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%2Farticles%2F3nht0gjl2gq5h9aztu05.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚙️ Setup Guide (Step-by-Step)&lt;br&gt;
✅ Step 1: Deploy FSS&lt;br&gt;
Subscribe via AWS Marketplace&lt;/p&gt;

&lt;p&gt;Deploy using the CloudFormation template&lt;/p&gt;

&lt;p&gt;📂 Step 2: Prepare S3 Buckets&lt;br&gt;
uploads-bucket — Original file uploads&lt;/p&gt;

&lt;p&gt;clean-bucket — For scanned, safe files&lt;/p&gt;

&lt;p&gt;quarantine-bucket — For detected malware&lt;/p&gt;

&lt;p&gt;failure-bucket — For scan failures&lt;/p&gt;

&lt;p&gt;🔁 Step 3: Create S3 Event Trigger&lt;br&gt;
json&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
{&lt;br&gt;
  "Event": "s3:ObjectCreated:*",&lt;br&gt;
  "LambdaFunctionArn": "arn:aws:lambda:your-function-arn"&lt;br&gt;
}&lt;br&gt;
🧠 Step 4: Lambda Pseudocode (Simplified)&lt;br&gt;
python&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
def lambda_handler(event, context):&lt;br&gt;
    key = event['Records'][0]['s3']['object']['key']&lt;br&gt;
    bucket = event['Records'][0]['s3']['bucket']['name']&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scan_result = scan_with_trendmicro(bucket, key)

if scan_result == "CLEAN":
    move_to("clean-bucket", key)
elif scan_result == "MALICIOUS":
    move_to("quarantine-bucket", key)
else:
    move_to("failure-bucket", key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;🔐 Step 5: IAM Role Permissions&lt;br&gt;
Ensure Lambda has access to:&lt;/p&gt;

&lt;p&gt;s3:GetObject, PutObject, DeleteObject&lt;/p&gt;

&lt;p&gt;Trend Micro FSS API endpoint&lt;/p&gt;

&lt;p&gt;Destination buckets&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F2h85fujsuanmc1newlqu.png" class="article-body-image-wrapper"&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%2Farticles%2F2h85fujsuanmc1newlqu.png" alt=" " width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also get a report of scan acviity in Trendmicro console&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fswa8zrw18v17egicnm9y.png" class="article-body-image-wrapper"&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%2Farticles%2Fswa8zrw18v17egicnm9y.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔔 Bonus Features&lt;br&gt;
📩 Send SNS/Slack alerts on malware detection&lt;/p&gt;

&lt;p&gt;🏷️ Tag files with scan_result=clean|malicious|failed&lt;/p&gt;

&lt;p&gt;🧩 Connect EventBridge → Security Hub for automatic SOAR response&lt;/p&gt;

&lt;p&gt;🧠 Best Practices&lt;br&gt;
✅ Block public access to all buckets&lt;br&gt;
✅ Apply bucket encryption (SSE-S3 or KMS)&lt;br&gt;
✅ Use lifecycle rules to auto-delete old files&lt;br&gt;
✅ Limit file size and scan timeout thresholds&lt;/p&gt;

&lt;p&gt;🏁 Final Thoughts&lt;br&gt;
Trend Micro File Storage Security provides a plug-and-play solution to scan every file that hits your S3 bucket. It isolates threats, supports automation, and requires minimal maintenance.&lt;/p&gt;

&lt;p&gt;🛡️ Don’t let your file uploads be a backdoor into your cloud.&lt;/p&gt;

&lt;p&gt;📚 Resources&lt;br&gt;
🔗 &lt;a href="https://www.trendmicro.com/en_in/business/products/one-platform.html" rel="noopener noreferrer"&gt;Trend Micro File Storage Security Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📝 &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html" rel="noopener noreferrer"&gt;AWS S3 Event Notifications&lt;br&gt;
&lt;/a&gt;&lt;br&gt;
🔐 &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html" rel="noopener noreferrer"&gt;IAM Best Practices&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloudsecurity</category>
      <category>s3protection</category>
      <category>filesecurity</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
