📍 Article principal du cluster : AWS DevOps Engineer Professional DOP-C02 — guide pratique 2026
Ce tutoriel fait partie du cluster certification AWS DOP-C02. Pour la vue d’ensemble, lisez d’abord le pilier.
Introduction
Les domaines 5 (Incident and Event Response, 14 %) et 6 (Security and Compliance, 17 %) cumulent 31 % de l’examen DOP-C02. Ils testent votre capacité à automatiser la réponse aux événements AWS — détection de modification non autorisée d’un Security Group, rotation automatique d’un secret expiré, remediation d’une instance EC2 non conforme — sans intervention humaine. Les outils centraux : EventBridge (le bus d’événements AWS), Lambda (compute serverless), Step Functions (orchestration de workflow), et Systems Manager Automation Documents (runbooks). Ce tutoriel construit trois automatisations end-to-end utilisables en production.
Prérequis
- AWS CLI v2 configuré avec admin access
- Tutoriels CodePipeline, CFN/CDK et observability terminés
- 40 minutes
Étape 1 — Créer une règle EventBridge sur événement AWS
EventBridge est le bus d’événements unifié AWS. Chaque action sur la majorité des services AWS génère un événement (instance EC2 démarrée, secret modifié, role IAM créé, fichier S3 uploadé). Une règle EventBridge match un pattern et déclenche une cible (Lambda, SQS, Step Functions, SNS).
cat > /tmp/event-pattern.json <<'EOF'
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated", "stopped"]
}
}
EOF
aws events put-rule \
--name dop-c02-ec2-state-change \
--event-pattern file:///tmp/event-pattern.json \
--state ENABLED
La règle se déclenche à chaque arrêt ou terminaison d’instance EC2. Sans cible attachée, elle ne fait rien — c’est l’étape suivante.
Étape 2 — Créer une fonction Lambda de remediation
La Lambda recevra l’événement et exécutera la remediation. Pour notre exemple, elle envoie une notification SNS à l’équipe SRE.
cat > /tmp/lambda-trust.json <<'EOF'
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"},"Action":"sts:AssumeRole"}]}
EOF
aws iam create-role --role-name DopC02LambdaRole --assume-role-policy-document file:///tmp/lambda-trust.json
aws iam attach-role-policy --role-name DopC02LambdaRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws iam attach-role-policy --role-name DopC02LambdaRole --policy-arn arn:aws:iam::aws:policy/AmazonSNSFullAccess
ACCT=$(aws sts get-caller-identity --query Account --output text)
TOPIC_ARN=$(aws sns create-topic --name dop-c02-incidents --query TopicArn --output text)
mkdir -p /tmp/lambda-src && cd /tmp/lambda-src
cat > index.js <<'EOF'
const { SNSClient, PublishCommand } = require('@aws-sdk/client-sns');
const sns = new SNSClient({});
exports.handler = async (event) => {
const msg = `EC2 ${event.detail['instance-id']} is now ${event.detail.state} in ${event.region}`;
await sns.send(new PublishCommand({ TopicArn: process.env.SNS_TOPIC, Message: msg }));
return { statusCode: 200 };
};
EOF
zip -q lambda.zip index.js
aws lambda create-function \
--function-name dop-c02-ec2-handler \
--runtime nodejs22.x \
--role arn:aws:iam::$ACCT:role/DopC02LambdaRole \
--handler index.handler \
--zip-file fileb:///tmp/lambda-src/lambda.zip \
--environment "Variables={SNS_TOPIC=$TOPIC_ARN}"
La Lambda dispose de permissions SNS et logging CloudWatch. Le SDK AWS pour JavaScript v3 est utilisé — bien plus performant et tree-shakable que la v2.
Étape 3 — Connecter la règle EventBridge à la Lambda
Deux étapes pour attacher la cible : ajouter la cible Lambda à la règle, et autoriser EventBridge à invoker la Lambda.
aws lambda add-permission \
--function-name dop-c02-ec2-handler \
--statement-id eb-invoke \
--action lambda:InvokeFunction \
--principal events.amazonaws.com \
--source-arn arn:aws:events:$AWS_DEFAULT_REGION:$ACCT:rule/dop-c02-ec2-state-change
aws events put-targets \
--rule dop-c02-ec2-state-change \
--targets "Id=1,Arn=arn:aws:lambda:$AWS_DEFAULT_REGION:$ACCT:function:dop-c02-ec2-handler"
Maintenant chaque arrêt d’instance EC2 dans le compte/région déclenche la Lambda qui publie sur SNS. Les abonnés du topic (email, SMS, Lambda secondaire, PagerDuty webhook) reçoivent la notification.
Étape 4 — Tester avec une instance EC2 réelle
Lancez une micro-instance, attendez la propagation EventBridge, puis terminez-la. La Lambda doit s’exécuter et publier sur SNS.
INSTANCE_ID=$(aws ec2 run-instances \
--image-id $(aws ec2 describe-images --owners amazon --filters 'Name=name,Values=al2023-ami-*' --query 'Images[0].ImageId' --output text) \
--instance-type t2.micro \
--query 'Instances[0].InstanceId' --output text)
echo "Started: $INSTANCE_ID"
sleep 30
aws ec2 terminate-instances --instance-ids $INSTANCE_ID
sleep 60
aws logs tail /aws/lambda/dop-c02-ec2-handler --since 5m
Les logs CloudWatch de la Lambda doivent afficher l’invocation et la confirmation SNS publish. C’est le pattern d’automation reactive le plus testé en domaine 5.
Étape 5 — Step Functions pour workflow complexe
Quand la remediation demande plusieurs étapes (vérifier l’état, attendre confirmation, exécuter, vérifier résultat), Step Functions orchestre la séquence en YAML/JSON.
cat > /tmp/sfn-definition.json <<'EOF'
{
"Comment": "EC2 incident response workflow",
"StartAt": "GetInstanceTags",
"States": {
"GetInstanceTags": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:ec2:describeInstances",
"Parameters": {
"InstanceIds.$": "States.Array($.detail.instance-id)"
},
"Next": "IsProduction"
},
"IsProduction": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.Reservations[0].Instances[0].Tags",
"IsPresent": true,
"Next": "PageOnCall"
}
],
"Default": "LogOnly"
},
"PageOnCall": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:REGION:ACCOUNT:dop-c02-pager",
"Message.$": "$"
},
"End": true
},
"LogOnly": {
"Type": "Pass",
"End": true
}
}
}
EOF
Step Functions permet du conditional logic, retry, parallelism, et une visualisation graphique du workflow. C’est l’outil de référence pour les incident response runbooks complexes — testé directement en domaine 5.
Étape 6 — Systems Manager Automation Documents
SSM Automation Documents définissent des runbooks AWS-native exécutables manuellement ou déclenchés par EventBridge. Avantage : pas de Lambda à maintenir, gestion centralisée des runbooks, intégration native avec services AWS.
schemaVersion: '0.3'
description: 'Restart EC2 instance and verify health'
parameters:
InstanceId:
type: String
mainSteps:
- name: stopInstance
action: aws:executeAwsApi
inputs:
Service: ec2
Api: StopInstances
InstanceIds:
- "{{ InstanceId }}"
- name: waitStopped
action: aws:waitForAwsResourceProperty
inputs:
Service: ec2
Api: DescribeInstances
InstanceIds:
- "{{ InstanceId }}"
PropertySelector: "$.Reservations[0].Instances[0].State.Name"
DesiredValues:
- stopped
- name: startInstance
action: aws:executeAwsApi
inputs:
Service: ec2
Api: StartInstances
InstanceIds:
- "{{ InstanceId }}"
- name: verifyRunning
action: aws:waitForAwsResourceProperty
inputs:
Service: ec2
Api: DescribeInstances
InstanceIds:
- "{{ InstanceId }}"
PropertySelector: "$.Reservations[0].Instances[0].State.Name"
DesiredValues:
- running
Ce document est versionné dans CloudFormation, exécutable via console SSM ou EventBridge target. Pattern recommandé pour les actions répétables comme reboot, scale, patch.
Étape 7 — IAM Conditions pour granularité
Le domaine 6 (Security, 17 %) teste massivement les Conditions IAM. Une bonne policy n’utilise pas Allow * Resource * — elle ajoute des conditions sur tags, MFA, source IP, time of day.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:TerminateInstances",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Environment": "dev"
},
"Bool": {
"aws:MultiFactorAuthPresent": "true"
},
"IpAddress": {
"aws:SourceIp": ["198.51.100.0/24", "203.0.113.0/24"]
}
}
}
]
}
Cette policy permet de terminer des instances EC2 uniquement si : la ressource a le tag Environment=dev, l’utilisateur est connecté avec MFA, et la requête vient d’une IP corporate. Ce pattern « belt and braces » est exactement ce qu’attend l’examen.
Étape 8 — Secrets Manager rotation automatique
Secrets Manager peut rotater automatiquement les credentials RDS, Redshift, DocumentDB. Élimine la gestion manuelle des passwords expirés — un piège classique qui cause des outages production.
aws secretsmanager create-secret \
--name dop-c02-rds-secret \
--secret-string '{"username":"admin","password":"InitialP@ss123"}' \
--tags Key=Environment,Value=demo
# Activer la rotation automatique tous les 30 jours
aws secretsmanager rotate-secret \
--secret-id dop-c02-rds-secret \
--rotation-lambda-arn arn:aws:lambda:REGION:ACCOUNT:function:SecretsManagerRDSRotation \
--rotation-rules AutomaticallyAfterDays=30
La Lambda de rotation est fournie par AWS — vous n’avez qu’à la déployer une fois. Elle gère la création d’un nouveau password, sa propagation à RDS, et la mise à jour du secret. Tous les consumers qui lisent le secret via Secrets Manager récupèrent automatiquement la nouvelle valeur.
Comprendre la différence EventBridge, SNS, SQS
Trois services AWS pour la messagerie inter-services, souvent confondus. EventBridge est un bus d’événements pull-based avec routing par pattern matching — un événement peut déclencher plusieurs cibles. Idéal pour les workflows reactive automation. SNS (Simple Notification Service) est pub/sub fan-out — un message est livré à tous les abonnés d’un topic. Idéal pour les notifications multi-destinataires. SQS (Simple Queue Service) est une queue point-à-point avec garanties de delivery — un message consommé n’est plus disponible aux autres consumers. Idéal pour le découplage de production/consommation.
Le pattern recommandé pour la résilience : EventBridge → SQS → Lambda. EventBridge route, SQS bufferise (gérant les pics de trafic et les retries), Lambda consomme. C’est testé directement à l’examen DOP-C02.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| EventBridge ne match jamais | Pattern JSON mal formé | Tester via console EventBridge « Sample events » et « Test pattern » |
| Lambda timeout sur Step Functions | Default 3s timeout | Augmenter Lambda timeout à 30s, ou splitter en plusieurs Lambdas |
| IAM Condition refuse une action légitime | Mauvaise clé Condition | `aws iam simulate-custom-policy` pour debugger |
| Secret rotation échoue | Lambda rotation pas dans le bon VPC | Lambda doit accéder à RDS via VPC config, pas via internet |
| Step Functions infinite loop | Mauvaise condition Choice | Toujours définir un état Default dans Choice |
Adaptation au contexte ouest-africain
Pour les équipes plateforme à Dakar, Abidjan ou Bamako qui opèrent un AWS naissant, EventBridge + Lambda est l’investissement le plus rentable pour automatiser les remediations courantes : rotation de password, redémarrage d’instance bloquée, vérification de tag obligatoire, alerte sur création de role IAM. Ces 4-6 automations couvrent 80 % des incidents répétitifs et libèrent du temps pour les vrais sujets stratégiques. Coût marginal sur AWS : EventBridge à 1 USD pour 1 million d’événements, Lambda gratuit pour les premiers 1 million d’invocations/mois — pratiquement gratuit pour des PME.
Tutoriels frères
Pour aller plus loin
- 🔝 Retour au pilier : AWS DOP-C02 — guide pratique 2026
- EventBridge : docs.aws.amazon.com/eventbridge
- Step Functions : docs.aws.amazon.com/step-functions
- Systems Manager Automation : docs.aws.amazon.com/systems-manager/automation
- Secrets Manager : docs.aws.amazon.com/secretsmanager
FAQ
Lambda ou Step Functions ?
Lambda pour des fonctions courtes et indépendantes (< 5 min, peu de logique). Step Functions pour des workflows multi-étapes avec branches conditionnelles. Step Functions peut orchestrer plusieurs Lambdas — c’est souvent la combinaison gagnante.
EventBridge ou CloudWatch Events ?
Même service, ancien nom. EventBridge a remplacé CloudWatch Events en 2019 avec en plus le support de Schema Registry et de Partner Events. Pour CKAD/CKS/DOP-C02, utilisez le nom EventBridge.
Mots-clés secondaires : eventbridge tutoriel, lambda nodejs aws, step functions workflow, ssm automation document, iam conditions, secrets manager rotation, dop-c02 incident response