30-sec Infra Fix · IF3
Your alarms catch outages, not slowness: test gray failures with AWS FIS
Tumhare alarms outage pakadte hain, slowness nahi. Most real incidents don't start with "down". They start with "slow for some people".
What's new
On November 12, 2025, AWS added two scenarios to the AWS Fault Injection Service (FIS) scenario library for partial failures:
- AZ: Application Slowdown adds latency and degrades performance for resources, dependencies and connections within a single Availability Zone. It works for both single-AZ and multi-AZ applications.
- Cross-AZ: Traffic Slowdown disrupts traffic between Availability Zones, for multi-AZ applications.
Both can target a portion of your application's traffic, which is how real partial failures look, such as packet loss on some flows. They're available in all Regions where FIS is, including AWS GovCloud (US).
Why it matters
This is a gray failure: the system is up, health checks pass, but it's slow or flaky for part of the traffic. An alarm on "is it up?" stays green. Customers see spinners.
AWS positions these scenarios for three things: validating observability, tuning alarm thresholds, and practising AZ evacuation decisions, meaning shifting traffic away from a sick zone before it becomes an outage.
Steps
1. Write down what should catch it
Before you inject anything, list the alarms you expect to fire: latency (p99, not just average), error rate, and ideally per-AZ views. Check what's already in alarm so you have a clean baseline:
aws cloudwatch describe-alarms --state-value ALARM2. Create an experiment template from the scenario
In the AWS FIS console, open Scenario library, choose AZ: Application Slowdown (or Cross-AZ: Traffic Slowdown), and create an experiment template from it. Set your targets, the AZ, the duration, and stop conditions (CloudWatch alarms that halt the experiment).
3. Run and watch
aws fis list-experiment-templates
aws fis start-experiment --experiment-template-id <TEMPLATE_ID># check progress
aws fis get-experiment --id <EXPERIMENT_ID>
# the stop button
aws fis stop-experiment --id <EXPERIMENT_ID>4. Score yourself
- Did an alarm fire? How long after the slowdown started?
- Did it point at the right AZ?
- Did someone make the evacuation call, and did shifting traffic actually help?
Caveats
- These inject real latency and traffic disruption. Partial doesn't mean harmless.
- Each scenario supports specific resource types and needs an IAM role for FIS. Read the scenario description in the console before you build on it.
- If nothing fires, that's a finding, not a failed test. It's exactly what this scenario exists to show.
- Averages hide gray failures. If your only latency alarm is on the mean, expect to miss it.
Try it safely
- Staging first, one AZ, short duration.
- Add at least one stop-condition alarm, and keep
stop-experimentready in a terminal. - Tell on-call it's a drill, but don't tell them which AZ. See whether the alarms find it.
- Write down time to detect and time to decide. Fix the slowest one first.
- Re-run after you tune thresholds.
Official sources
More 30-sec Infra Fixes
IF1 · Chaos testing without being Netflix: Resilience Hub's 4 ready-made tests
AWS Resilience Hub (next gen) now ships recommended resilience tests powered by AWS FIS: AZ recovery, dependency validation, Multi-Region isolation and recovery.
IF2 · terraform plan taking forever? Try -minimal-refresh
Terraform 1.17 adds terraform plan -minimal-refresh: refresh only the resources with proposed changes. Plus the drift catch, and two bonus 1.16/1.17 features.