<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ashwin Raiyani</title>
    <description>The latest articles on DEV Community by Ashwin Raiyani (@ashwinraiyani).</description>
    <link>https://dev.to/ashwinraiyani</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%2F522305%2Fddecf509-e4ce-4810-a036-dca213fc731b.jpeg</url>
      <title>DEV Community: Ashwin Raiyani</title>
      <link>https://dev.to/ashwinraiyani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashwinraiyani"/>
    <language>en</language>
    <item>
      <title>AI That Writes vs AI That Acts: Understanding Generative and Agentic Intelligence</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Tue, 17 Feb 2026 02:53:59 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/ai-that-writes-vs-ai-that-acts-understanding-generative-and-agentic-intelligence-ajo</link>
      <guid>https://dev.to/ashwinraiyani/ai-that-writes-vs-ai-that-acts-understanding-generative-and-agentic-intelligence-ajo</guid>
      <description>&lt;p&gt;Consider you are asking an AI to plan your dream vacation to Kedarnath.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generative AI&lt;/strong&gt; writes you a &lt;em&gt;beautiful&lt;/em&gt; 10-day itinerary — complete with spots, temple visits, and temple schedules. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agentic AI&lt;/strong&gt; books the flights, reserves the stay, adds calendar reminders, and sends you a packing list based on the weather forecast. &lt;/p&gt;

&lt;p&gt;Same question. &lt;em&gt;Wildly&lt;/em&gt; different outcomes.&lt;/p&gt;

&lt;p&gt;Welcome to the most important distinction in modern AI — and by the end of this post, you'll understand it better than most people in tech. Let's dive in. &lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;What is Generative AI?&lt;/li&gt;
&lt;li&gt;What is Agentic AI?&lt;/li&gt;
&lt;li&gt;Side-by-Side Comparison&lt;/li&gt;
&lt;li&gt;How They Work Under the Hood&lt;/li&gt;
&lt;li&gt;Real-World Use Cases&lt;/li&gt;
&lt;li&gt;Mini Walkthrough: See Them in Action&lt;/li&gt;
&lt;li&gt;Can They Work Together?&lt;/li&gt;
&lt;li&gt;Where is This All Heading?&lt;/li&gt;
&lt;li&gt;Pro Tips for Beginners&lt;/li&gt;
&lt;li&gt;Wrapping Up&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Generative AI: The Creative Genius
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Generative AI&lt;/strong&gt; is the AI that &lt;em&gt;creates&lt;/em&gt;. It generates new content — text, images, music, code, video — based on patterns it learned from massive datasets.&lt;/p&gt;

&lt;p&gt;Think of it as the &lt;strong&gt;world's most well-read intern&lt;/strong&gt;. It's absorbed billions of documents, images, and conversations, and when you ask it something, it &lt;em&gt;generates&lt;/em&gt; a response by predicting what should come next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples you've probably already used:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;ChatGPT / Claude&lt;/strong&gt; → Generates text responses to your prompts&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;DALL·E / Midjourney&lt;/strong&gt; → Generates images from descriptions&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Suno / Udio&lt;/strong&gt; → Generates music from text&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;GitHub Copilot&lt;/strong&gt; → Generates code suggestions as you type&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Characteristics:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Creates &lt;strong&gt;new content&lt;/strong&gt; (doesn't just retrieve existing stuff)&lt;/li&gt;
&lt;li&gt;✅ Works from a &lt;strong&gt;single prompt&lt;/strong&gt; → &lt;strong&gt;single output&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ Excellent at &lt;strong&gt;language, creativity, and pattern recognition&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⚠️ Doesn't &lt;em&gt;do&lt;/em&gt; anything in the real world — it &lt;strong&gt;responds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⚠️ Needs a human to act on its output&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Think of it this way:&lt;/strong&gt; Generative AI is like a brilliant advisor sitting across the table from you. It gives &lt;em&gt;phenomenal&lt;/em&gt; advice. But it never gets up from the chair.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Agentic AI: The Autonomous Doer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Agentic AI&lt;/strong&gt; is the AI that &lt;em&gt;acts&lt;/em&gt;. It doesn't just generate a response — it &lt;strong&gt;plans, reasons, uses tools, and executes multi-step tasks&lt;/strong&gt; autonomously (or semi-autonomously).&lt;/p&gt;

&lt;p&gt;It's like giving that brilliant advisor a laptop, a phone, API keys, and saying: &lt;em&gt;"Don't just tell me what to do — go do it."&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples that are changing the game:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;GitHub Copilot Coding Agent&lt;/strong&gt; → Receives an issue, writes code, opens a PR — autonomously&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;AI Research Agents&lt;/strong&gt; → Browse the web, read papers, synthesize findings, write reports&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Data Analysis Agents&lt;/strong&gt; → Connect to your database, run queries, generate insights, create dashboards&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Customer Support Agents&lt;/strong&gt; → Read tickets, check order status, issue refunds — end to end&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Characteristics:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Plans&lt;/strong&gt; a sequence of steps to achieve a goal&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Uses tools&lt;/strong&gt; (APIs, browsers, databases, file systems)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Makes decisions&lt;/strong&gt; and adapts on the fly&lt;/li&gt;
&lt;li&gt;✅ Can operate in &lt;strong&gt;loops&lt;/strong&gt; — evaluate results, retry, self-correct&lt;/li&gt;
&lt;li&gt;⚠️ Requires careful &lt;strong&gt;guardrails&lt;/strong&gt; and &lt;strong&gt;human oversight&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⚠️ More complex to build and manage&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Think of it this way:&lt;/strong&gt; Agentic AI is that advisor who stood up, grabbed the car keys, and started &lt;em&gt;handling things&lt;/em&gt;. Powerful? Absolutely. Needs supervision? Also absolutely.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Big Comparison Table
&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;Generative AI&lt;/th&gt;
&lt;th&gt;Agentic AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Function&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Creates content&lt;/td&gt;
&lt;td&gt;Takes actions &amp;amp; completes tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interaction Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Prompt → Response (one-shot)&lt;/td&gt;
&lt;td&gt;Goal → Plan → Execute → Evaluate (loop)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Autonomy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (human drives each step)&lt;/td&gt;
&lt;td&gt;High (AI drives multi-step workflows)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tool Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rarely (mostly internal knowledge)&lt;/td&gt;
&lt;td&gt;Extensively (APIs, browsers, databases)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited to context window&lt;/td&gt;
&lt;td&gt;Can maintain long-term task memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-Correction&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Only if you re-prompt it&lt;/td&gt;
&lt;td&gt;Built-in reflection &amp;amp; retry loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Write me a marketing email"&lt;/td&gt;
&lt;td&gt;"Run my entire email campaign for Q1"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity to Build&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk Level&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lower (output only)&lt;/td&gt;
&lt;td&gt;Higher (real-world actions)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human Role&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reviewer of output&lt;/td&gt;
&lt;td&gt;Supervisor of process&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⚙️ How They Work Under the Hood
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Generative AI — The Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Your Prompt] → [Large Language Model (LLM)] → [Generated Output]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's (conceptually) a &lt;strong&gt;one-way street&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You provide a prompt&lt;/li&gt;
&lt;li&gt;The model processes it through billions of parameters&lt;/li&gt;
&lt;li&gt;It predicts the most likely next tokens (words/pixels/notes)&lt;/li&gt;
&lt;li&gt;You get a single output&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The magic is in the &lt;strong&gt;training data&lt;/strong&gt; and the &lt;strong&gt;model architecture&lt;/strong&gt; (Transformers, Diffusion Models, etc.). But once it gives you the output, it's done. Ball's in your court.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agentic AI — The Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Your Goal]
    → [Planner: Break goal into steps]
    → [Step 1: Use Tool A] → [Evaluate result]
    → [Step 2: Use Tool B] → [Evaluate result]
    → [Step 3: Reflect — is this working?]
    → [Adjust plan if needed]
    → [Final Output / Action]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a &lt;strong&gt;loop&lt;/strong&gt; — often called a &lt;strong&gt;ReAct loop&lt;/strong&gt; (Reasoning + Acting):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reason&lt;/strong&gt; about what needs to happen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act&lt;/strong&gt; using available tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observe&lt;/strong&gt; the results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat&lt;/strong&gt; until the goal is achieved (or a limit is reached)&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key Insight:&lt;/strong&gt; Agentic AI almost always has a Generative AI model at its core (like GPT-4, Claude, or Gemini). The "agentic" part is the &lt;strong&gt;scaffolding&lt;/strong&gt; around it — the planning, tool use, memory, and execution layer.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🌍 Real-World Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Generative AI Shines When...
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✍️ Writing a blog post&lt;/td&gt;
&lt;td&gt;Generates a draft from your outline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🖼️ Creating marketing visuals&lt;/td&gt;
&lt;td&gt;Produces images from text descriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💻 Code completion&lt;/td&gt;
&lt;td&gt;Suggests the next line as you type&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📝 Summarizing documents&lt;/td&gt;
&lt;td&gt;Condenses a 50-page PDF into key points&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🌐 Translating content&lt;/td&gt;
&lt;td&gt;Converts text between languages with nuance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎓 Explaining concepts&lt;/td&gt;
&lt;td&gt;Breaks down quantum physics like you're five&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Agentic AI Shines When...
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fixing a GitHub issue&lt;/td&gt;
&lt;td&gt;Reads the issue, explores the codebase, writes &amp;amp; tests a fix, opens a PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Market research&lt;/td&gt;
&lt;td&gt;Browses 20 sources, compares data, generates a report with citations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Personal shopping&lt;/td&gt;
&lt;td&gt;Checks prices across sites, applies coupons, places the order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevOps automation&lt;/td&gt;
&lt;td&gt;Detects a failing deployment, reads logs, applies a fix, re-deploys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meeting scheduling&lt;/td&gt;
&lt;td&gt;Checks everyone's calendars, finds a slot, sends invites, books a room&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data pipeline management&lt;/td&gt;
&lt;td&gt;Monitors, troubleshoots, and repairs ETL pipelines autonomously&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Mini Walkthrough: See Them in Action
&lt;/h2&gt;

&lt;p&gt;Let's make this real. Imagine you're a developer and you've found a bug in your open source project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario: "The login button isn't working on mobile" 🐛📱
&lt;/h3&gt;




&lt;h4&gt;
  
  
  With Generative AI (e.g., ChatGPT):
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;You:&lt;/strong&gt; "The login button on our React app doesn't respond to taps on mobile. Here's the component code. What's wrong?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI:&lt;/strong&gt; "The issue is likely that your &lt;code&gt;onClick&lt;/code&gt; handler doesn't account for touch events on mobile. Here's a fix — add an &lt;code&gt;onTouchEnd&lt;/code&gt; handler or use a button element instead of a div with a click handler..."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// AI-suggested fix&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;
  &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"login-btn"&lt;/span&gt;
  &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleLogin&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  Log In
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; You got a great answer. Now &lt;em&gt;you&lt;/em&gt; need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your IDE&lt;/li&gt;
&lt;li&gt;Find the right file&lt;/li&gt;
&lt;li&gt;Make the change&lt;/li&gt;
&lt;li&gt;Test it&lt;/li&gt;
&lt;li&gt;Commit and push&lt;/li&gt;
&lt;li&gt;Open a PR&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  With Agentic AI (e.g., GitHub Copilot Coding Agent):
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;You:&lt;/strong&gt; Assign the GitHub issue &lt;em&gt;"Login button unresponsive on mobile"&lt;/em&gt; to Copilot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent (thinking):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;em&gt;Read the issue description and comments&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Search the codebase for login-related components&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Identify that &lt;code&gt;LoginButton.jsx&lt;/code&gt; uses a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with &lt;code&gt;onClick&lt;/code&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Refactor to use a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; with proper touch handling&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Run existing tests and verify they pass&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; &lt;em&gt;Open a pull request with a clear description of the fix&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; You wake up to a ready-to-review PR. You read the diff, approve it, and merge. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;See the difference?&lt;/strong&gt; Same problem. Generative AI gave you the &lt;em&gt;knowledge&lt;/em&gt;. Agentic AI gave you the &lt;em&gt;solution, implemented&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Two Paradigms of AI: Generative and Agentic: Can They Work Together?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Absolutely.&lt;/strong&gt; And this is where the real magic happens.&lt;/p&gt;

&lt;p&gt;In fact, most powerful AI systems in 2026 are &lt;strong&gt;both generative AND agentic&lt;/strong&gt;. The generative model is the &lt;em&gt;brain&lt;/em&gt;. The agentic framework is the &lt;em&gt;body&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Here's a real-world combo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📋 You: "Prepare a weekly engineering report for my team"

Agentic Layer:
   ├── Step 1: Query GitHub API for merged PRs this week (Tool Use)
   ├── Step 2: Query Jira for completed tickets (Tool Use)
   ├── Step 3: Pull deployment logs for uptime stats (Tool Use)
   └── Step 4: Pass all data to Generative AI ↓

Generative Layer:
   └── Writes a beautifully formatted, human-readable report
       with highlights, shoutouts, and key metrics

Agentic Layer (continued):
   ├── Step 5: Posts report to Slack #engineering channel (Tool Use)
   └── Step 6: Emails a copy to the VP of Engineering (Tool Use)

✅ Done. You didn't lift a finger.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is the pattern:&lt;/strong&gt; Agentic AI &lt;em&gt;orchestrates&lt;/em&gt;. Generative AI &lt;em&gt;creates&lt;/em&gt;. Together, they're unstoppable.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Where is This All Heading?
&lt;/h2&gt;

&lt;p&gt;Here's a quick look at the evolution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2022 │ Generative AI goes mainstream (ChatGPT launches)
     │
2023 │ Developers start building "chains" (LangChain, etc.)
     │
2024 │ Agentic AI emerges (AutoGPT, CrewAI, OpenAI Assistants)
     │
2025 │ Production-grade agents arrive (GitHub Copilot Agent,
     │    Google's Project Mariner, Anthropic's Computer Use)
     │
2026 │ Multi-agent systems go mainstream
(now)│    Agents collaborate with EACH OTHER
     │
2027+│ Autonomous agent ecosystems?
     │    Agents that hire other agents? 👀
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We're currently in the &lt;strong&gt;"agents in production"&lt;/strong&gt; era. The question isn't &lt;em&gt;if&lt;/em&gt; agentic AI will impact your work — it's &lt;em&gt;when&lt;/em&gt; (spoiler: probably already has).&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Pro Tips for Beginners
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Tip #1: Start With Generative, Graduate to Agentic
&lt;/h3&gt;

&lt;p&gt;Don't try to build autonomous agents on day one. Get comfortable with prompting, understand how LLMs think, and &lt;em&gt;then&lt;/em&gt; add tool use and planning layers.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tip #2: "Agentic" Doesn't Mean "No Humans"
&lt;/h3&gt;

&lt;p&gt;The best agentic systems keep humans in the loop. Think &lt;strong&gt;autopilot&lt;/strong&gt;, not &lt;strong&gt;unmanned rocket&lt;/strong&gt;. You're the pilot — the AI handles the tedious parts.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tip #3: Learn the Tooling Ecosystem
&lt;/h3&gt;

&lt;p&gt;Get familiar with these building blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLM APIs&lt;/strong&gt; (OpenAI, Anthropic, Google) — the brains&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Frameworks&lt;/strong&gt; (LangGraph, CrewAI, AutoGen) — the skeleton&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool Libraries&lt;/strong&gt; (function calling, MCP, API integrations) — the hands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt; (output validation, approval workflows) — the seatbelts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Tip #4: Watch for the "Agent Tax"
&lt;/h3&gt;

&lt;p&gt;Agentic AI makes &lt;em&gt;lots&lt;/em&gt; of API calls (LLM calls, tool calls, retry loops). Costs can add up fast. Always set &lt;strong&gt;budgets and limits&lt;/strong&gt; on your agent loops.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tip #5: Build Your First Agent This Weekend
&lt;/h3&gt;

&lt;p&gt;Seriously. Here's a simple starter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick a repetitive task you do weekly&lt;/li&gt;
&lt;li&gt;Break it into 3-5 steps&lt;/li&gt;
&lt;li&gt;Use an LLM + function calling to automate it&lt;/li&gt;
&lt;li&gt;Add a simple loop for error handling&lt;/li&gt;
&lt;li&gt;You just built an agent. &lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Quick Reference Cheat Sheet
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│              AI PARADIGM CHEAT SHEET                │
├─────────────────────────────────────────────────────┤
│                                                     │
│   GENERATIVE AI           AGENTIC AI           │
│  ─────────────────         ──────────────           │
│  • Creates content         • Completes tasks        │
│  • Single turn             • Multi-step loops       │
│  • You act on output       • It acts for you        │
│  • Prompt → Response       • Goal → Plan → Execute  │
│  • Low risk                • Needs guardrails       │
│  • Easy to start           • Harder to build        │
│                                                     │
│   BEST TOGETHER:                                  │
│  Agentic orchestrates + Generative creates          │
│  = AI that thinks AND does                          │
│                                                     │
└─────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;If there's &lt;strong&gt;one thing&lt;/strong&gt; to remember from this post, it's this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Generative AI is your creative partner. Agentic AI is your autonomous teammate. The future runs on both.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We're living in a remarkable time. Two years ago, "AI" meant chatbots that could barely hold a conversation. Today, AI agents are writing code, conducting research, and managing workflows — while generative models create art, music, and prose that rivals human creativity.&lt;/p&gt;

&lt;p&gt;Start with a prompt. Build a small agent. Break things. Learn. Iterate.&lt;/p&gt;

&lt;p&gt;The AI revolution isn't something that's happening &lt;em&gt;to&lt;/em&gt; you. It's something you can be a part of — &lt;strong&gt;starting today&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Call to Action
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;** Drop a comment** — Are you Team Generative, Team Agentic, or Team Both?&lt;/li&gt;
&lt;li&gt;** Build something** — Try the weekend agent challenge from Pro Tip #5&lt;/li&gt;
&lt;/ol&gt;




</description>
      <category>ai</category>
      <category>agents</category>
      <category>aws</category>
    </item>
    <item>
      <title>Anomalies to Insights: CloudWatch &amp; SageMaker for Smarter Observability</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Wed, 10 Sep 2025 17:52:27 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/anomalies-to-insights-cloudwatch-sagemaker-for-smarter-observability-b8l</link>
      <guid>https://dev.to/ashwinraiyani/anomalies-to-insights-cloudwatch-sagemaker-for-smarter-observability-b8l</guid>
      <description>&lt;p&gt;&lt;em&gt;📊 Technical Deep Dive • ⏱️ 15 min read • 🎯 Beginner to Intermediate&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The 3 AM Model Meltdown Scenario&lt;/li&gt;
&lt;li&gt;
Why Traditional Monitoring Fails ML
&lt;/li&gt;
&lt;li&gt;CloudWatch Fundamentals for ML&lt;/li&gt;
&lt;li&gt;SageMaker's Observability Superpowers&lt;/li&gt;
&lt;li&gt;Hands-On: Building Your Pipeline&lt;/li&gt;
&lt;li&gt;Real-World Success Story&lt;/li&gt;
&lt;li&gt;Best Practices &amp;amp; Pro Tips&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The 3 AM Model Meltdown Scenario
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Picture this: It's 3 AM. Your phone buzzes with alerts. Your machine learning model's accuracy just plummeted from 95% to 60%, and you have absolutely no idea why. Your recommendation engine is now suggesting winter coats to customers in Miami, and your fraud detection system just flagged every legitimate transaction as suspicious.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sound familiar? If you've worked with ML models in production, you've probably lived through this nightmare at least once. The traditional approach of "deploy and hope for the best" simply doesn't cut it in the world of machine learning, where models can drift silently and data can shift without warning.&lt;/p&gt;

&lt;p&gt;Here's the good news: AWS CloudWatch and SageMaker have evolved into a powerful observability duo that can transform those panic-inducing 3 AM alerts into proactive insights. Instead of reactive firefighting, you'll have a crystal-clear view of your model's health, performance, and behavior patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 What You'll learn Today
&lt;/h3&gt;

&lt;p&gt;By the end of this guide, you'll understand how to set up comprehensive ML observability that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Catches issues before they impact users&lt;/li&gt;
&lt;li&gt;Provides actionable insights for model improvement
&lt;/li&gt;
&lt;li&gt;Turns monitoring from a necessary evil into your competitive advantage&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Traditional Monitoring Falls Short
&lt;/h2&gt;

&lt;p&gt;Traditional application monitoring focuses on infrastructure metrics: CPU usage, memory consumption, response times. These metrics work great for web applications, but they tell you virtually nothing about the health of your machine learning models.&lt;/p&gt;

&lt;p&gt;Consider Sarah, a data scientist at a fintech startup. Her fraud detection model worked perfectly during testing, achieving 97% accuracy on historical data. But three months after deployment, something strange started happening:&lt;/p&gt;

&lt;h3&gt;
  
  
  📉 The Silent Killer: Model Drift
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Month 1:&lt;/strong&gt; Model accuracy: 97% ✅&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Month 2:&lt;/strong&gt; Model accuracy: 94% ⚠️ (within acceptable range)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Month 3:&lt;/strong&gt; Model accuracy: 89% ❌ (significant degradation)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;The Kicker:&lt;/strong&gt; All infrastructure metrics remained normal. CPU at 45%, memory at 60%, response time under 200ms. Traditional monitoring gave zero indication of the problem.&lt;/p&gt;

&lt;p&gt;This scenario highlights the unique challenges of ML observability:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔄 &lt;strong&gt;Data Drift&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Input data patterns change over time, making your model less effective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Concept Drift&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;The relationship between inputs and outputs shifts in the real world&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 &lt;strong&gt;Performance Degradation&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Model accuracy declines gradually, often going unnoticed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔍 &lt;strong&gt;Bias Introduction&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Models develop unexpected biases as new data patterns emerge&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  ⚡ The ML Monitoring Gap
&lt;/h3&gt;

&lt;p&gt;A study by Algorithmia found that 55% of companies have never deployed an ML model to production, and of those who have, 40% struggle with model monitoring and maintenance. The infrastructure runs fine, but the AI brain inside is slowly degrading.&lt;/p&gt;

&lt;p&gt;This is where CloudWatch and SageMaker's observability features become game-changers. They bridge the gap between traditional infrastructure monitoring and ML-specific observability, giving you insights that actually matter for intelligent systems.&lt;/p&gt;


&lt;h2&gt;
  
  
  CloudWatch Fundamentals: Your ML Observatory
&lt;/h2&gt;

&lt;p&gt;Think of AWS CloudWatch as your mission control center for ML operations. While it started as a traditional infrastructure monitoring service, it has evolved into a comprehensive observability platform that understands the nuances of machine learning workloads.&lt;/p&gt;
&lt;h3&gt;
  
  
  Core Components for ML Monitoring
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&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;📊 &lt;strong&gt;Custom Metrics&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Track model-specific KPIs like accuracy, precision, recall, and business metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📝 &lt;strong&gt;Structured Logs&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Capture prediction inputs, outputs, and metadata for analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚨 &lt;strong&gt;Intelligent Alarms&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Set up alerts based on ML performance thresholds, not just infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📈 &lt;strong&gt;Rich Dashboards&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Visualize model performance alongside infrastructure metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Setting Up Your First ML Metric
&lt;/h3&gt;

&lt;p&gt;Let's start with something practical. Here's how you'd track model accuracy in real-time:&lt;br&gt;
&lt;/p&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="n"&gt;cloudwatch&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;cloudwatch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;log_model_performance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;precision&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Log ML model performance metrics to CloudWatch
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Create custom metrics for model performance
&lt;/span&gt;        &lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ML/ModelPerformance&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;MetricData&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Accuracy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Dimensions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                        &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ModelName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model_name&lt;/span&gt;
                        &lt;span class="p"&gt;}&lt;/span&gt;
                    &lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Timestamp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;utcnow&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Precision&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Dimensions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                        &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ModelName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model_name&lt;/span&gt;
                        &lt;span class="p"&gt;}&lt;/span&gt;
                    &lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;precision&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Recall&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Dimensions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                        &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ModelName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                            &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model_name&lt;/span&gt;
                        &lt;span class="p"&gt;}&lt;/span&gt;
                    &lt;span class="p"&gt;],&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Metrics logged for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error logging metrics: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Usage in your ML pipeline
&lt;/span&gt;&lt;span class="nf"&gt;log_model_performance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-v2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;94.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;precision&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;93.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;recall&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;95.1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  💡 Pro Tip: Namespace Organization
&lt;/h3&gt;

&lt;p&gt;Use hierarchical namespaces like "ML/ModelPerformance", "ML/DataQuality", and "ML/BusinessImpact". This makes it easier to organize dashboards and set up alerts as your ML operations scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding CloudWatch Costs for ML
&lt;/h3&gt;

&lt;p&gt;CloudWatch pricing can surprise newcomers, especially when monitoring ML workloads that generate lots of metrics. Here's what you need to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First 10 custom metrics per month: &lt;strong&gt;Free&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Additional custom metrics: &lt;strong&gt;$0.30&lt;/strong&gt; per metric per month&lt;/li&gt;
&lt;li&gt;API requests: &lt;strong&gt;$0.01&lt;/strong&gt; per 1,000 requests&lt;/li&gt;
&lt;li&gt;Dashboard: &lt;strong&gt;$3.00&lt;/strong&gt; per month per dashboard
&lt;/li&gt;
&lt;li&gt;Logs ingestion: &lt;strong&gt;$0.50&lt;/strong&gt; per GB ingested&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💰 Cost Optimization Strategy
&lt;/h3&gt;

&lt;p&gt;For a typical ML application monitoring 5 models with 20 metrics each, expect around &lt;strong&gt;$30-50/month&lt;/strong&gt; in CloudWatch costs. Use log sampling and metric aggregation to keep costs reasonable while maintaining observability.&lt;/p&gt;




&lt;h2&gt;
  
  
  SageMaker's Observability Superpowers
&lt;/h2&gt;

&lt;p&gt;While CloudWatch provides the monitoring infrastructure, SageMaker brings ML-native observability features that understand your models at a deep level. Think of it as having a data scientist watching your models 24/7.&lt;/p&gt;

&lt;h3&gt;
  
  
  SageMaker Model Monitor: The Game Changer
&lt;/h3&gt;

&lt;p&gt;SageMaker Model Monitor is like having a vigilant guardian for your ML models. It continuously analyzes your model's inputs and outputs, comparing them against a baseline to detect four critical types of drift:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Monitor Type&lt;/th&gt;
&lt;th&gt;What It Detects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Data Quality&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Missing values, type mismatches, constraint violations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 &lt;strong&gt;Model Quality&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Accuracy, precision, recall against ground truth when available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚖️ &lt;strong&gt;Bias Drift&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Identifies if your model develops unfair biases over time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 &lt;strong&gt;Feature Attribution&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Tracks which features drive predictions and how that changes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Setting Up Data Quality Monitoring
&lt;/h3&gt;

&lt;p&gt;Let's walk through setting up data quality monitoring for a real-time endpoint:&lt;br&gt;
&lt;/p&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;sagemaker&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.model_monitor&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultModelMonitor&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.model_monitor.dataset_format&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DatasetFormat&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize SageMaker session
&lt;/span&gt;&lt;span class="n"&gt;sagemaker_session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sagemaker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Create a Model Monitor instance
&lt;/span&gt;&lt;span class="n"&gt;data_quality_monitor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DefaultModelMonitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;execution_role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ml.m5.xlarge&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;volume_size_in_gb&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_runtime_in_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;sagemaker_session&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sagemaker_session&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Suggest baseline using training data
&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data_quality_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggest_baseline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;baseline_dataset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;training_data_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dataset_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DatasetFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/baseline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;wait&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Baseline job completed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;job_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create monitoring schedule
&lt;/span&gt;&lt;span class="n"&gt;monitoring_schedule&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data_quality_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_monitoring_schedule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;monitor_schedule_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-model-data-quality-schedule&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;endpoint_input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;endpoint_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/reports&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;statistics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;baseline_statistics&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggested_constraints&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;schedule_cron_expression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cron(0 * * * ? *)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Every hour
&lt;/span&gt;    &lt;span class="n"&gt;enable_cloudwatch_metrics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Monitoring schedule created: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;monitoring_schedule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;schedule_name&lt;/span&gt;&lt;span class="si"&gt;}&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;h3&gt;
  
  
  🎯 Baseline Best Practices
&lt;/h3&gt;

&lt;p&gt;Use your most recent, representative training data for baselines. Avoid using data from model development or early experiments. The baseline should reflect the data quality and patterns your model expects in production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding SageMaker's Detection Algorithms
&lt;/h3&gt;

&lt;p&gt;SageMaker uses sophisticated statistical methods to detect drift:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kolmogorov-Smirnov Test:&lt;/strong&gt; Compares distributions of continuous features&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chi-Square Test:&lt;/strong&gt; Detects changes in categorical feature distributions
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statistical Distance Metrics:&lt;/strong&gt; Measures how far current data drifts from baseline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraint Validation:&lt;/strong&gt; Checks data types, ranges, and business rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example Drift Metrics:&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;Data Quality Score:        0.92 ✅
Feature Drift Score:       0.78 ⚠️  
Missing Value Rate:        2.1% ✅
Constraint Violations:     5    ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These metrics automatically flow into CloudWatch, where you can set up alerts and create dashboards that give you a holistic view of your model ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hands-On: Building Your Complete Observability Pipeline
&lt;/h2&gt;

&lt;p&gt;Now let's put it all together. We'll build a comprehensive monitoring pipeline for a fraud detection model that combines CloudWatch's flexibility with SageMaker's ML-specific capabilities.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  Step 1: Deploy Your Model with Monitoring Enabled
&lt;/h4&gt;

&lt;p&gt;First, we'll deploy a SageMaker endpoint with data capture enabled. This is crucial for monitoring - you need to capture prediction requests and responses.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.model&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Model&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.predictor&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Predictor&lt;/span&gt;

&lt;span class="c1"&gt;# Create model with monitoring configuration
&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;image_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;container_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;model_data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model_artifacts_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;execution_role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Deploy with data capture configuration
&lt;/span&gt;&lt;span class="n"&gt;predictor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;initial_instance_count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ml.m5.large&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;endpoint_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-endpoint&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;data_capture_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;EnableCapture&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;InitialSamplingPercentage&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Capture 100% for demo
&lt;/span&gt;        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;DestinationS3Uri&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/datacapture&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CaptureOptions&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CaptureMode&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Input&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CaptureMode&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Output&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;]&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;h4&gt;
  
  
  Step 2: Create Custom CloudWatch Metrics
&lt;/h4&gt;

&lt;p&gt;Set up custom metrics that track business-relevant KPIs alongside technical performance metrics.&lt;br&gt;
&lt;/p&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="n"&gt;cloudwatch&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;cloudwatch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;track_business_metrics&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ground_truth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Track business and model performance metrics&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="c1"&gt;# Calculate business metrics
&lt;/span&gt;    &lt;span class="n"&gt;fraud_rate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;predictions&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fraud_probability&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;avg_transaction_amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;transaction_amount&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Model performance metrics (if ground truth available)
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ground_truth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;accuracy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;calculate_accuracy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ground_truth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;precision&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;calculate_precision&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predictions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ground_truth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Log model performance
&lt;/span&gt;        &lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudDetection/ModelPerformance&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;MetricData&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Accuracy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Timestamp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;utcnow&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Precision&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;precision&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Log business metrics
&lt;/span&gt;    &lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudDetection/BusinessMetrics&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;MetricData&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudRate&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fraud_rate&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;MetricName&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AvgTransactionAmount&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;avg_transaction_amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Unit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;None&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
            &lt;span class="p"&gt;}&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;h4&gt;
  
  
  Step 3: Configure SageMaker Model Monitor
&lt;/h4&gt;

&lt;p&gt;Set up comprehensive monitoring that tracks data quality, model quality, and bias drift.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.model_monitor&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultModelMonitor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ModelQualityMonitor&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sagemaker.model_monitor.dataset_format&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DatasetFormat&lt;/span&gt;

&lt;span class="c1"&gt;# Data Quality Monitor
&lt;/span&gt;&lt;span class="n"&gt;data_monitor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DefaultModelMonitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;execution_role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ml.m5.xlarge&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;volume_size_in_gb&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_runtime_in_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create baseline for data quality
&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggest_baseline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;baseline_dataset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;training_data_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dataset_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DatasetFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/data-quality-baseline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Model Quality Monitor (requires ground truth)
&lt;/span&gt;&lt;span class="n"&gt;model_quality_monitor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ModelQualityMonitor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;execution_role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instance_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ml.m5.xlarge&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;volume_size_in_gb&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_runtime_in_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create model quality baseline
&lt;/span&gt;&lt;span class="n"&gt;model_baseline_job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model_quality_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggest_baseline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;baseline_dataset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;validation_data_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dataset_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;DatasetFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/model-quality-baseline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;problem_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;BinaryClassification&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;inference_attribute&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;prediction&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;probability_attribute&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fraud_probability&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ground_truth_attribute&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;is_fraud&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create monitoring schedules
&lt;/span&gt;&lt;span class="n"&gt;data_quality_schedule&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_monitoring_schedule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;monitor_schedule_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-model-data-quality&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;endpoint_input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-endpoint&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/data-quality-reports&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;statistics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;baseline_statistics&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggested_constraints&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;schedule_cron_expression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cron(0 */2 * * ? *)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Every 2 hours
&lt;/span&gt;    &lt;span class="n"&gt;enable_cloudwatch_metrics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;model_quality_schedule&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model_quality_monitor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_monitoring_schedule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;monitor_schedule_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-model-quality&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;endpoint_input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-endpoint&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;output_s3_uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;s3://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bucket&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/monitoring/model-quality-reports&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;statistics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model_baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;baseline_statistics&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model_baseline_job&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;suggested_constraints&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;schedule_cron_expression&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cron(0 */6 * * ? *)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Every 6 hours
&lt;/span&gt;    &lt;span class="n"&gt;enable_cloudwatch_metrics&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 4: Set Up Intelligent Alerts
&lt;/h4&gt;

&lt;p&gt;Create CloudWatch alarms that trigger when model performance degrades or data drift is detected.&lt;br&gt;
&lt;/p&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;cloudwatch&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;cloudwatch&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;sns&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;sns&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create SNS topic for alerts
&lt;/span&gt;&lt;span class="n"&gt;topic_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_topic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ml-model-alerts&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;topic_arn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;topic_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;TopicArn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Subscribe email to topic
&lt;/span&gt;&lt;span class="n"&gt;sns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;TopicArn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;topic_arn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Protocol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;email&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Endpoint&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-email@company.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create alarm for model accuracy drop
&lt;/span&gt;&lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_alarm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;AlarmName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudModel-AccuracyDrop&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ComparisonOperator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LessThanThreshold&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;EvaluationPeriods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;MetricName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Accuracy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudDetection/ModelPerformance&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# 1 hour periods
&lt;/span&gt;    &lt;span class="n"&gt;Statistic&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Average&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;90.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Alert if accuracy drops below 90%
&lt;/span&gt;    &lt;span class="n"&gt;ActionsEnabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;AlarmActions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;topic_arn&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;AlarmDescription&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Alert when model accuracy drops significantly&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Unit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Percent&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create alarm for data drift
&lt;/span&gt;&lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_alarm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;AlarmName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;FraudModel-DataDrift&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ComparisonOperator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GreaterThanThreshold&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;EvaluationPeriods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;MetricName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;feature_baseline_drift_age&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;aws/sagemaker/Endpoints/data-metrics&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Statistic&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Average&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Alert if drift score &amp;gt; 0.2
&lt;/span&gt;    &lt;span class="n"&gt;ActionsEnabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;AlarmActions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;topic_arn&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;AlarmDescription&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Alert when significant data drift detected&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;h3&gt;
  
  
  🚀 Implementation Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start with 100% data capture, then reduce sampling as you understand patterns&lt;/li&gt;
&lt;li&gt;Set up staging environment monitoring first to test your configuration
&lt;/li&gt;
&lt;li&gt;Use CloudFormation or CDK to make your monitoring setup reproducible&lt;/li&gt;
&lt;li&gt;Configure different alert thresholds for different times (business hours vs. nights)&lt;/li&gt;
&lt;li&gt;Include model version information in all metrics for easier debugging&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real-World Success Story: E-commerce Recommendation Recovery
&lt;/h2&gt;

&lt;p&gt;Let me share a real success story that demonstrates the power of comprehensive ML observability. TechStyle Fashion, an e-commerce platform, was experiencing mysterious drops in click-through rates for their recommendation engine.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛍️ The Challenge
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Initial Problem:&lt;/strong&gt; Recommendation click-through rates dropped from 8.2% to 5.1% over two weeks&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Traditional Monitoring:&lt;/strong&gt; Infrastructure showed no issues - all green lights&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Business Impact:&lt;/strong&gt; $300K weekly revenue loss from reduced engagement&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Time to Detection:&lt;/strong&gt; 2 weeks (discovered during monthly business review)&lt;/p&gt;
&lt;h3&gt;
  
  
  The Investigation Process
&lt;/h3&gt;

&lt;p&gt;With CloudWatch and SageMaker monitoring in place, here's how they would have caught and resolved this issue in hours, not weeks:&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Automatic Drift Detection
&lt;/h4&gt;

&lt;p&gt;SageMaker Model Monitor detected significant drift in the "season" feature. The model was trained on spring/summer data, but autumn product launches changed the feature distribution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Season Feature Drift:      0.89 ❌
Category Distribution:     0.34 ⚠️
Click-Through Rate:        5.1% ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Business Impact Correlation
&lt;/h4&gt;

&lt;p&gt;Custom CloudWatch metrics showed the correlation between drift detection and business KPIs, making the impact immediately visible to both technical and business teams.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Automated Alert and Response
&lt;/h4&gt;

&lt;p&gt;The drift alert triggered an automated workflow that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notified the ML team via Slack integration&lt;/li&gt;
&lt;li&gt;Triggered automated retraining with recent data
&lt;/li&gt;
&lt;li&gt;Switched to a fallback popularity-based recommender&lt;/li&gt;
&lt;li&gt;Generated a detailed drift report for analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📈 The Results
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Detection Time:&lt;/strong&gt; 2 hours (vs. 2 weeks previously)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resolution Time:&lt;/strong&gt; 6 hours (automated retraining + validation)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Revenue Saved:&lt;/strong&gt; ~$280K by catching the issue early&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Customer Experience:&lt;/strong&gt; Seamless transition with fallback recommender&lt;/p&gt;
&lt;h3&gt;
  
  
  Key Lessons Learned
&lt;/h3&gt;

&lt;p&gt;This case study highlights several critical observability principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monitor Business Metrics:&lt;/strong&gt; Technical metrics alone miss the business impact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seasonal Awareness:&lt;/strong&gt; Models need monitoring that understands business cycles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Response:&lt;/strong&gt; Fast detection means nothing without fast response&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallback Strategies:&lt;/strong&gt; Always have a simpler backup when the complex model fails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-team Visibility:&lt;/strong&gt; Business and technical teams need shared dashboards&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Best Practices &amp;amp; Advanced Optimization
&lt;/h2&gt;

&lt;p&gt;After implementing hundreds of ML monitoring systems, here are the battle-tested best practices that separate successful deployments from maintenance nightmares:&lt;/p&gt;
&lt;h3&gt;
  
  
  Cost Optimization Strategies
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Smart Sampling&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Use stratified sampling for data capture. Monitor 100% of high-value transactions, 10% of standard ones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⏰ &lt;strong&gt;Adaptive Frequency&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Increase monitoring frequency during model updates or business events, reduce during stable periods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 &lt;strong&gt;Metric Prioritization&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Focus on metrics that drive business decisions. Nice-to-have metrics can be expensive at scale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📦 &lt;strong&gt;Batch Processing&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Aggregate and batch metric updates to reduce API costs and improve performance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Alert Fatigue Prevention
&lt;/h3&gt;

&lt;p&gt;Nothing kills monitoring faster than alerts that cry wolf. Here's how to keep your alerts meaningful:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_smart_alarm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;metric_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;threshold_config&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Create context-aware alarms that adjust based on time and business context
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="c1"&gt;# Different thresholds for business hours vs off-hours
&lt;/span&gt;    &lt;span class="n"&gt;business_hours_threshold&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;threshold_config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;business_hours&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;off_hours_threshold&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;threshold_config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;off_hours&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;# Create business hours alarm
&lt;/span&gt;    &lt;span class="n"&gt;cloudwatch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;put_metric_alarm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;AlarmName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;metric_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;-BusinessHours&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;ComparisonOperator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LessThanThreshold&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;EvaluationPeriods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;MetricName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;metric_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ML/ModelPerformance&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# 30 minutes
&lt;/span&gt;        &lt;span class="n"&gt;Statistic&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Average&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;Threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;business_hours_threshold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;ActionsEnabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;AlarmActions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;high_priority_topic_arn&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;TreatMissingData&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;notBreaching&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Usage
&lt;/span&gt;&lt;span class="nf"&gt;create_smart_alarm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Accuracy&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;business_hours&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;92.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Stricter during business hours
&lt;/span&gt;    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;off_hours&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;88.0&lt;/span&gt;        &lt;span class="c1"&gt;# More lenient off-hours
&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced Integration Patterns
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Integration:&lt;/strong&gt; Include monitoring setup in your deployment pipelines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A/B Testing Awareness:&lt;/strong&gt; Configure monitoring to handle multiple model versions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Pipeline Monitoring:&lt;/strong&gt; Track data quality upstream from your models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Region Deployment:&lt;/strong&gt; Aggregate metrics across regions for global view&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance Tracking:&lt;/strong&gt; Monitor bias and fairness metrics for regulatory compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Team Workflow Integration
&lt;/h3&gt;

&lt;p&gt;The best monitoring system is useless if your team doesn't know how to use it effectively:&lt;/p&gt;

&lt;h4&gt;
  
  
  🎯 Recommended Team Responsibilities
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Data Scientists:&lt;/strong&gt; Define meaningful metrics and thresholds based on model behavior&lt;br&gt;&lt;br&gt;
&lt;strong&gt;ML Engineers:&lt;/strong&gt; Implement and maintain monitoring infrastructure&lt;br&gt;&lt;br&gt;
&lt;strong&gt;DevOps:&lt;/strong&gt; Manage alerting, dashboards, and incident response&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Product Managers:&lt;/strong&gt; Define business impact metrics and acceptable performance ranges&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Data Engineers:&lt;/strong&gt; Ensure data quality monitoring upstream&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ML Model Monitoring Runbook&lt;/span&gt;
&lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fraud-detection-v2"&lt;/span&gt;
&lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ml-platform-team"&lt;/span&gt;

&lt;span class="na"&gt;monitoring_config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;data_quality&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;frequency&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;every&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;hours"&lt;/span&gt;
    &lt;span class="na"&gt;alert_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.3&lt;/span&gt;
    &lt;span class="na"&gt;escalation_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ml-engineer"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data-scientist"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;team-lead"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

  &lt;span class="na"&gt;model_performance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metrics&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;accuracy"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;precision"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recall"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f1_score"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;business_hours_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;92.0&lt;/span&gt;
    &lt;span class="na"&gt;off_hours_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;88.0&lt;/span&gt;

&lt;span class="na"&gt;incident_response&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;severity_1&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Model&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;accuracy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;85%"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;immediate_action&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Switch&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fallback&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;model"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;notification&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Page&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on-call&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;engineer"&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;timeline&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Resolve&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;within&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;hour"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 Ready to Transform Your ML Observability?
&lt;/h2&gt;

&lt;p&gt;You now have everything you need to build world-class observability for your machine learning systems. The combination of CloudWatch's flexibility and SageMaker's ML-native features gives you superpowers that most data teams only dream of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your Next Steps:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start with one model and implement basic data quality monitoring&lt;/li&gt;
&lt;li&gt;Add custom business metrics that matter to your stakeholders
&lt;/li&gt;
&lt;li&gt;Set up intelligent alerts that won't wake you up at 3 AM for false positives&lt;/li&gt;
&lt;li&gt;Build dashboards that tell the story of your model's health&lt;/li&gt;
&lt;li&gt;Scale your monitoring approach across your entire ML portfolio&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎓 Additional Learning Resources
&lt;/h3&gt;

&lt;p&gt;Want to dive deeper? Here are curated resources to accelerate your ML observability journey:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource Type&lt;/th&gt;
&lt;th&gt;Recommendations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📚 &lt;strong&gt;AWS Documentation&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;SageMaker Model Monitor User Guide, CloudWatch Custom Metrics API Reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛠️ &lt;strong&gt;Hands-On Labs&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;AWS SageMaker Workshop: Model Monitor modules, CloudWatch Container Insights labs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📺 &lt;strong&gt;Video Learning&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;re:Invent sessions on ML Operations, AWS Architecture Center patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏗️ &lt;strong&gt;Reference Architectures&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;AWS MLOps Workshop, SageMaker deployment best practices guide&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;What's your biggest ML monitoring challenge? Share your experiences in the comments below, and let's help each other build more reliable intelligent systems!&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title># 🚀 Demystifying AWS: A Hands-On Journey Through Cloud Economics and Global Infrastructure 🌍💡</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Mon, 16 Jun 2025 17:41:06 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/-demystifying-aws-a-hands-on-journey-through-cloud-economics-and-global-infrastructure-f2p</link>
      <guid>https://dev.to/ashwinraiyani/-demystifying-aws-a-hands-on-journey-through-cloud-economics-and-global-infrastructure-f2p</guid>
      <description>&lt;p&gt;What happens when a room full of curious learners' minds dives into the vast world of AWS? You get a lively session that blends &lt;strong&gt;cloud economics&lt;/strong&gt;, &lt;strong&gt;global infrastructure&lt;/strong&gt;, and a healthy dose of &lt;strong&gt;hands-on discovery&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This 2-hour expert session was specially crafted for learners' — aligning with AWS Cloud Practitioner essentials — and covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 AWS Cloud Economics &amp;amp; Billing&lt;/li&gt;
&lt;li&gt;🌍 AWS Global Infrastructure Overview&lt;/li&gt;
&lt;li&gt;💻 Hands-on Demos using the Free Tier&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📘 Why It Mattered
&lt;/h2&gt;

&lt;p&gt;In today’s cloud-powered world, understanding how services are billed and where your data resides is essential for every future cloud user.&lt;/p&gt;

&lt;p&gt;Our aim:&lt;br&gt;&lt;br&gt;
To empower learners with real-world skills in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS pricing models&lt;/li&gt;
&lt;li&gt;Cost estimation and budgeting&lt;/li&gt;
&lt;li&gt;Global service deployment strategies&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💸 Session 1: Understanding Cloud Costs with Analogies
&lt;/h2&gt;

&lt;p&gt;We started with a simple analogy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🧠 “Using AWS is like renting a laptop, a locker, and a courier — you pay for how long you use it (Compute), how much you store (Storage), and how far you send it (Outbound Data Transfer).”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🔍 Hands-On Demo: AWS Pricing Calculator &amp;amp; Budgets
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Created a monthly budget (₹500 / $6)
&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;actual (80%)&lt;/strong&gt; and &lt;strong&gt;forecasted (90%)&lt;/strong&gt; alerts
&lt;/li&gt;
&lt;li&gt;Simulated usage spikes to understand early warnings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⏰ Bonus Insight:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Forecasted alerts trigger &lt;em&gt;before&lt;/em&gt; the budget is crossed — a smart way to avoid surprise bills.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🌐 Session 2: Exploring AWS Global Infrastructure
&lt;/h2&gt;

&lt;p&gt;We visualised AWS’s worldwide backbone using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regions&lt;/strong&gt; 🌎&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability Zones&lt;/strong&gt; 🏢&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge Locations&lt;/strong&gt; 🚀&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧭 Hands-On Demo: Global Map &amp;amp; Latency Testing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Explored &lt;a href="https://infrastructure.aws" rel="noopener noreferrer"&gt;infrastructure.aws&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Measured ping latency from different regions via &lt;a href="https://www.cloudping.info/" rel="noopener noreferrer"&gt;CloudPing.info&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discussed real-world applications like game hosting and CDN performance&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✅ What Students Took Away
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔍 Skill&lt;/th&gt;
&lt;th&gt;🌟 Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Console Navigation&lt;/td&gt;
&lt;td&gt;✅ Confidence &amp;amp; familiarity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budgeting&lt;/td&gt;
&lt;td&gt;✅ Cost visibility &amp;amp; alerting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure Concepts&lt;/td&gt;
&lt;td&gt;✅ Region-aware thinking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free Tier Exploration&lt;/td&gt;
&lt;td&gt;✅ Risk-free experimentation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;“I never thought billing and latency could be this hands-on and fun!” — Student feedback&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧪 Try It Yourself!
&lt;/h2&gt;

&lt;p&gt;Want to try this on your own or in your classroom?&lt;br&gt;
Here's what we used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Free Tier account&lt;/li&gt;
&lt;li&gt;&lt;a href="https://calculator.aws.amazon.com/" rel="noopener noreferrer"&gt;AWS Pricing Calculator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Budgets Dashboard&lt;/li&gt;
&lt;li&gt;&lt;a href="https://infrastructure.aws" rel="noopener noreferrer"&gt;AWS Global Infrastructure Map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cloudping.info/" rel="noopener noreferrer"&gt;CloudPing.info&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👩‍💻 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This wasn’t just another theory session. It was about &lt;strong&gt;doing, understanding, and connecting concepts with curiosity&lt;/strong&gt;. Whether you’re prepping for AWS Cloud Practitioner or just curious about cloud, remember:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Clarity in cloud starts with hands-on exploration.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;⭐ Feel free to connect with me on &lt;a href="https://www.linkedin.com/in/ashwinraiyani/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; or drop your questions in the comments.&lt;/p&gt;

&lt;p&gt;#aws #cloudcomputing #devops #learners #learningbydoing&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Announcing AWS Certified AI Practitioner and Certified Machine Learning Engineer - Associate: Unlocking New Career Possibilities</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Wed, 12 Jun 2024 06:00:48 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/announcing-aws-certified-ai-practitioner-unlocking-new-career-possibilities-in-ai-and-machine-learning-337f</link>
      <guid>https://dev.to/ashwinraiyani/announcing-aws-certified-ai-practitioner-unlocking-new-career-possibilities-in-ai-and-machine-learning-337f</guid>
      <description>&lt;p&gt;Amazon Web Services (AWS) has recently introduced two new certifications aimed at empowering professionals to excel in the rapidly growing fields of Artificial Intelligence (AI) and Machine Learning (ML). &lt;/p&gt;

&lt;p&gt;The certifications, &lt;strong&gt;AWS Certified AI Practitioner&lt;/strong&gt; and &lt;strong&gt;AWS Certified Machine Learning Engineer – Associate&lt;/strong&gt;, are designed to validate the skills and knowledge of professionals in various roles, from business and sales to IT and engineering. &lt;/p&gt;

&lt;p&gt;In this blog, I will delve into the details of these certifications, their significance, and their benefits to professionals and organizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Certification Overview&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;AWS Certified AI Practitioner certification&lt;/strong&gt; is a foundational-level certification that focuses on understanding AI and ML concepts and recognising opportunities that benefit from AI and using AI tools responsibly. This certification is ideal for professionals familiar with AI/ML technologies on AWS but do not necessarily build AI/ML solutions on the platform. The certification is designed to be vendor-neutral, making it accessible to professionals from diverse backgrounds and experiences. &lt;a href="https://aws.amazon.com/certification/certified-ai-practitioner/?ch=sec&amp;amp;sec=rmg&amp;amp;d=1" rel="noopener noreferrer"&gt;More details&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%2Fu3ybcuimv12sehc5wgkc.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%2Fu3ybcuimv12sehc5wgkc.png" alt="Image description" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the other hand, the &lt;strong&gt;AWS Certified Machine Learning Engineer – Associate certification&lt;/strong&gt; is designed for individuals with at least one year of experience building, deploying, and maintaining AI and ML solutions on AWS. This certification validates an individual's skills in developing, deploying, maintaining, and monitoring AI, ML, and generative AI solutions. &lt;a href="https://aws.amazon.com/certification/certified-machine-learning-engineer-associate/?ch=sec&amp;amp;sec=rmg&amp;amp;d=1" rel="noopener noreferrer"&gt;More details&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%2F1ynqsliv0fk8c26udhel.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%2F1ynqsliv0fk8c26udhel.png" alt="Image description" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose and Significance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introducing these certifications is a significant step forward in the AI and ML landscape. With the increasing demand for AI and ML skills, these certifications aim to bridge the gap between the supply and demand of skilled professionals. By earning these certifications, professionals can demonstrate their expertise and enhance their career prospects, leading to higher salaries and better job opportunities.&lt;/p&gt;

&lt;p&gt;According to a study commissioned by AWS, organizations are willing to pay a premium for professionals with AI skills. For instance, IT professionals with AI skills can expect a 47% higher salary, while those in sales and marketing can expect a 43% higher salary. Similarly, professionals in finance can expect a 42% higher salary, and those in business operations can expect a 41% higher salary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preparation and Exam Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To prepare for these certifications, AWS offers a range of training resources, including free foundational cloud courses and AI foundational training. The AWS Certified AI Practitioner beta exam will be available to schedule starting August 13, 2024, and the exam duration is 120 minutes with 85 questions. The exam format includes multiple-choice and multiple-response questions, and the cost is $75 USD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparison with Other Certifications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AWS Certified AI Practitioner certification is distinct from other certifications in the AI and ML space. For instance, the Certified Artificial Intelligence Practitioner (CAIP) certification offered by CertNexus focuses on vendor-neutral, cross-industry knowledge of AI concepts and skills. While both certifications validate AI and ML knowledge, the AWS certification focuses on AWS-specific technologies and use cases.&lt;/p&gt;

&lt;p&gt;The introduction of the AWS Certified AI Practitioner and AWS Certified Machine Learning Engineer – Associate certifications marks a significant milestone in the AI and ML landscape. These certifications offer professionals a unique opportunity to enhance their skills, demonstrate their expertise, and boost their career prospects. With the increasing demand for AI and ML skills, these certifications are poised to play a crucial role in shaping the future of the industry.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>certification</category>
      <category>career</category>
    </item>
    <item>
      <title>Important Use Cases of Amazon EC2</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Sat, 30 Dec 2023 09:04:19 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/important-use-cases-of-amazon-ec2-lbf</link>
      <guid>https://dev.to/ashwinraiyani/important-use-cases-of-amazon-ec2-lbf</guid>
      <description>&lt;p&gt;Amazon Elastic Compute Cloud (EC2) is a versatile and powerful cloud computing service that finds application across various domains. Here are five of its most impactful use cases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1. Web Hosting:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 is instrumental for deploying web applications and websites on a large scale.&lt;/li&gt;
&lt;li&gt;Its key strength lies in robust scaling capabilities, allowing organizations to adjust capacity within minutes dynamically.&lt;/li&gt;
&lt;li&gt;Compared to traditional hosting services, EC2 offers flexibility and efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Big Data Analysis:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 supports the execution of big data analytics applications, requiring high processing power and storage.&lt;/li&gt;
&lt;li&gt;It seamlessly integrates with popular distributed computing tools like Hadoop and Spark, enabling effective management and processing of large datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. High-Performance Computing (HPC):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tailored for use cases demanding extensive computational capabilities, such as fluid dynamics, financial modeling, or genomic research.&lt;/li&gt;
&lt;li&gt;EC2 provides a spectrum of instance types optimized for high-performance computing tasks.&lt;/li&gt;
&lt;li&gt;This optimization results in accelerated processing, translating to quicker results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Batch Processing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances are well-suited for running batch jobs, making them ideal for scenarios involving the processing of large volumes of data.&lt;/li&gt;
&lt;li&gt;Businesses engaged in image or video processing benefit from the scalability of EC2 instances, ensuring efficient and swift job completion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Backup and Disaster Recovery:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;EC2 is a reliable solution for backup and disaster recovery purposes. In case of a disaster, businesses can quickly set up EC2 instances in different regions or availability zones. This approach ensures that applications continue to function, minimizing both downtime and data loss. Amazon EC2 is a versatile cloud computing solution that offers a comprehensive set of features to meet the needs of modern businesses. Whether it's scaling web applications, processing extensive datasets, facilitating high-performance computing, managing batch jobs, or ensuring robust disaster recovery, EC2 is a pillar of reliability in cloud computing.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS S3 Cross Region Replication: A Comprehensive</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Fri, 22 Dec 2023 04:25:39 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/aws-s3-cross-region-replication-a-comprehensive-dnk</link>
      <guid>https://dev.to/ashwinraiyani/aws-s3-cross-region-replication-a-comprehensive-dnk</guid>
      <description>&lt;p&gt;AWS S3 Cross Region Replication (CRR) is a feature that allows you to automatically replicate data from one S3 bucket in one AWS region to another S3 bucket in a different region. This is a great way to ensure that your data is always available, even if there is a disruption in one region.&lt;/p&gt;

&lt;p&gt;Why use CRR? ☂️&lt;/p&gt;

&lt;p&gt;CRR has a number of benefits, including:&lt;/p&gt;

&lt;p&gt;Disaster recovery: CRR can help you protect your data from natural disasters or other events that could disrupt one region.&lt;br&gt;
Compliance: Some businesses must store data in multiple regions for compliance reasons. CRR can help you to meet these requirements.&lt;br&gt;
Performance: CRR can improve performance for users in different regions by reducing latency.&lt;br&gt;
How to set up CRR 🛠️&lt;/p&gt;

&lt;p&gt;To set up CRR, you will need to:&lt;/p&gt;

&lt;p&gt;Create a source bucket and a destination bucket in different regions.&lt;br&gt;
Enable versioning on both buckets.&lt;br&gt;
Create a replication rule in the source bucket.&lt;br&gt;
AWS S3 Cross Region Replication: A guide with emojis 🌎&lt;/p&gt;

&lt;p&gt;AWS S3 Cross Region Replication (CRR) is a feature that allows you to automatically replicate data from one S3 bucket in one AWS region to another S3 bucket in a different region. This is a great way to ensure that your data is always available, even if there is a disruption in one region.&lt;/p&gt;

&lt;p&gt;Why use CRR? ☂️&lt;/p&gt;

&lt;p&gt;CRR has a number of benefits, including:&lt;/p&gt;

&lt;p&gt;Disaster recovery: CRR can help you to protect your data from natural disasters or other events that could disrupt one region.&lt;br&gt;
Compliance: Some businesses are required to store data in multiple regions for compliance reasons. CRR can help you to meet these requirements.&lt;br&gt;
Performance: CRR can improve performance for users in different regions by reducing latency.&lt;br&gt;
How to set up CRR 🛠️&lt;/p&gt;

&lt;p&gt;To set up CRR, you will need to:&lt;/p&gt;

&lt;p&gt;Create a source bucket and a destination bucket in different regions.&lt;br&gt;
Enable versioning on both buckets.&lt;br&gt;
Create a replication rule in the source bucket.&lt;br&gt;
Here is a step-by-step guide with emojis:&lt;/p&gt;

&lt;p&gt;Step 1: Create a source bucket and a destination bucket in different regions. 🌎 Enable versioning on both 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%2Fqsb4iotvuyzjg6hmbg2l.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%2Fqsb4iotvuyzjg6hmbg2l.png" alt="Image description" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source Bucket&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%2Frxesj3lq4c16nxbsookf.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%2Frxesj3lq4c16nxbsookf.png" alt="Image description" width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With enabling Bucket Versioning&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%2Fxgd0oyvhzkmpitqsp43k.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%2Fxgd0oyvhzkmpitqsp43k.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Destination Bucket — 2&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%2F2qn74k35sghizd1z1m3w.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%2F2qn74k35sghizd1z1m3w.png" alt="Image description" width="800" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enabling Versioning — Bucket 2&lt;br&gt;
Step 2: Click on the Management tab of the source bucket and select Replication. ⚙️&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%2Flt3fy6znfuk8y04capj4.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%2Flt3fy6znfuk8y04capj4.png" alt="Image description" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bucket-1 — Goto Management Tab&lt;br&gt;
Click on the Create Replication Rule button. 🆕&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%2Fldw3704tqtiqen3ui6bh.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%2Fldw3704tqtiqen3ui6bh.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give Rule Name&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%2Fv3epexvadbo60ijxav87.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%2Fv3epexvadbo60ijxav87.png" alt="Image description" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select Source Bucket — Select Apply to all objects&lt;br&gt;
Next Step, Select the destination bucket from the list of 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%2Fkzom05x3uveyslm128dr.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%2Fkzom05x3uveyslm128dr.png" alt="Image description" width="800" height="415"&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%2Fqq39wqzuy275zcdy2plg.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%2Fqq39wqzuy275zcdy2plg.png" alt="Image description" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select Destination Bucket-2&lt;br&gt;
Next➡️, Scroll down and Create IAM Role,&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%2Fa3b4n6yfxo1sl4ekc4mb.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%2Fa3b4n6yfxo1sl4ekc4mb.png" alt="Image description" width="707" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create new role&lt;br&gt;
Next click on Save button to create rule. New screen will appear on your screen.&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%2Fdr8nvxljd5fjanbgpzcn.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%2Fdr8nvxljd5fjanbgpzcn.png" alt="Image description" width="751" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select No and Click on the Submit button.&lt;br&gt;
Review the settings and click on the Create Rule button. ✅&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%2F5c91lshziqertcg5hof7.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%2F5c91lshziqertcg5hof7.png" alt="Image description" width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New Replication Rule created for Bucket 1&lt;br&gt;
The last step is to test whether the rule created is properly working as desired or not. Let's upload one object in Bucket-1 and check whether it will get a replica in bucket-2 or not.&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%2Fpse3oyqi4j0ly9deopgs.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%2Fpse3oyqi4j0ly9deopgs.png" alt="Image description" width="546" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bucket -1 — uploaded one image file&lt;br&gt;
After a few seconds, you can see same file available in bucket -2 as well.&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%2Foaksbrujgg006cc24nkz.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%2Foaksbrujgg006cc24nkz.png" alt="Image description" width="671" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Here I had implemented AWS S3's Cross-Region Replication in-depth. This involved replicating objects from a source bucket in the North Virginia (us-east-1) region to a destination bucket in the Ohio (us-east-2) region. The replication process was set up to mirror the latest version of content from North Virginia, thus providing an updated representation of the static website in Ohio. By utilizing the features of S3's Cross-Region Replication, here established a reliable and consistent content delivery mechanism across different regions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Streamline Email Sending with AWS SES, Lambda, and S3 Integration</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Fri, 22 Dec 2023 04:19:46 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/streamline-email-sending-with-aws-ses-lambda-and-s3-integration-3dni</link>
      <guid>https://dev.to/ashwinraiyani/streamline-email-sending-with-aws-ses-lambda-and-s3-integration-3dni</guid>
      <description>&lt;p&gt;In today's digital world, email remains a vital communication channel for businesses. To simplify the process of sending bulk emails, AWS provides a powerful combination of services: Simple Email Service (SES), Lambda, and Simple Storage Service (S3). In this blog post, we will explore how to integrate these services to efficiently send emails by uploading recipient lists to S3. This streamlined approach saves time, enhances scalability, and offers greater flexibility for email campaigns.&lt;/p&gt;

&lt;p&gt;Setting up the Integration:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating an AWS SES Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Activate the SES service in your AWS account.&lt;/li&gt;
&lt;li&gt;Verify your domain or email addresses to establish sender identity.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure email and customizations based on your requirements.&lt;br&gt;
&lt;strong&gt;Setting Up an S3 Bucket:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an S3 bucket to store the recipient lists.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure appropriate access permissions to ensure secure and controlled data handling.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developing an AWS Lambda Function:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Lambda function that triggers upon a file upload event in the S3 bucket.&lt;/li&gt;
&lt;li&gt;Implement the necessary code to extract recipient information from the uploaded file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Designing the Workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define the logic to process each recipient in the uploaded list.&lt;/li&gt;
&lt;li&gt;Personalize email content by dynamically populating recipient-specific information.&lt;/li&gt;
&lt;li&gt;Leverage Lambda's scalability to handle large recipient lists efficiently.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>ses</category>
      <category>lambda</category>
    </item>
    <item>
      <title>Streamline Email Sending with AWS SES, Lambda, and S3 Integration</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Sat, 01 Jul 2023 10:04:42 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/streamline-email-sending-with-aws-ses-lambda-and-s3-integration-2daj</link>
      <guid>https://dev.to/ashwinraiyani/streamline-email-sending-with-aws-ses-lambda-and-s3-integration-2daj</guid>
      <description>&lt;p&gt;In today's digital world, email remains a vital communication channel for businesses. To simplify the process of sending bulk emails, AWS provides a powerful combination of services: Simple Email Service (SES), Lambda, and Simple Storage Service (S3). In this blog post, we will explore how to integrate these services to efficiently send emails by uploading recipient lists to S3. This streamlined approach saves time, enhances scalability, and offers greater flexibility for email campaigns.&lt;/p&gt;

&lt;p&gt;Setting up the Integration:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating an AWS SES Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Activate the SES service in your AWS account.&lt;/li&gt;
&lt;li&gt;Verify your domain or email addresses to establish sender identity.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure email and customizations based on your requirements.&lt;br&gt;
&lt;strong&gt;Setting Up an S3 Bucket:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an S3 bucket to store the recipient lists.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure appropriate access permissions to ensure secure and controlled data handling.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developing an AWS Lambda Function:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Lambda function that triggers upon a file upload event in the S3 bucket.&lt;/li&gt;
&lt;li&gt;Implement the necessary code to extract recipient information from the uploaded file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Designing the Workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define the logic to process each recipient in the uploaded list.&lt;/li&gt;
&lt;li&gt;Personalize email content by dynamically populating recipient-specific information.&lt;/li&gt;
&lt;li&gt;Leverage Lambda's scalability to handle large recipient lists efficiently.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>ses</category>
      <category>lambda</category>
    </item>
    <item>
      <title>Lead an AWS Cloud Club</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Tue, 07 Feb 2023 05:34:46 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/lead-an-aws-cloud-club-1g8h</link>
      <guid>https://dev.to/ashwinraiyani/lead-an-aws-cloud-club-1g8h</guid>
      <description>&lt;p&gt;It’s time! Students, you’ve been waiting, and we are proud to announce that AWS Cloud Clubs, student-led user groups for ages 18+, are opening in 10 regions worldwide. Apply to become your school’s Cloud Club Captain to build community, learn AWS tech, &amp;amp; build your career. Apply here: &lt;a href="https://s12d.com/students" rel="noopener noreferrer"&gt;https://s12d.com/students&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎉 AWS Cloud Clubs are launching now 🎉&lt;/p&gt;

&lt;p&gt;Are you:&lt;br&gt;
📚 Enrolled in a College or University or learning on your own&lt;br&gt;
🦉Aged between 18–28&lt;br&gt;
🫶Interested in creating peer-to-peer learning experiences for your local student community&lt;br&gt;
✨Curious about skilling up in AWS technology&lt;br&gt;
👀Looking to build your career and network&lt;/p&gt;

&lt;p&gt;If so, please join an AWS Cloud Club near you. We are looking for stellar Cloud Club Captains to lead these clubs in Australia, Bangladesh, France, India, Ireland, Mexico, Nigeria, Pakistan, United Kingdom, and the United States.&lt;/p&gt;

&lt;p&gt;What’s in it for you and your communities? Based on your activities, earn perks such as AWS credits, certification vouchers, swag, bespoke learning and networking experiences, and more. We will work with you to make your Club awesome!&lt;/p&gt;

&lt;p&gt;Ready? Set? Go! Please fill in the AWS Cloud Club Captain Application Form at &lt;a href="https://s12d.com/students" rel="noopener noreferrer"&gt;https://s12d.com/students&lt;/a&gt;. This form is opening now and will close on Feb 19th. If your region isn’t included in the launch list, please fill in the Cloud Clubs interest list to express your interest in founding or joining a future club.&lt;/p&gt;

&lt;p&gt;source : &lt;a href="https://aws.amazon.com/developer/community/students/" rel="noopener noreferrer"&gt;https://aws.amazon.com/developer/community/students/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Step 2:Converting .pem to .ppk on Windows</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Wed, 11 Jan 2023 19:20:31 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/step-2converting-pem-to-ppk-on-windows-308o</link>
      <guid>https://dev.to/ashwinraiyani/step-2converting-pem-to-ppk-on-windows-308o</guid>
      <description>&lt;p&gt;If you don’t already have PuTTYGen and PuTTY already installed navigate to:&lt;/p&gt;

&lt;p&gt;PuttyGen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.puttygen.com/#Download_PuTTYgen_on_Windows" rel="noopener noreferrer"&gt;https://www.puttygen.com/#Download_PuTTYgen_on_Windows&lt;/a&gt; (Links to an external site.)Links to an external site.&lt;/p&gt;

&lt;p&gt;PuTTY&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.puttygen.com/download-putty#PuTTY_for_windows" rel="noopener noreferrer"&gt;https://www.puttygen.com/download-putty#PuTTY_for_windows&lt;/a&gt; (Links to an external site.)Links to an external site.&lt;/p&gt;

&lt;p&gt;After installation, review the PuTTYGen and PuTTY instructions for this activity:&lt;/p&gt;

&lt;p&gt;Converting .pem to .ppk on Windows&lt;/p&gt;

&lt;p&gt;Click on Start menu&amp;gt; All Programs &amp;gt; PuTTY &amp;gt; PuTTYgen.&lt;/p&gt;

&lt;p&gt;puttygen-window&lt;br&gt;
puttygen-window&lt;br&gt;
The following window will present with options on the crucial a user wants to generate. Select the option ‘RSA (Rivest–Shamir–Adleman). RSA is a public-key cryptosystem that is commonly used to transmit data securely. Users with an older version of PuTTY should select the option – ‘SSH-2 RSA.’&lt;/p&gt;

&lt;p&gt;Load .PEM file to puttygen&lt;br&gt;
Load .PEM file to puttygen&lt;br&gt;
Next, click on the option ‘Load.’ As PuTTY supports its native file format, it will only show files that have .ppk file extension. Therefore, users have to choose the ‘All Files’ option from the drop-down bar. It will display all key files included the .pem file.&lt;/p&gt;

&lt;p&gt;save private key&lt;br&gt;
save private key&lt;br&gt;
Now, select the .pem file that you want to convert. As aforementioned that PuTTYgen is used for SSH connectivity, so it crucial for users to select the specific file that they plan to convert and click ‘Open.’ To confirm, click on ‘OK.’&lt;br&gt;
In the resultant window, click on ‘Save private key’ which will convert and save the key file in PuTTY compatible format.&lt;br&gt;
PuTTYgen will prompt a warning of saving the key without a passphrase. Hit ‘Yes’ on it.&lt;/p&gt;

&lt;p&gt;save private key&lt;br&gt;
save private key&lt;br&gt;
Now, give the name to your file and PuTTYgen will automatically add .ppk file extension.&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>Launch Amazon EC2 Linux Instance Step 1: Launch a Linux Virtual Machine</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Wed, 11 Jan 2023 18:53:28 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/launch-amazon-ec2-linux-instance-e7o</link>
      <guid>https://dev.to/ashwinraiyani/launch-amazon-ec2-linux-instance-e7o</guid>
      <description>&lt;p&gt;Step 1: Launch a Linux Virtual Machine&lt;/p&gt;

&lt;p&gt;Launch an Amazon EC2 instance&lt;/p&gt;

&lt;p&gt;Our first requirement is that our product team would like a Linux web server that has Apache installed on it.  They would also like for it to be publicly accessible, so let’s get going.&lt;/p&gt;

&lt;p&gt;1.In the AWS Management Console, find and select the Amazon EC2 dashboard&lt;/p&gt;

&lt;p&gt;2.From the Amazon EC2 dashboard, click "Launch Instance"&lt;/p&gt;

&lt;p&gt;3.Notice the variety of AMIs located on the AMI page. These are different templates for different types  of machines. Select the Amazon Linux 2 AMI (HVM)&lt;/p&gt;

&lt;p&gt;4.Notice the variety of instance types available. Select the t2.micro instance.&lt;/p&gt;

&lt;p&gt;5.Select Next: Configure Instance Details&lt;/p&gt;

&lt;p&gt;We are going to use our default Amazon VPC and launch our Amazon EC2  instance into the default public subnet where it will automatically assign our virtual machine a public IP  address.&lt;/p&gt;

&lt;p&gt;6.Accept the default settings for the Step 3: Configure Instance Details page&lt;/p&gt;

&lt;p&gt;7.Click Next: Add Storage&lt;/p&gt;

&lt;p&gt;a.We will not need another Amazon Elastic Block Store  (Amazon EBS) volume&lt;/p&gt;

&lt;p&gt;8.Click Next: Add Tags&lt;/p&gt;

&lt;p&gt;9.Click Add tag then configure:&lt;/p&gt;

&lt;p&gt;Key: Name Value: WebServer&lt;br&gt;
10.Click Next: Configure Security Group&lt;/p&gt;

&lt;p&gt;11.Configure a new security group as follows:&lt;/p&gt;

&lt;p&gt;a.Security group name: WebserverSG&lt;/p&gt;

&lt;p&gt;b.Description: Security group for my webserver&lt;/p&gt;

&lt;p&gt;A security group works very much the same way as a  firewall. It contains a set of rules that filter traffic coming into and out of an Amazon EC2  instance. By default, all non-local traffic is blocked. For example, webservers typically allow public traffic access on port 80 (HTTP)  and/or port 443 (HTTPS) and also keep SSH rules.  In all 3 rule, keep the IP source as "Anywhere"&lt;/p&gt;

&lt;p&gt;c.Click Review and Launch.&lt;/p&gt;

&lt;p&gt;12.Review the details, scroll down and click Launch.&lt;/p&gt;

&lt;p&gt;13.In the Select an existing key pair or create a new key pair dialog box, choose Create a new key pair, enter a name for the key pair, and then choose Download Key Pair. This is the only chance for you to save the private key file, so be sure to download it. Save the private key file in a safe place. &lt;/p&gt;

&lt;p&gt;14.On the Launch Status page, scroll to the bottom and click View  Instances. You’ll be taken to the Instances page.&lt;/p&gt;

</description>
      <category>offers</category>
      <category>web</category>
      <category>discuss</category>
    </item>
    <item>
      <title>AWS EC2 Instance Features:</title>
      <dc:creator>Ashwin Raiyani</dc:creator>
      <pubDate>Wed, 11 Jan 2023 09:21:30 +0000</pubDate>
      <link>https://dev.to/ashwinraiyani/aws-ec2-instance-features-2pd3</link>
      <guid>https://dev.to/ashwinraiyani/aws-ec2-instance-features-2pd3</guid>
      <description>&lt;p&gt;Amazon EC2 instances provide a number of additional features to help you deploy, manage, and scale your applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;➢ Burstable Performance instances&lt;/li&gt;
&lt;li&gt;➢ Multiple Storage Options&lt;/li&gt;
&lt;li&gt;➢ EBS Optimized Instances&lt;/li&gt;
&lt;li&gt;➢ Cluster Networking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Burstable Performance Instances:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 allows you to choose between Fixed Performance&lt;br&gt;
Instances (e.g. M5, C5, and R5) and Burstable Performance Instances (e.g. T3). Burstable Performance Instances provide a baseline level of CPU performance with the ability to burst above the baseline.&lt;/p&gt;

&lt;p&gt;For example, a t2.small instance receives credits continuously at a rate of 12 CPU Credits per hour. This capability provides baseline performance equivalent to 20% of a CPU core (20% x 60 mins = 12 mins). If the instance does not use the credits it receives, they are stored in its CPU Credit balance up to a maximum of 288 CPU Credits. When the t2.small instance needs to burst to more than 20% of a core, it draws from its CPU Credit balance to handle this surge automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multiple Storage Options:&lt;/strong&gt; Amazon EC2 allows you to choose between multiple storage options based on your requirements. Amazon EBS is a durable, block-level storage volume that you can attach to a&lt;br&gt;
single, running Amazon EC2 instance. Amazon EBS provides three volume types to best meet the needs of your workloads: General Purpose (SSD), Provisioned IOPS (SSD), and Magnetic.5&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EBS Optimized instances:&lt;/strong&gt; For an additional, low, hourly fee, customers can launch selected Amazon EC2 instances types as EBS-optimized instances. For M6g, M5, M4, C6g, C5, C4, R6g, P3, P2, G3, and D2 instances, this feature is enabled by default at no additional cost. EBS-optimized instances enable EC2 instances to fully use the IOPS provisioned on an EBS volume. EBS-optimized instances deliver dedicated throughput between Amazon EC2 and Amazon EBS, with options between 500 and 4,000 Megabits per second (Mbps) depending on the instance type used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cluster Networking:&lt;/strong&gt; Select EC2 instances support cluster networking when launched into a common cluster placement group. A cluster placement group provides low-latency networking between all instances in the cluster. The bandwidth an EC2 instance can utilize depends on the instance type and its networking performance specification.&lt;/p&gt;

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