Automatisches Rollback für eine fehlgeschlagene ECS Fargate-Bereitstellung ohne benutzerdefinierte Skripte.
→Aktivieren Sie den ECS Deployment Circuit Breaker mit Rollback für den ECS-Dienst.
Warum: Natives ECS-Feature, das automatisch ein Rollback durchführt, wenn neue Tasks nicht stabilisiert werden können. Geringster Betriebsaufwand im Vergleich zu benutzerdefiniertem CodeBuild-Polling oder komplexen CodeDeploy-Einrichtungen.
Referenz↗
In einer primären Region bereitstellen, mit automatisierten Tests validieren und dann parallel in andere Regionen bereitstellen.
→Verwenden Sie eine einzelne CodePipeline mit sequentiellen Stages: (1) Bereitstellung Region A, (2) eine CodeBuild-Test-Stage, die die Validierung durchführt, (3) eine parallele Bereitstellungs-Stage für die Regionen B & C.
Warum: CodeBuild fungiert als automatisiertes, programmatisches Gate. Eine einzelne Pipeline ist einfacher als die Orchestrierung mehrerer Pipelines mit Step Functions.
Ein lang laufendes Validierungsskript in einem CodeDeploy-Lifecycle-Hook führt zu einem vorzeitigen Bereitstellungserfolg.
→Erhöhen Sie die `timeout`-Eigenschaft für das spezifische Lifecycle-Hook-Skript in der `AppSpec.yml`-Datei.
Warum: Das Timeout wird pro Hook in der AppSpec-Datei konfiguriert, nicht auf Ebene der Bereitstellungsgruppe. Dies stellt sicher, dass das Validierungsskript genügend Zeit zur Ausführung hat.
Beschleunigen Sie langsame CodeBuild Docker-Image-Builds, die durch das erneute Herunterladen von Abhängigkeiten und Image-Layern bei jedem Lauf verursacht werden.
→Aktivieren Sie in der CodeBuild-Projektkonfiguration `LOCAL_DOCKER_LAYER_CACHE` und konfigurieren Sie einen S3-Cache für Abhängigkeitsverzeichnisse (z.B. `.m2`, `node_modules`).
Warum: Behebt beide Ursachen der Langsamkeit direkt. Docker-Layer-Caching verwendet unveränderte Image-Layer wieder; S3-Caching verwendet heruntergeladene Anwendungsabhängigkeiten wieder.
Implementieren Sie eine Canary-Bereitstellung für eine Lambda-Funktion mit automatisiertem, metrikgesteuertem Rollback.
→Verwenden Sie AWS SAM mit `DeploymentPreference` (z.B. Typ `Canary10Percent5Minutes`). Fügen Sie einen CloudWatch-Alarm für die `Errors`-Metrik als Rollback-Trigger hinzu.
Warum: SAM integriert sich nativ mit CodeDeploy für Lambda und automatisiert das Verschieben von Alias-Verkehr, Monitoring und Rollback ohne benutzerdefinierte Skripte.
Referenz↗
Konfigurieren Sie IAM für eine CodePipeline in Konto A, um Ressourcen in Konto B bereitzustellen.
→Die Pipeline-Rolle (Konto A) übernimmt eine Aktionsrolle (Konto B). Die Aktionsrolle in B vertraut der Pipeline-Rolle und verfügt über Bereitstellungsberechtigungen. Der S3-Artefakt-Bucket und der KMS-Schlüssel in A müssen Ressourcenrichtlinien haben, die der Aktionsrolle in B Zugriff gewähren.
Warum: Dies ist das standardmäßige, sichere kontoübergreifende Zugriffsmuster: Rollenübernahme für Aktionen, ressourcenbasierte Richtlinien für den Datenzugriff.
Implementieren Sie einen GitOps-Workflow für EKS, bei dem der Cluster-Zustand automatisch und kontinuierlich mit einem Git-Repository abgeglichen wird.
→Stellen Sie einen GitOps-Controller (z.B. Flux, ArgoCD) im EKS-Cluster bereit. Konfigurieren Sie ihn so, dass er das Git-Repository überwacht und Änderungen anwendet/abgleicht.
Warum: Dies ist das Standard-"Pull-basierte" GitOps-Muster. Der In-Cluster-Controller übernimmt die kontinuierliche Abstimmung und Drift-Erkennung, was das Kernprinzip von GitOps ist.
Erlauben Sie einem CodeBuild-Projekt in einem zentralen Tooling-Konto, Kubernetes-Manifeste in EKS-Clustern in separaten Workload-Konten bereitzustellen.
→Erstellen Sie in jedem Workload-Konto eine kontoübergreifende IAM-Rolle, der die CodeBuild-Rolle vertraut. Ordnen Sie diese neue Rolle einer Kubernetes-RBAC-Gruppe in der `aws-auth`-ConfigMap des EKS-Clusters zu. Das CodeBuild-Skript übernimmt die Rolle, bevor `kubectl` ausgeführt wird.
Warum: Dies ist das standardmäßige, sichere Muster für den kontoübergreifenden EKS-Zugriff. Es folgt dem Prinzip der geringsten Rechte, indem eine dedizierte, vertrauenswürdige Rolle für diesen Zweck erstellt wird.
Führen Sie eine komplexe RDS PostgreSQL- oder MySQL-Schema-Migration mit null oder nahezu null Ausfallzeiten durch.
→Verwenden Sie das Amazon RDS Blue/Green Deployments Feature. Erstellen Sie eine synchronisierte Staging-Umgebung (grün), wenden Sie Schemaänderungen darauf an und wechseln Sie dann, um sie in die Produktion zu befördern.
Warum: Dies ist der speziell entwickelte, verwaltete Dienst für sichere RDS-Updates ohne Ausfallzeiten. Er übernimmt das Klonen, die Synchronisation und einen schnellen (< 1 Min.) Switchover mit integrierten Schutzmaßnahmen.
Stellen Sie eine neue Version einer Single-Page Application (SPA) auf S3/CloudFront bereit und stellen Sie sicher, dass Benutzer die neue Version sofort mit minimalen Cache-Invalidierungskosten erhalten.
→Verwenden Sie inhaltsbasiertes Hashing für Asset-Dateinamen (z.B. `app.a1b2c3d4.js`). Nach der Bereitstellung neuer Assets invalidieren Sie nur die Datei `index.html` in der CloudFront-Distribution.
Warum: Gehashte Dateinamen sind eindeutig, sodass CloudFront sie als neue Objekte behandelt und sie vom Ursprung abruft, wodurch der Cache umgangen wird. Nur die einzelne Einstiegspunktdatei (`index.html`) muss invalidiert werden, was erheblich günstiger ist als eine Wildcard (`/*`) Invalidierung.
Implementieren Sie eine CI/CD-Pipeline für eine AWS CDK-Anwendung, die sich automatisch aktualisiert, wenn sich die eigene Definition der Pipeline ändert.
→Verwenden Sie das CDK Pipelines-Konstrukt (`pipelines.CodePipeline`). Dieses Konstrukt erstellt standardmäßig eine Pipeline, die eine `SelfMutate`-Stage enthält.
Warum: CDK Pipelines ist ein speziell für dieses Muster entwickeltes High-Level-Konstrukt. Die `SelfMutate`-Stage stellt sicher, dass die Pipeline immer die neueste Definition aus dem Code widerspiegelt, bevor Anwendungsänderungen bereitgestellt werden.
Stellen Sie eine neue Anwendungsversion bereit, die eine abwärtskompatible Datenbankschemaänderung (z.B. das Hinzufügen neuer Spalten) erfordert, und zwar ohne Ausfallzeiten.
→Implementieren Sie ein Expand-and-Contract-Muster (oder parallele Änderung). Stellen Sie zuerst die additiven, abwärtskompatiblen Datenbankschemaänderungen bereit. Stellen Sie zweitens die neue Anwendungsversion bereit, die das neue Schema verwendet. Sowohl alte als auch neue Anwendungsversionen können mit der aktualisierten Datenbank koexistieren.
Warum: Dieses Muster entkoppelt die Datenbank- und Anwendungsbereitstellungen und stellt sicher, dass der Datenbankstatus immer mit sowohl alten als auch neuen Anwendungsversionen kompatibel ist, wodurch Zero-Downtime-Rollouts ermöglicht werden.
Führen Sie eine neue Funktion schrittweise für bestimmte Benutzersegmente ein und messen Sie die Auswirkungen auf Geschäftsmetriken (z.B. Konversionsrate) mittels A/B-Tests.
→Verwenden Sie Amazon CloudWatch Evidently. Erstellen Sie ein Feature mit mehreren Variationen, einen Launch zur Steuerung des Rollout-Prozentsatzes und ein Experiment zur Messung der statistischen Auswirkungen auf definierte Metriken.
Warum: Evidently ist ein speziell entwickelter Dienst für Feature-Flagging und A/B-Experimente, der nicht nur den Rollout-Mechanismus, sondern auch die statistische Analyse-Engine zur Messung der Auswirkungen bietet.