Retour arrière automatisé pour un déploiement ECS Fargate défaillant sans script personnalisé.
→Activer le disjoncteur de déploiement ECS avec retour arrière sur le service ECS.
Pourquoi: Fonctionnalité native d'ECS qui effectue un retour arrière automatique si les nouvelles tâches ne parviennent pas à se stabiliser. Coût opérationnel minimal par rapport à l'interrogation CodeBuild personnalisée ou aux configurations CodeDeploy complexes.
Référence↗
Déployer vers une région primaire, valider avec des tests automatisés, puis déployer vers d'autres régions en parallèle.
→Utiliser un seul CodePipeline avec des étapes séquentielles : (1) Déployer la Région A, (2) une étape de test CodeBuild qui exécute la validation, (3) une étape de déploiement parallèle pour les Régions B et C.
Pourquoi: CodeBuild agit comme une porte programmatique automatisée. Un seul pipeline est plus simple que d'orchestrer plusieurs pipelines avec Step Functions.
Un script de validation de longue durée dans un hook de cycle de vie CodeDeploy provoque une réussite prématurée du déploiement.
→Augmenter la propriété `timeout` pour le script de hook de cycle de vie spécifique dans le fichier `AppSpec.yml`.
Pourquoi: Le timeout est configuré par hook dans le fichier AppSpec, et non au niveau du groupe de déploiement. Cela garantit que le script de validation dispose de suffisamment de temps pour se terminer.
Accélérer les builds d'images Docker lents de CodeBuild causés par le téléchargement répété des dépendances et des couches d'image à chaque exécution.
→Dans la configuration du projet CodeBuild, activer `LOCAL_DOCKER_LAYER_CACHE` et configurer un cache S3 pour les répertoires de dépendances (par exemple, `.m2`, `node_modules`).
Pourquoi: Traite directement les deux sources de lenteur. Le cache de couches Docker réutilise les couches d'image inchangées ; le cache S3 réutilise les dépendances d'application téléchargées.
Mettre en œuvre un déploiement canari pour une fonction Lambda avec un retour arrière automatisé et basé sur des métriques.
→Utiliser AWS SAM avec `DeploymentPreference` (par exemple, type `Canary10Percent5Minutes`). Ajouter une alarme CloudWatch sur la métrique `Errors` comme déclencheur de retour arrière.
Pourquoi: SAM s'intègre nativement à CodeDeploy pour Lambda, automatisant le déplacement du trafic d'alias, la surveillance et le retour arrière sans scripts personnalisés.
Référence↗
Configurer IAM pour un CodePipeline dans le Compte A afin de déployer des ressources dans le Compte B.
→Le rôle du pipeline (Compte A) assume un rôle d'action (Compte B). Le rôle d'action dans B fait confiance au rôle du pipeline et dispose des permissions de déploiement. Le compartiment d'artefacts S3 et la clé KMS dans A doivent avoir des politiques de ressources accordant l'accès au rôle d'action dans B.
Pourquoi: C'est le modèle d'accès inter-comptes standard et sécurisé : assomption de rôle pour les actions, politiques basées sur les ressources pour l'accès aux données.
Mettre en œuvre un workflow GitOps pour EKS où l'état du cluster est automatiquement et continuellement réconcilié avec un dépôt Git.
→Déployer un contrôleur GitOps (par exemple, Flux, ArgoCD) dans le cluster EKS. Le configurer pour surveiller le dépôt Git et appliquer/réconcilier les changements.
Pourquoi: C'est le modèle GitOps "pull-based" standard. Le contrôleur in-cluster gère la réconciliation continue et la détection de dérive, ce qui est le principe fondamental de GitOps.
Permettre à un projet CodeBuild dans un compte d'outillage central de déployer des manifestes Kubernetes vers des clusters EKS dans des comptes de charge de travail distincts.
→Dans chaque compte de charge de travail, créer un rôle IAM inter-comptes auquel le rôle CodeBuild fait confiance. Mapper ce nouveau rôle à un groupe RBAC Kubernetes dans le `aws-auth` ConfigMap du cluster EKS. Le script CodeBuild assume le rôle avant d'exécuter `kubectl`.
Pourquoi: C'est le modèle standard et sécurisé pour l'accès inter-comptes à EKS. Il suit le principe du moindre privilège en créant un rôle dédié et de confiance à cette fin.
Effectuer une migration de schéma complexe pour une base de données RDS PostgreSQL ou MySQL avec une interruption de service nulle ou quasi-nulle.
→Utiliser la fonctionnalité Déploiements Bleu/Vert d'Amazon RDS. Créer un environnement de staging (vert) synchronisé, y appliquer les modifications de schéma, puis effectuer un basculement pour le promouvoir en production.
Pourquoi: C'est le service géré spécialement conçu pour les mises à jour RDS sûres et sans interruption de service. Il gère le clonage, la synchronisation et un basculement rapide (< 1 min) avec des garde-fous intégrés.
Déployer une nouvelle version d'une application monopage (SPA) sur S3/CloudFront et s'assurer que les utilisateurs reçoivent la nouvelle version immédiatement avec des coûts d'invalidation de cache minimaux.
→Utiliser le hachage basé sur le contenu pour les noms de fichiers d'actifs (par exemple, `app.a1b2c3d4.js`). Après le déploiement des nouveaux actifs, invalider uniquement le fichier `index.html` dans la distribution CloudFront.
Pourquoi: Les noms de fichiers hachés sont uniques, de sorte que CloudFront les traite comme de nouveaux objets et les récupère de l'origine, en contournant le cache. Seul le fichier de point d'entrée unique (`index.html`) nécessite une invalidation, ce qui est significativement moins cher qu'une invalidation générique (`/*`).
Implémenter un pipeline CI/CD pour une application AWS CDK qui se met à jour automatiquement lorsque la définition du pipeline elle-même change.
→Utiliser le construct CDK Pipelines (`pipelines.CodePipeline`). Ce construct crée un pipeline qui inclut une étape `SelfMutate` par défaut.
Pourquoi: CDK Pipelines est un construct de haut niveau spécialement conçu pour ce modèle. L'étape `SelfMutate` garantit que le pipeline reflète toujours la dernière définition du code avant de déployer les modifications de l'application.
Déployer une nouvelle version d'application qui nécessite une modification de schéma de base de données rétrocompatible (par exemple, l'ajout de nouvelles colonnes) sans interruption de service.
→Implémenter un modèle d'expansion et de contraction (ou de changement parallèle). Premièrement, déployer les modifications de schéma de base de données additives et rétrocompatibles. Deuxièmement, déployer la nouvelle version de l'application qui utilise le nouveau schéma. Les anciennes et nouvelles versions de l'application peuvent coexister avec la base de données mise à jour.
Pourquoi: Ce modèle découple les déploiements de base de données et d'application, garantissant que l'état de la base de données est toujours compatible avec les anciennes et nouvelles versions de l'application, permettant ainsi des déploiements sans interruption de service.
Déployer progressivement une nouvelle fonctionnalité auprès de segments d'utilisateurs spécifiques et mesurer l'impact sur les métriques métier (par exemple, le taux de conversion) à l'aide de tests A/B.
→Utiliser Amazon CloudWatch Evidently. Créer une fonctionnalité avec plusieurs variations, un lancement pour contrôler le pourcentage de déploiement, et une expérience pour mesurer l'impact statistique sur des métriques définies.
Pourquoi: Evidently est un service spécialement conçu pour le feature flagging et l'expérimentation A/B, fournissant non seulement le mécanisme de déploiement mais aussi le moteur d'analyse statistique pour mesurer l'impact.