Step Functions pour runbooks SRE
À la fin de ce tutoriel, vous saurez concevoir des runbooks SRE avec AWS Step Functions : Standard vs Express, Choice / Parallel / Map / Wait, Retry/Catch, pattern EventBridge → Step Functions → Lambda/SSM → SNS, IAM least privilege, observabilité, et un lab CLI en
ca-central-1. Angle orchestration remédiation DevOps Elastic Hayway (DEH).Niveau : Intermédiaire · Temps estimé : 60–80 min · Versions cibles : AWS CLI v2 · Step Functions ASL · Lambda · SNS · EventBridge · Dernière vérification : 2026-09-11 · Region :
ca-central-1Slug :
wow-step-functions-sre· Série : WOW (22/50) · Mot-clé SEO : step functions sre · Publish : HOLD← Précédent : Lambda Powertools · → Suivant : EventBridge Patterns · Aussi : Lambda + API Gateway · SNS & SQS · CloudWatch alarmes · SSM Session Manager
Prérequis
- Lambda basique — Lambda + API Gateway
- Notifications — SNS & SQS
- Alarming — CloudWatch alarmes
- Accès / Automation — SSM Session Manager
- Compte lab (
AWS_PROFILE=lab) — Démarrer avec AWS
Coût estimé : 0–quelques € (executions Standard rares + Lambda mock). Cleanup obligatoire.
export AWS_PROFILE=lab
export AWS_DEFAULT_REGION=ca-central-1
aws sts get-caller-identity
Ce que nous allons construire
Step Functions runbooks SRE (WOW 22/50) — ca-central-1
├── Pourquoi automatiser les runbooks (vs scripts / SSM seul)
├── Standard vs Express + états ASL clés
├── Pattern DEH : EventBridge → SFN → Lambda/SSM → SNS
├── IAM least privilege (role states + Lambda)
├── Lab : state machine remédiation (Retry/Catch + SNS)
├── Observabilité : Logs / X-Ray / Execution history
└── Anti-patterns + checklist + quiz + FAQ
(Schéma — alt : « Alarme CloudWatch via EventBridge déclenche Step Functions : Choice, Lambda remédiation, Catch vers SNS, région ca-central-1 ».)
Étape 1 — Pourquoi des runbooks automatisés avec Step Functions
Un runbook SRE dit « si alarme X, vérifier Y, remédier Z, notifier ». Sous stress, le manuel augmente le MTTR. Script ou SSM seul : OK en linéaire ; pour branches, retries, compensation et audit, Step Functions orchestre.
| Approche | Forces | Limites |
|---|---|---|
| Script / SSM Run Command | Rapide | Peu d’état ni d’audit riche |
| SSM Automation | Bon pour EC2/OS | Graphe Choice/Map/Parallel limité |
| Step Functions + Lambda/SSM | État, Retry/Catch, historique, IAM fin | Courbe ASL + design roles |
DEH : SFN orchestre, Lambda/SSM exécutent, SNS signale. Remédiation idempotente et bornée.
Étape 2 — Standard vs Express ; états ASL utiles
2.1 — Standard vs Express
| Critère | Standard | Express |
|---|---|---|
| Durée | Jusqu’à 1 an | Minutes |
| Sémantique | Exactly-once (démarrage) | At-least-once |
| Historique | Exécution détaillée | Via CloudWatch Logs |
| Prix | Par transition | Durée + requêtes |
| Runbooks SRE DEH | Défaut (audit) | Haute fréquence |
Remédiation alarme → action → notify : Standard.
2.2 — États clés
- Task : Lambda, SSM, intégrations AWS.
- Choice : sévérité, type d’alarme, résultat check.
- Parallel / Map : checks simultanés ou N cibles.
- Wait : laisser remonter avant re-check.
- Retry / Catch : backoff transitoire ; Catch → notify + fail contrôlé.
{
"Retry": [{
"ErrorEquals": ["States.TaskFailed", "Lambda.ServiceException"],
"IntervalSeconds": 5,
"MaxAttempts": 3,
"BackoffRate": 2.0
}],
"Catch": [{
"ErrorEquals": ["States.ALL"],
"ResultPath": "$.error",
"Next": "NotifyFailure"
}]
}
Étape 3 — Pattern DEH : EventBridge → SFN → Lambda/SSM → SNS
[ CloudWatch Alarm ALARM ]
│
▼
[ EventBridge rule ]
│
▼
[ Step Functions Standard — deh-wow22-remediate ]
├── Choice (sévérité / service)
├── Task Lambda mock (ou SSM Automation)
├── Wait + re-check (optionnel)
├── Catch → SNS alerte on-call
└── Succeed / Fail explicite
Alarme → EventBridge (states:StartExecution) → SFN (Choice + Task) → SNS succès ou Catch escalade. Lab = Lambda mock ; prod = SSM Automation ciblé. Voir CloudWatch alarmes, SNS & SQS, SSM.
Étape 4 — IAM least privilege
| Rôle | Trust | Permissions minimales |
|---|---|---|
deh-wow22-sfn-role |
states.amazonaws.com |
lambda:InvokeFunction + sns:Publish scopés |
deh-wow22-lambda-role |
lambda.amazonaws.com |
BasicExecution ; en prod SSM/EC2 ciblés |
Pas de * SNS/SSM. EventBridge : states:StartExecution sur l’ARN machine. Tags Owner/Service/Env.
Étape 5 — Lab ca-central-1 : remédiation CLI
5.1 — SNS + Lambda mock
export AWS_PROFILE=lab
export AWS_DEFAULT_REGION=ca-central-1
TOPIC_ARN=$(aws sns create-topic --name deh-wow22-sre-alerts
--query TopicArn --output text)
ROLE_LAMBDA_ARN=$(aws iam create-role --role-name deh-wow22-lambda-role
--assume-role-policy-document '{
"Version":"2012-10-17",
"Statement":[{"Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"},
"Action":"sts:AssumeRole"}]
}' --query Role.Arn --output text)
aws iam attach-role-policy --role-name deh-wow22-lambda-role
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
mkdir -p /tmp/deh-wow22 && cat > /tmp/deh-wow22/lambda_function.py << 'PY'
def handler(event, context):
return {"ok": True, "action": "restart_mock",
"service": event.get("service", "unknown")}
PY
(cd /tmp/deh-wow22 && zip -q function.zip lambda_function.py)
sleep 8
LAMBDA_ARN=$(aws lambda create-function
--function-name deh-wow22-remediate --runtime python3.12
--role "$ROLE_LAMBDA_ARN" --handler lambda_function.handler
--zip-file fileb:///tmp/deh-wow22/function.zip --timeout 30
--query FunctionArn --output text)
5.2 — Rôle SFN + ASL
ROLE_SFN_ARN=$(aws iam create-role --role-name deh-wow22-sfn-role
--assume-role-policy-document '{
"Version":"2012-10-17",
"Statement":[{"Effect":"Allow","Principal":{"Service":"states.amazonaws.com"},
"Action":"sts:AssumeRole"}]
}' --query Role.Arn --output text)
cat > /tmp/deh-wow22/sfn-policy.json << EOF
{
"Version": "2012-10-17",
"Statement": [
{"Effect":"Allow","Action":["lambda:InvokeFunction"],"Resource":"${LAMBDA_ARN}"},
{"Effect":"Allow","Action":["sns:Publish"],"Resource":"${TOPIC_ARN}"}
]
}
EOF
aws iam put-role-policy --role-name deh-wow22-sfn-role
--policy-name deh-wow22-sfn-inline
--policy-document file:///tmp/deh-wow22/sfn-policy.json
cat > /tmp/deh-wow22/remediate.asl.json << EOF
{
"Comment": "DEH WOW22 remédiation mock ca-central-1",
"StartAt": "Remediate",
"States": {
"Remediate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${LAMBDA_ARN}",
"Payload": {"service.$": "$.service", "alarm.$": "$.alarm"}
},
"ResultPath": "$.remediation",
"Retry": [{
"ErrorEquals": ["Lambda.ServiceException","Lambda.AWSLambdaException",
"Lambda.SdkClientException"],
"IntervalSeconds": 3, "MaxAttempts": 3, "BackoffRate": 2.0
}],
"Catch": [{"ErrorEquals": ["States.ALL"], "ResultPath": "$.error",
"Next": "NotifyFailure"}],
"Next": "NotifySuccess"
},
"NotifySuccess": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "${TOPIC_ARN}",
"Subject": "deh-wow22 remédiation OK",
"Message.$": "States.Format('Remédié service {}', $.service)"
},
"End": true
},
"NotifyFailure": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "${TOPIC_ARN}",
"Subject": "deh-wow22 remédiation ÉCHEC",
"Message.$": "States.JsonToString($.error)"
},
"Next": "FailRunbook"
},
"FailRunbook": {
"Type": "Fail", "Error": "RemediationFailed",
"Cause": "Catch — intervention humaine"
}
}
}
EOF
sleep 8
SM_ARN=$(aws stepfunctions create-state-machine
--name deh-wow22-remediate
--definition file:///tmp/deh-wow22/remediate.asl.json
--role-arn "$ROLE_SFN_ARN" --type STANDARD
--query stateMachineArn --output text)
5.3 — Exécution + historique
EXEC_ARN=$(aws stepfunctions start-execution
--state-machine-arn "$SM_ARN"
--name "deh-wow22-lab-$(date +%s)"
--input '{"service":"nginx","alarm":"HighCPU"}'
--query executionArn --output text)
aws stepfunctions describe-execution --execution-arn "$EXEC_ARN"
aws stepfunctions get-execution-history --execution-arn "$EXEC_ARN"
--max-results 20 --query 'events[].{id:id,type:type}' --output table
5.4 — Cleanup lab obligatoire
aws stepfunctions delete-state-machine --state-machine-arn "$SM_ARN"
aws lambda delete-function --function-name deh-wow22-remediate
aws sns delete-topic --topic-arn "$TOPIC_ARN"
aws iam delete-role-policy --role-name deh-wow22-sfn-role
--policy-name deh-wow22-sfn-inline
aws iam detach-role-policy --role-name deh-wow22-lambda-role
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws iam delete-role --role-name deh-wow22-sfn-role
aws iam delete-role --role-name deh-wow22-lambda-role
Étape 6 — Observabilité
| Signal | Où | Usage SRE |
|---|---|---|
| Execution history | get-execution-history |
Audit Standard pas-à-pas |
| CloudWatch Logs | Logging config SFN | Express + diagnostics |
| X-Ray | SFN + Lambda | Latence Task / erreurs |
| Métriques | ExecutionsFailed, TimedOut |
Alarmer le runbook lui-même |
Logging ERROR/ALL + alarme ExecutionsFailed pour éviter un runbook silencieux.
Étape 7 — Anti-patterns + checklist prod DEH
Anti-patterns : logique métier dans ASL ; pas de Catch ; IAM * ; Express pour runbook rare audité ; remédiation non idempotente ; oublier cleanup ; us-east-1 par défaut.
Checklist : Standard audité ; Retry + Catch → SNS ; roles SFN/Lambda séparés ; EventBridge scoped ; Choice input ; timeouts ; alarme ExecutionsFailed ; tags deh-wow22 ; cleanup ; escalade humaine.
Erreurs fréquentes
| Erreur | Impact | Correction |
|---|---|---|
| Role SFN sans InvokeFunction | TaskFailed immédiat | Policy scopée ARN Lambda |
| Oublier Catch | Failed sans alerte | Catch States.ALL → SNS |
| Express pour audit incident | Pas d’historique console | Standard + Logs |
| Remédiation non idempotente | Double action | Guard Lambda / Choice |
SNS * |
Surface d’attaque | Resource = ARN topic |
| Region us-east-1 | Incohérence DEH | Forcer ca-central-1 |
| Oublier delete SM | Coût / clutter | Cleanup §5.4 |
| Confondre SFN et EventBridge | Mauvaise couche | EB route ; SFN orchestre |
Quiz (5 questions)
1. Pour un runbook SRE rare avec audit détaillé, DEH recommande :
– A. Express uniquement
– B. Standard Workflows
– C. Un cron EC2 sans état
2. Le pattern DEH de remédiation est :
– A. Lambda seule sans historique
– B. EventBridge → Step Functions → Lambda/SSM → SNS
– C. SSH manuel depuis un bastion
3. Retry/Catch servent surtout à :
– A. Remplacer CloudWatch
– B. Gérer erreurs transitoires et escalader proprement
– C. Facturer moins cher Express
4. Region lab de ce tuto :
– A. us-east-1
– B. ca-central-1
– C. eu-west-3
5. Le rôle de la state machine doit notamment pouvoir :
– A. iam:CreateUser
– B. lambda:InvokeFunction et sns:Publish scopés
– C. ec2:* global
Réponses : 1‑B · 2‑B · 3‑B · 4‑B · 5‑B
FAQ
Pourquoi Step Functions plutôt qu’un script SSM seul ?
SSM Automation suffit pour des actions EC2 linéaires. SFN ajoute graphe, Retry/Catch, historique Standard et multi-services.
Standard ou Express pour un runbook alarme ?
Standard : audit, Wait + re-check, démarrages rares. Express si volume massif.
Comment brancher CloudWatch Alarm ?
Règle EventBridge sur CloudWatch Alarm State Change. Cible : ARN deh-wow22-remediate avec states:StartExecution.
Lambda mock ou SSM Automation en prod ?
Lab = Lambda mock. Prod = SSM Automation ou API via Lambda. Toujours Catch → SNS.
Faut-il X-Ray partout ?
Pour un runbook simple, history + Logs suffisent ; X-Ray si MTTR bloqué sur latence Task.
Comment éviter les boucles de remédiation ?
Idempotence, cooldown (Wait), Choice « déjà remédié », alarme ExecutionsFailed.
Quel préfixe de tags lab ?
deh-wow22- (topic, Lambda, state machine, roles) pour cleanup et FinOps.
Publish de ce tuto ?
HOLD — draft only, feu vert Maître requis avant mise en ligne.
Pour aller plus loin
- Lambda Powertools
- EventBridge Patterns
- Lambda + API Gateway
- SNS & SQS
- CloudWatch alarmes
- SSM Session Manager
- Well-Architected
- Démarrer avec AWS
Maillage série WOW
| ← Précédent | Lambda Powertools |
| → Suivant | EventBridge Patterns |
| Aussi | Lambda + API Gateway · SNS & SQS · CloudWatch alarmes · SSM Session Manager |
Meta publication (SEO)
- Title SEO : Step Functions pour runbooks SRE : remédiation auto (guide FR)
- Meta description : Step Functions pour runbooks SRE : Standard vs Express, Retry/Catch, pattern EventBridge→SFN→Lambda/SSM→SNS, lab ca-central-1, FAQ, quiz et check-list DEH.
- Focus keyword : step functions sre
- Secondary : AWS Step Functions runbook, remédiation SRE, EventBridge Step Functions, ASL Retry Catch
- Image :
assets/web/devopelastichayway/cover-wow-step-functions-sre-1200x630.webp(à générer) - Catégorie : WOW / SRE · Niveau : Intermédiaire
- URL cible : https://devopelastichayway.com/tutoriels/wow-step-functions-sre/
- Post live : N/A (nouveau) · slug
wow-step-functions-sre· Publish : HOLD (draft only — feu vert Maître requis)
Pour aller plus loin — hubs live
Retour parcours Catalogue Tutoriels — hub de la série et leçons sœurs.