- Les 19 et 20 octobre 2025, la région AWS N. Virginia (us-east-1) a subi une panne prolongée touchant Amazon DynamoDB ainsi que plusieurs services critiques
- L’incident a commencé lorsqu’un enregistrement DNS vide incorrect a été créé à cause d’une condition de concurrence potentielle (race condition) dans le système de gestion DNS automatisé de DynamoDB
- Cela a entraîné en cascade des échecs de création d’instances EC2, des erreurs de connexion sur Network Load Balancer (NLB), ainsi que des latences et échecs d’API sur de nombreux services comme Lambda, ECS et Redshift
- AWS a identifié la cause du problème comme un conflit de mises à jour simultanées anormales entre les DNS Enactor de DynamoDB, puis a procédé à une restauration manuelle pour revenir à un fonctionnement complet vers 14 h 20 le 20 octobre
- Cet incident met en lumière la complexité des interdépendances entre les systèmes d’automatisation internes d’AWS et annonce des améliorations structurelles à venir pour renforcer la résilience de DNS, EC2 et NLB
Vue d’ensemble de l’incident
- La panne a commencé le 19 octobre 2025 à 23 h 48 (PDT) et s’est terminée le 20 octobre à 14 h 20 (PDT)
- Trois périodes d’impact majeures ont été observées :
- du 19 octobre à 23:48 au 20 octobre à 2:40 : forte hausse du taux d’erreurs de l’API DynamoDB
- du 20 octobre à 5:30 à 14:09 : augmentation des erreurs de connexion NLB
- du 20 octobre à 2:25 à 10:36 : échec de création de nouvelles instances EC2 et problèmes de connectivité réseau
- L’incident a commencé par une défaillance du système de gestion DNS de DynamoDB avant de se propager à de nombreux services comme EC2, NLB, Lambda et Redshift
Cause et impact de la panne DynamoDB
- Une défaillance latente dans le système de gestion DNS automatisé de DynamoDB s’est déclenchée, mettant à jour de façon erronée l’enregistrement DNS de
dynamodb.us-east-1.amazonaws.com vers un état vide
- Le système est divisé en deux composants :
- DNS Planner : surveille l’état des load balancers et génère de nouveaux plans DNS
- DNS Enactor : applique les modifications dans Route53
- Une condition de concurrence (race condition) est survenue entre les DNS Enactor déployés indépendamment dans trois zones de disponibilité (AZ)
- Le premier Enactor, en retard, a appliqué un ancien plan
- Le deuxième Enactor a appliqué le plan le plus récent puis supprimé l’ancien plan, retirant ainsi toutes les adresses IP et faisant basculer le système dans un état incohérent
- L’auto-réparation ayant échoué, une intervention manuelle a été nécessaire
- Juste après le début de la panne à 23 h 48, tous les services et flux clients dépendant de DynamoDB ont subi des échecs de connexion
- Les clients utilisant des global tables ont pu envoyer leurs requêtes vers des réplicas dans d’autres régions, mais avec un retard de réplication (replication lag)
- À 0 h 38, des ingénieurs AWS ont confirmé que l’état DNS était la cause du problème
- À 1 h 15, une mesure de restauration temporaire a permis de rétablir partiellement la connectivité de certains services internes
- À 2 h 25, les informations DNS ont été totalement restaurées, et à 2 h 40 toutes les connexions étaient revenues à la normale
Impact sur Amazon EC2 et processus de restauration
- Entre le 19 octobre à 23 h 48 et le 20 octobre à 13 h 50, on a constaté une hausse du taux d’erreurs des API EC2, des échecs de création d’instances et une augmentation de la latence
- Les instances déjà en cours d’exécution n’ont pas été affectées
- La gestion des instances EC2 repose sur deux sous-systèmes : DropletWorkflow Manager (DWFM) et Network Manager
- DWFM gère l’état des serveurs physiques (« droplet ») et effectue des vérifications périodiques
- Network Manager propage la configuration réseau des instances
- En raison de la panne DynamoDB, les contrôles d’état de DWFM ont échoué, ce qui a entraîné l’expiration des baux (lease) des droplets
- Après le rétablissement de DynamoDB à 2 h 25, DWFM a tenté de se reconnecter, mais le grand nombre de droplets a provoqué un effondrement par congestion (congestive collapse)
- À 4 h 14, les ingénieurs ont redémarré de manière sélective les hôtes DWFM pour vider les files et poursuivre la restauration
- À 5 h 28, tous les baux des droplets avaient été restaurés et la création de nouvelles instances a repris
- Ensuite, Network Manager a traité un arriéré de propagation de l’état réseau, causant des retards de connectivité réseau
- À 10 h 36, le temps de propagation réseau était revenu à la normale
- À 11 h 23, l’assouplissement du throttling a commencé, et à 13 h 50 EC2 était entièrement rétabli
Impact sur Network Load Balancer (NLB)
- Entre 5 h 30 et 14 h 09 le 20 octobre, certains clients ont subi une augmentation des erreurs de connexion NLB
- NLB est une architecture mutualisée qui achemine le trafic vers des instances EC2 backend
- La panne était due à des échecs de health checks causés par des retards de propagation de l’état réseau
- La configuration réseau des nouvelles instances EC2 ajoutées n’étant pas terminée, les health checks échouaient
- Les résultats de health checks fluctuaient de façon instable, entraînant la suppression puis le retour de nœuds NLB dans le DNS
- À 6 h 52, le système de supervision a détecté le problème et les ingénieurs ont commencé à intervenir
- Une augmentation de charge sur le sous-système de health checks a déclenché un basculement automatique DNS inter-AZ
- À 9 h 36, la désactivation du basculement automatique a permis le retour de tous les nœuds sains
- À 14 h 09, après le rétablissement d’EC2, le basculement automatique a été réactivé
Impact sur les autres services AWS
- AWS Lambda :
- Erreurs et latences API entre le 19 octobre à 23 h 51 et le 20 octobre à 14 h 15
- En raison de la panne DynamoDB, échec de création et de mise à jour de fonctions, ainsi que retards de traitement des événements SQS/Kinesis
- À 7 h 04, les échecs des health checks NLB ont provoqué une réduction de certains systèmes internes et une limitation des appels asynchrones
- À 14 h 15, tous les arriérés avaient été traités et le service était revenu à la normale
- ECS, EKS, Fargate :
- Entre le 19 octobre à 23 h 45 et le 20 octobre à 14 h 20, échecs d’exécution de conteneurs et retards d’extension des clusters
- Amazon Connect :
- Entre le 19 octobre à 23 h 56 et le 20 octobre à 13 h 20, erreurs de traitement des appels, chats et dossiers
- Après le rétablissement de DynamoDB, la plupart des fonctions sont revenues à la normale, mais de nouvelles erreurs sont apparues après 7 h 04 à cause de l’impact sur NLB et Lambda
- Rétablissement complet à 13 h 20
- AWS STS :
- Entre le 19 octobre à 23 h 51 et le 20 octobre à 9 h 59, erreurs et latences sur les API d’authentification
- Retour temporaire à la normale après le rétablissement de DynamoDB, puis nouvelles erreurs à cause des problèmes NLB
- Connexion IAM et Identity Center :
- Entre le 19 octobre à 23 h 51 et le 20 octobre à 1 h 25, augmentation des échecs d’authentification
- Retour à la normale après le rétablissement de DynamoDB
- Amazon Redshift :
- Entre le 19 octobre à 23 h 47 et le 20 octobre à 2 h 21, échecs d’exécution de requêtes et de modification de clusters
- Après le rétablissement de DynamoDB, certains clusters restaient dégradés à cause de la panne EC2
- Rétablissement complet le 21 octobre à 4 h 05
- En raison d’une dépendance à l’API IAM, des échecs temporaires de requêtes ont aussi eu lieu dans la région globale
- Autres services :
- Managed Workflows for Apache Airflow, Outposts, AWS Support Center et d’autres ont également été affectés
Actions post-incident et plan d’amélioration
- Désactivation complète de l’automatisation DynamoDB DNS Planner et Enactor, avec correction de la condition de concurrence et ajout de garde-fous avant toute réactivation
- NLB : introduction d’un mécanisme de limitation de débit pour plafonner la capacité qu’un seul NLB peut retirer en cas d’échec de health checks
- EC2 :
- Mise en place d’une nouvelle suite de tests incluant les workflows de restauration DWFM
- Amélioration du smart throttling du système de propagation des données afin d’ajouter une limitation des requêtes selon la taille des files d’attente
- AWS examine également des mesures supplémentaires, à l’échelle des interdépendances entre services, pour réduire le temps de restauration et éviter des incidents similaires
Conclusion et excuses
- AWS a présenté ses excuses officielles pour l’impact de cet incident sur ses clients
- L’entreprise reconnaît avoir historiquement maintenu une forte disponibilité de ses services, tout en admettant que cette panne a eu un impact significatif sur l’activité de ses clients
- AWS affirme vouloir tirer les leçons de cet incident pour renforcer la résilience de ses systèmes d’automatisation et de ses procédures de réponse aux pannes
2 commentaires
On dirait que c’est le contrecoup des licenciements de seniors... c’est vrai ?
Avis sur Hacker News
Je suis le genre de personne qui répète toujours la même chose sur ce sujet. Si vous n’avez pas encore lu le texte de Richard Cook, je vous recommande d’arrêter ce post-mortem tout de suite et de lire d’abord How Complex Systems Fail. C’est l’un des meilleurs textes techniques sur les défaillances des systèmes complexes. Cook rejette l’idée même de « cause racine » (root cause), et je pense qu’il a raison dans ce cas précis
Internet est en train de devenir de plus en plus un mononet centralisé. Né à l’époque de la guerre froide comme un réseau distribué, Internet est maintenant structuré de telle sorte qu’une seule erreur de déploiement peut arrêter des banques, le commerce et les voyages à l’échelle mondiale. La métaphore du cloud a déjà largement atteint ses limites.
Pour les startups ou la R&D, cela reste utile, mais les entreprises en phase de croissance ou les gouvernements devraient disposer de leurs propres serveurs, leur propre cloud et leurs propres services critiques. La technologie et les compétences humaines existent largement pour cela
J’ai été impressionné par la visualisation précise de la chronologie dans le post-mortem d’AWS. Comme dans la conférence légendaire de la GDC « I Shot You First », représenter l’écoulement du temps avec des flèches inclinées et poser la question « où le délai s’est-il produit ? » est une approche utile.
Mais ce qui m’a encore plus surpris, c’est que le service de gestion des baux de nœuds EC2 n’avait pas de procédure de reprise (runbook). Pour un service aussi central chez AWS, je pensais que presque toutes les situations exceptionnelles auraient été prévues
Le cœur de cet incident ressemble à une variante du problème de l’invalidation de cache (cache invalidation) dans un système DNS. Deux DNS Enactor ont appliqué des plans à des moments différents, ce qui a provoqué une condition de course (race condition), et un ancien plan a écrasé le plus récent
L’Enactor aurait dû faire une comparaison de version de l’enregistrement actuel (CAS) avant d’appliquer la nouvelle valeur. Même si c’est moins efficace, c’est un garde-fou élémentaire. DynamoDB lui-même aurait pu s’en charger
J’ai été surpris de lire que DynamoDB gère des centaines de milliers d’enregistrements DNS par région. Le fait que
dynamodb.us-east-1.amazonaws.compuisse se résoudre en des centaines de milliers d’adresses IP semble dépasser les limites de Route53. J’imagine qu’ils utilisent probablement un TTL faible et ne mettent à jour qu’une partie des entréesLes bugs existent toujours. La vérification formelle (formal verification) est difficile, et les bugs à faible probabilité peuvent n’apparaître que des années plus tard.
Il faut donc concevoir les systèmes en partant du principe qu’ils finiront par échouer, et prévoir une architecture qui limite les dégâts. L’architecture par cellules, les déploiements progressifs et les zones isolées en sont des exemples.
AWS essaie aussi d’aller vers une architecture par cellules, mais il subsiste encore des dépendances croisées héritées dans us-east-1 en particulier. À long terme, il faudrait concevoir les régions comme totalement indépendantes.
Ce type de travail n’avance pas sans le soutien des dirigeants, mais du point de vue des actionnaires, c’est un investissement clé pour réduire le risque de continuité de l’entreprise
J’ai trouvé surprenant que le rapport utilise le fuseau horaire PT plutôt que l’UTC
Je suis surpris qu’il n’y ait pas de gestion de version par endpoint, ni de motifs comme la 2PC ou le single writer lease. Malgré cela, j’apprécie beaucoup le fait qu’AWS ait publié cela avec autant de transparence
À mon avis, la cause directe de cet incident était une condition de course latente dans le système de gestion DNS de DynamoDB. Un ancien plan a écrasé le plan le plus récent, vidant les enregistrements DNS de l’endpoint régional
Référence : How Complex Systems Fail