The Exam Blueprint · DOP-C02 · D5 · Incident & Event Response · 14%

Incident & Event Response

Incident & Event Response is the smallest of the AWS Certified DevOps Engineer – Professional (DOP-C02) exam's six domains, but its size has nothing to do with how much tooling it covers. This is the domain where a metric breach or an API event turns into an automatic reaction: EventBridge and CloudWatch Alarms do the noticing, Systems Manager Automation runbooks do the fixing when a fix can be scripted, and Systems Manager Incident Manager, SNS, and AWS Chatbot take over the moment a human has to get involved. By the end of this page you should be able to pick the right AWS service for a given detection-to-resolution scenario and explain how each one hands off to the next.

☺ Explain it like I'm 10

Picture a house with a smart smoke detector wired straight to a sprinkler. A small kitchen fire trips the detector, the sprinkler puts it out by itself, and nobody's phone even buzzes. A bigger fire the sprinkler can't handle trips the same detector, but this time it calls the fire department directly, tells them exactly which room, and texts everyone in the house at once. Afterward, the fire chief reads a report the system already half-wrote — when the alarm tripped, when the sprinkler kicked in, when the truck arrived — instead of reconstructing it all from memory. That whole system is this domain: the detector is EventBridge and CloudWatch Alarms, the sprinkler is Systems Manager Automation, the emergency call is Incident Manager, SNS, and Chatbot, and the report is post-incident analysis.

🐦🤖Your hosts for this topic: Pip the Hummingbird & Recon the Robot — Recon fires the automated runbook the instant an alarm trips, and Pip carries the page to a human the moment Recon can't fix it alone.

What this domain covers

☺ Like you're 10: Six slices make up the whole exam, and this is the thinnest slice — but it's specifically the slice about reacting to trouble automatically, on AWS, without a person doing it by hand.

AWS's own exam guide splits this domain into automating a response to an event and troubleshooting or remediating the failures that response uncovers. The practical scope sits between two other domains: Monitoring & Logging (domain 4, 15%) is what actually generates the signal — the metrics, the logs, the alarms — and Security & Compliance (domain 6, 17%) is where the guardrails on what an automated response is allowed to do get defined. This domain is what happens in between: turning a signal into an automatic reaction, escalating to a human when automation can't finish the job, and leaving behind a record good enough to learn from. It leans heavily on the same severity, on-call, and communication practices covered generally in incident management — the difference here is that this page is about the specific AWS services that implement those practices, not the practices themselves.

#DomainWeight
1SDLC Automation22%
2Configuration Management & IaC17%
3Resilient Cloud Solutions15%
4Monitoring & Logging15%
5Incident & Event Response — this page14%
6Security & Compliance17%

AWS revises task statements and domain weights between exam guide versions without much notice — the breakdown above reflects the current published DOP-C02 exam guide, but verify it against AWS's own guide before you build a study plan around exact percentages.

Detecting trouble: CloudWatch Alarms vs. EventBridge rules

☺ Like you're 10: One watches a number and yells when it crosses a line; the other watches for a specific thing happening at all, no number required.

A CloudWatch metric alarm watches one metric (or a math expression over several) against a threshold for a configurable number of datapoints within a period, and moves between three states: OK, ALARM, and INSUFFICIENT_DATA. When too many related alarms fire for what's really one underlying failure — high latency and a rising 5xx rate on the same service — a composite alarm combines several alarms with a boolean rule expression so the team pages once on the real problem instead of three times on its symptoms:

aws cloudwatch put-composite-alarm \
  --alarm-name "prod-checkout-degraded" \
  --alarm-rule "ALARM(prod-checkout-high-latency) AND ALARM(prod-checkout-5xx-rate)" \
  --actions-enabled \
  --alarm-actions "arn:aws:sns:us-east-1:111122223333:oncall-escalation"

An EventBridge rule reacts to a different kind of trigger entirely: a discrete event matched by an event pattern, not a numeric threshold. Events land on an event bus — the default bus receives events automatically from most AWS services (including AWS Health, for service issues and scheduled changes), a custom bus carries your own application events, and a partner bus carries events from supported SaaS vendors. A rule matches on the event's source, detail-type, and fields inside detail, and can fan out to up to five targets per rule by default. This is the pattern that matches a CloudWatch Alarm's own state change — because an alarm transitioning to ALARM is itself just another event you can route through EventBridge:

{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"],
  "detail": {
    "state": { "value": ["ALARM"] },
    "alarmName": [{ "prefix": "prod-" }]
  }
}
DimensionCloudWatch AlarmEventBridge Rule
Triggered byA metric crossing a numeric threshold over timeA discrete event matching a pattern — an API call, a state change, a health event
Native actionsShort fixed list: EC2 action, Auto Scaling action, SNS notification, create an OpsItem, start an Incident Manager incidentBroad, extensible: Lambda, SNS, SQS, Step Functions, SSM Automation, Run Command, Kinesis, and more — up to 5 targets per rule
Best for"Is this number bad?" — latency, error rate, CPU, queue depth"Did this specific thing happen?" — a deploy finished, an IAM policy changed, a GuardDuty finding fired
Noise controlComposite alarms combine several alarms with AND / OR / NOTPattern matching on arrays, prefixes, numeric ranges, and anything-but
◆ Key idea

Don't treat these as competitors. An alarm's native action list is short and fixed on purpose — it covers the handful of things you'd want to do immediately without any extra plumbing. The moment you need a custom target — a specific Automation runbook, a Lambda that posts to an internal tool, a Step Functions workflow — route the alarm's state-change event through EventBridge instead of fighting the native action list. The exam rewards knowing which of the two you're being asked for in a given scenario.

Automated remediation: Systems Manager Automation runbooks

☺ Like you're 10: A runbook is a recipe with numbered steps that a robot follows exactly, in order, every time — not a single command, a whole sequence.

A Systems Manager Automation document ("runbook") is a multi-step, orchestrated workflow expressed as YAML or JSON, made of mainSteps that each call an action — aws:executeAwsApi to call any AWS API directly, aws:runCommand to run a command on managed instances, aws:invokeLambdaFunction, aws:approve to pause for a human sign-off, aws:branch for conditional logic, and aws:sleep to wait between steps. AWS ships a library of pre-built runbooks prefixed AWS- (AWS-RestartEC2Instance, AWS-CreateImage, AWS-PatchInstanceWithRollback, and dozens more) alongside whatever custom ones your team authors. A minimal self-heal runbook that reboots an unhealthy instance and pauses before the alarm re-evaluates looks like this:

schemaVersion: "0.3"
description: "Reboot an unhealthy EC2 instance, then give the alarm time to clear."
assumeRole: "{{ AutomationAssumeRole }}"
parameters:
  InstanceId:
    type: String
  AutomationAssumeRole:
    type: String
mainSteps:
  - name: rebootInstance
    action: "aws:executeAwsApi"
    inputs:
      Service: ec2
      Api: RebootInstances
      InstanceIds: ["{{ InstanceId }}"]
  - name: pauseForBoot
    action: "aws:sleep"
    inputs:
      Duration: PT3M
  - name: verifyStatusOk
    action: "aws:executeAwsApi"
    inputs:
      Service: ec2
      Api: DescribeInstanceStatus
      InstanceIds: ["{{ InstanceId }}"]

This is a Systems Manager Run Command document's opposite number, and the exam likes to test the difference directly: Run Command executes one ad hoc command or script on a fleet of managed instances right now — no orchestration, no built-in rollback, no branching. Automation is the state-machine version — multiple ordered steps across any AWS API (not just instance commands), with approval gates for higher-risk actions and rate control (MaxConcurrency, MaxErrors) when you're remediating across a whole fleet instead of one resource. If a question describes a multi-step, auditable, potentially-rolled-back remediation, the answer is Automation; if it describes running one script on some instances right now, the answer is Run Command. An Automation execution needs its own IAM execution role (the AutomationAssumeRole parameter above), separate from whoever or whatever triggered it — scoped to exactly the APIs that specific runbook calls, nothing wider.

Escalating to a human: Incident Manager, SNS, and AWS Chatbot

☺ Like you're 10: When the robot's recipe doesn't fix it, someone has to actually wake a person up, tell them what's wrong, and give them a room to work in together.

Systems Manager Incident Manager is AWS's purpose-built incident response service. A response plan ties three things together: which runbook to run automatically when an incident starts, an engagement plan defining the chain of contacts to page (with escalation timing, similar in spirit to the on-call escalation policies covered generically in incident management), and a chat channel that gets created or joined automatically for the responders to coordinate in. The most direct trigger is a CloudWatch Alarm's native "start an Incident Manager incident" action, described above — no EventBridge required for that specific path; for anything more custom, route the alarm's or event's state through EventBridge to a target that calls the StartIncident API instead. One setup step trips people up the first time: before you can create response plans or contacts at all, Incident Manager requires you to configure a replication set — at least one AWS Region, ideally two, where its data is stored and replicated, specifically so incident response tooling itself survives a regional outage.

SNS is the fan-out layer underneath most of this. A topic published to by an alarm action or an Automation step can reach many subscribers at once — email, SMS, an HTTPS endpoint, Lambda, SQS, or AWS Chatbot. A subscription filter policy keeps that fan-out from becoming noise: instead of every subscriber getting every message, each subscription only receives messages whose attributes match its filter, so a message tagged low-severity never wakes anyone up:

aws sns set-subscription-attributes \
  --subscription-arn "arn:aws:sns:us-east-1:111122223333:oncall-escalation:abcd1234-..." \
  --attribute-name FilterPolicy \
  --attribute-value '{"severity": ["SEV1", "SEV2"]}'

AWS Chatbot is the ChatOps layer: it subscribes to SNS topics (and can consume EventBridge events and Security Hub or GuardDuty findings directly) and posts formatted notifications into a Slack or Microsoft Teams channel, and — the part that actually matters for incident response — lets authorized users run AWS CLI commands and approved actions from inside that same chat channel, so a responder can check status or trigger a follow-up runbook without ever leaving the incident thread. The IAM role attached to a Chatbot channel configuration is what gates exactly which commands are permitted; scoping it tightly is the whole point, not an afterthought.

⚠ Watch out — verify current feature set

AWS has repositioned Incident Manager's exact feature boundaries, pricing, and console layout more than once since launch, and the supported chat destinations for AWS Chatbot have changed over time too. Treat the response-plan/engagement-plan/chat-channel/replication-set structure above as the stable mental model the exam tests, but check AWS's current Systems Manager Incident Manager and AWS Chatbot documentation before you commit to specifics like exact console steps, supported chat platforms, or pricing in a study plan — this is one of the more actively-evolving corners of the AWS operations toolset.

If your organization already runs on-call through PagerDuty or Opsgenie, Incident Manager's engagement plans cover overlapping ground natively on AWS — contacts, rotations, and escalation chains — which is worth knowing for the exam's "which AWS-native service handles this" framing even if your real-world stack keeps the third-party tool. Either way, the sustainability principles behind who's on that rotation and how it's staffed are the same ones covered in on-call culture & sustainable operations — this domain automates the mechanics, not the humane design of the rotation itself.

CloudWatch Alarm metric threshold breached EventBridge rule event pattern matched AWS Health event service issue, default bus SSM Automation runbook fixes it — no human paged SNS topic — fan-out publishes to on-call & chat subscribers Resolved — alarm returns to OK verified automatically, closed silently AWS Chatbot posts to Slack / Teams Incident Manager pages on-call, opens chat channel via engagement plan Post-incident analysis timeline auto-captured from chat, alarms & runbook runs

Post-incident analysis workflows

☺ Like you're 10: The system already wrote most of the report while the fire was happening — chat log, when the alarm rang, what the robot tried — so writing it up afterward is editing, not reconstructing from memory.

Incident Manager's post-incident analysis is built directly on top of an incident's already-captured timeline: the chat transcript from the automatically-created channel, the CloudWatch alarms and metrics tied to the incident, and the history of any Automation runbook executions it triggered are all present before anyone starts writing. What the team adds afterward is judgment — impact, root cause, and concrete follow-up items — not the raw sequence of what happened, which is usually the most tedious and error-prone part of writing a postmortem by hand. For the definitive "who or what called which API, and exactly when" record — especially useful when the question is whether a change someone made caused the incident — CloudTrail remains the authoritative source, and it's routinely pulled alongside Incident Manager's timeline to reconstruct the full picture.

None of this replaces the cultural practice; it automates the mechanics of it on AWS specifically. The blameless framing, the discipline of turning findings into tracked follow-up actions instead of blame, and the habit of sharing what was learned across teams are exactly the practices covered generally in incident management — this domain is what makes gathering the raw material for that review fast and reliable on an AWS-native stack, not a substitute for doing the review well.

Common exam traps in this domain

☺ Like you're 10: The exam likes to describe a situation and see if you pick the AWS service that actually does that specific job instead of a similar-sounding one.

Rehearsing this whole path end to end — trigger, self-heal attempt, escalation, chat coordination, post-incident review — on a non-production system before it matters for real is exactly what chaos engineering & game days covers, and it's the fastest way to find a gap in a response plan before an actual incident does.

🎬 At the Ship-It Guild
🐦

Pip: Alarm just tripped on prod-checkout-latency — ALARM state, EventBridge already fired the rule.

🤖

Recon: Automation runbook's running. Rebooting the unhealthy instance, three-minute pause, then I re-check the alarm.

🦊

Foxy: And if the reboot doesn't clear it?

🤖

Recon: Then I'm done — that's not my job anymore. Incident Manager takes it from here.

🐦

Pip: Which means me. Response plan's already spinning up a chat channel and paging the primary through the engagement plan. Nobody's guessing who's on call.

👺

Gizmo: Just skip the runbook and give the Chatbot role AdministratorAccess — then anyone in Slack can fix anything, way less setup. 🤑

🦉

Professor Owl: That's how "someone fat-fingered a command in a chat channel" becomes the incident, Gizmo. The Chatbot role gets exactly the permissions its approved commands need — nothing that lets a typo take down a database.

🐢

Timmy: And once this closes, the timeline's already half-written — chat log, the alarm, the runbook execution. That's the postmortem's first draft, not the finished thing.

Domain 4, Monitoring & Logging, is what produces the signal this whole page reacts to. Domain 6, Security & Compliance, is where the guardrails on what Automation and Chatbot are allowed to touch get formally defined. For the exam's full task-statement breakdown and current weighting, check the DOP-C02 exam guide; for a quick service-by-service refresher on everything named here, see the AWS service & command reference.

✓ Checkpoint

1. What's the functional difference between a CloudWatch Alarm and an EventBridge rule as a trigger, and which one fires off "an IAM policy changed" versus "CPU utilization crossed 90%"? 2. How does a Systems Manager Automation runbook differ from a Run Command document, and why does that difference matter for a self-healing action that needs a rollback path? 3. Name the three things a Systems Manager Incident Manager response plan ties together, and what first-time setup step has to exist before you can create one at all. 4. Why would you route a CloudWatch Alarm's state change through EventBridge instead of using the alarm's own native actions?

Check your answers
  1. A CloudWatch Alarm reacts to a metric crossing a numeric threshold over time; an EventBridge rule reacts to a discrete event matching a pattern. "CPU utilization crossed 90%" is a metric threshold — a CloudWatch Alarm. "An IAM policy changed" is a discrete event with no numeric threshold involved — an EventBridge rule matching on the relevant detail-type.
  2. Run Command executes one ad hoc command or script on managed instances right now, with no orchestration. Automation is a multi-step, ordered workflow across any AWS API, with support for approval gates, branching, and rollback behavior — which is what a self-healing action with a rollback path actually needs; Run Command has no concept of "roll this back if it fails."
  3. A response plan ties together which runbook to execute automatically, an engagement plan defining who gets paged and in what order, and a chat channel for coordination. Before any response plan or contact can be created, Incident Manager requires a replication set — at least one AWS Region configured to store and replicate its data — to be set up first.
  4. An alarm's native action list is short and fixed (EC2 action, Auto Scaling action, SNS, OpsItem, Incident Manager incident) — it can't point directly at a custom Lambda, a specific Automation runbook, or any other arbitrary target. Routing the alarm's state-change event through EventBridge instead opens up the full target list, up to five per rule.