Durchführen sicherer Canary-Updates - Amazon CloudWatch

Durchführen sicherer Canary-Updates

Mit den sicheren Canary-Updates von CloudWatch Synthetics können Sie die Updates auf Ihren vorhandenen Canarys testen, bevor Sie die Änderungen übernehmen. Mit diesem Feature können Sie die Kompatibilität von Canary mit neuen Laufzeiten und anderen Konfigurationsänderungen wie Code- oder Speicheränderungen überprüfen. Auf diese Weise können potenzielle Unterbrechungen der Überwachung, die durch fehlerhafte Updates verursacht werden, minimiert werden.

Indem Sie Canary-Safe-Updates für Updates von Laufzeitversionen, Konfigurationsänderungen und Codeskriptänderungen verwenden, können Sie Risiken minimieren, eine unterbrechungsfreie Überwachung aufrechterhalten, die Änderungen vor der Übernahme überprüfen, aktualisieren und Ausfallzeiten reduzieren.

Voraussetzungen

Stellen Sie sicher, dass die Voraussetzungen erfüllt sind.

  • AWS-Konto mit CloudWatch-Synthetics-Berechtigungen

  • Bestehender Canary auf den unterstützten Laufzeitversionen (Informationen zu kompatiblen Laufzeiten unter Einschränkungen)

  • Schließe kompatible Laufzeiten ein, wenn du einen Probelauf durchführst (Informationen zu kompatiblen Laufzeiten findest du unter Einschränkungen)

Bewährte Methoden

Im Folgenden finden Sie einige bewährte Methoden für die Durchführung eines Canarys.

  • Führen Sie einen Probelauf aus, um ein Laufzeit-Update zu validieren

  • Führen Sie Probeläufe durch, bevor Sie Produktions-Updates auf Canary durchführen

  • Überprüfen Sie Canary-Protokolle und Artefakte nach einem Testlauf

  • Verwenden Sie Testläufe, um Abhängigkeiten und Bibliothekskompatibilität zu überprüfen

Testen von Canary mit Testlauf

Sie können das Canary-Update mit den folgenden Optionen testen:

Verwenden des Bearbeiten-Workflows der AWS-Managementkonsole

  1. Gehen Sie zur CloudWatch-Synthetics-Konsole.

  2. Wählen Sie den Canary aus, den Sie aktualisieren möchten.

  3. Wählen Sie im Dropdown-Menü Aktionen die Option Bearbeiten aus.

    Aktualisieren Sie den Canary mit den Änderungen, die Sie testen möchten. Zum Beispiel die Änderung der Laufzeitversion oder die Bearbeitung des Codes des Skripts.

  4. Wählen Sie unter Canary-Skript die Option Testlauf starten, um den Test sofort auszuführen und die Ergebnisse anzusehen, oder wählen Sie unten auf der Seite die Option Validieren und später speichern, um den Test zu starten und die Ergebnisse später auf Ihrer Canary-Detailseite anzusehen.

  5. Wenn der Testlauf erfolgreich war, wählen Sie Senden aus, um Ihre Canary-Updates zu übernehmen.

Verwenden der AWS-Managementkonsole zur Aktualisierung von Canarys in einem Batch

  1. Gehen Sie zur CloudWatch-Synthetics-Konsole.

  2. Wählen Sie die Listenseite Synthetics aus.

  3. Wählen Sie bis zu fünf Canarys aus, für die Sie die Laufzeit aktualisieren möchten.

  4. Wählen Sie im Dropdown-Menü Aktionen die Option Laufzeit aktualisieren aus.

  5. Wählen Sie Testlauf für neue Laufzeit starten, um den Testlauf zu starten und Ihre Änderungen vor einem Update zu testen.

  6. Auf der Synthetics-Listenseite sehen Sie neben der Laufzeitversion für den Canary Text, der den Fortschritt des Testlaufs anzeigt (dieser wird nur bei Testläufen angezeigt, die ein Laufzeit-Update beinhalten).

    Sobald der Testlauf erfolgreich war, wird der Text Update initiieren angezeigt.

  7. Wählen Sie Update initiieren, um das Laufzeit-Update zu übernehmen.

  8. Wenn der Testlauf fehlschlägt, wird der Text Aktualisieren-Testlauf fehlgeschlagen angezeigt. Wählen Sie den Text aus, um den Debug-Link zur Canary-Detailseite anzuzeigen.

Verwenden der AWS-CLI oder -SDK

Die API startet den Testlauf für den angegebenen Canary-Namen MyCanary und aktualisiert die Laufzeit-Version auf syn-nodejs-puppeteer-10.0.

aws synthetics start-canary-dry-run \ --name MyCanary \ --runtime-version syn-nodejs-puppeteer-10.0 // Or if you wanted to update other configurations: aws synthetics start-canary-dry-run \ --name MyCanary \ --execution-role-arn arn:aws:iam::123456789012:role/NewRole

Die API gibt die DryRunId im DryRunConfigOutput zurück.

Rufen Sie GetCanary mit der angegebenen DryRunId auf, um die Testlaufkonfigurationen des Canary sowie ein zusätzliches Feld DryRunConfig zu erhalten, das den Status des Testlaufs enthält, der als LastDryRunExecutionStatus aufgeführt ist.

aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

Nutzen Sie für weitere Informationen GetCanaryRuns mit der bereitgestellten DryRunId, um die Ausführung und weitere Informationen abzurufen.

aws synthetics get-canary-runs \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

Nach einem erfolgreichen Testlauf können Sie dann über UpdateCanary mit der bereitgestellten DryRunId Ihre Änderungen übernehmen.

aws synthetics update-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

Wenn es aus irgendeinem Grund fehlschlägt (das Ergebnis von GetCanaryRuns enthält die Details), hat das Ergebnis von GetCanaryRuns einen Artefaktspeicherort, der Protokolle zum Debuggen enthält. Wenn keine Protokolle vorhanden sind, konnte der Testlauf nicht erstellt werden. Sie können dies über GetCanary überprüfen.

aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

State, StateReason und StateReasonCode zeigen den Status des Testlaufs an.

Verwenden von CloudFormation

Geben Sie in Ihrer Vorlage für einen Synthetics Canary das Feld DryRunAndUpdate an, das den booleschen Wert true oder false akzeptiert.

wenn der Wert true ist, führt jedes Update einen Testlauf durch, um die Änderungen zu validieren, bevor der Canary automatisch aktualisiert wird. Wenn der Testlauf fehlschlägt, führt der Canary kein Update durch und die Bereitstellung sowie die CloudFormation-Bereitstellung schlägt mit einem triftigen Grund fehl. Um dieses Problem zu beheben, verwenden Sie die AWS-Synthetics-Konsole. Falls Sie eine API verwenden, rufen Sie die ArtifactS3Location über GetCanaryRuns ab und laden Sie die *-log.txt-Dateien herunter, um die Canary-Protokoll-Ausführungen auf Fehler zu überprüfen. Ändern Sie nach der Validierung die CloudFormation-Vorlage und versuchen Sie es erneut mit der Bereitstellung oder verwenden Sie die obige API zur Validierung.

Wenn der Wert false ist, führt Synthetics keinen Testlauf durch, um die Änderungen zu validieren, sondern überträgt Ihre Updates direkt.

Weitere Informationen zur Fehlerbehebung eines fehlgeschlagenen Canary finden Sie unter Problembehandlung bei fehlgeschlagenem Canary.

Eine Beispielvorlage.

SyntheticsCanary: Type: 'AWS::Synthetics::Canary' Properties: Name: MyCanary RuntimeVersion: syn-nodejs-puppeteer-10.0 Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600} ... DryRunAndUpdate: true

Einschränkungen

  • Unterstützt Laufzeit-Versionen – syn-nodejs-puppeteer-10.0+, syn-nodejs-playwright-2.0+ und syn-python-Selenium-5.1+

  • Sie können jeweils nur einen Testlauf pro Canary ausführen

  • Wenn ein Testlauf fehlschlägt, können Sie den Canary nicht aktualisieren

  • Bei einem Testlauf können keine Änderungen im Feld Zeitplan getestet werden

Anmerkung

Wenn Sie einen Testlauf mit Codeänderungen für einen Playwright-Canary starten und den Canary aktualisieren möchten, ohne die zugehörige DryRunId bereitzustellen, müssen Sie die Codeparameter explizit angeben.