Mein Event-Hook für den Bereitstellungs-Lifecycle in AWS CodeDeploy ruft ein Windows PowerShell-cmdlet auf, das Fehler zurückgibt. Das cmdlet gibt jedoch den Exit-Code 0 (erfolgreich) zurück, und die Bereitstellung meldet einen Erfolg. Wie stelle ich sicher, dass sowohl Fehler beim Beenden als auch beim Nicht-beenden des PowerShell-cmdlets dazu führen, dass meine Lifecycle-Event-Hooks in CodeDeploy fehlschlagen?
Kurzbeschreibung
Standardmäßig werden PowerShell-cmdlets bis zum Ende ausgeführt und geben einen Exit-Code von 0 zurück, es sei denn, es tritt ein nicht behebbarer oder abschließender Fehler auf. CodeDeploy meldet keinen Fehler im Lifecycle-Event-Hook, es sei denn, das zugehörige Skript gibt einen anderen Exit-Code als 0 zurück.
Damit Lifecycle-Event-Hooks fehlschlagen, wenn nicht-beendete Fehler auftreten, ändern Sie das Verhalten des Skripts. Um das Verhalten des Skripts zu ändern, konfigurieren Sie die Variable $ErrorActionPreference im cmdlet auf „Stop“. PowerShell stoppt dann die Ausführung des cmdlets und gibt den Exit-Code 1 für Fehler beim Beenden und Nicht-beenden zurück.
Weitere Informationen finden Sie im Scripting-Blog unter Nicht beendende Fehler in PowerShell im Microsoft verstehen.
Behebung
Wichtig: Die folgende Methode funktioniert mit Windows PowerShell 5.1 und höher.
1. Überprüfen Sie, welche Windows PowerShell-Version Sie verwenden, indem Sie den folgenden $psVersionTable-Befehl ausführen:
$PSVersionTable
2. Wenn Ihre Version von Windows PowerShell älter als Version 5.1 ist, aktualisieren Sie Ihre PowerShell-Version. Genauere Anweisungen finden Sie unter Windows PowerShell 5.1 herunterladen und installieren auf der Microsoft Docs-Website.
3. Fügen Sie den folgenden Code am Anfang Ihres PowerShell-cmdlets ein:
$ErrorActionPreference = 'Stop'
PowerShell stoppt jetzt das cmdlet und gibt den Exit-Code 1 für Fehler beim Beenden und Nicht-beenden zurück.
Verwandte Informationen
Informationen zu Einstellungsvariablen (Microsoft Docs-Website)
AppSpec-Abschnitt „Hooks“
Überwachung von Bereitstellungen mit Amazon CloudWatch-Tools
Anzeigen von AWS CodeDeploy-Protokolle in der Amazon CloudWatch-Konsole