ITSkillsCenter
Business Digital

EventBridge, Lambda et Step Functions — automation réactive DOP-C02 2026

9 دقائق للقراءة

📍 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

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

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité