AWS CloudFormation-Fehlerbehebung - AWS CloudFormation

AWS CloudFormation-Fehlerbehebung

Wenn Sie AWS CloudFormation verwenden, treten möglicherweise Probleme beim Erstellen, Aktualisieren und Löschen von AWS CloudFormation-Stacks auf. Die folgenden Abschnitte können zum Beheben von häufig auftretenden Problemen helfen.

Allgemeine Fragen zu AWS CloudFormation finden Sie in der AWS CloudFormation – Häufig gestellte Fragen. Sie können auch in den AWS CloudFormation-Foren nach Antworten suchen und Fragen posten.

Anleitung zur Fehlerbehebung

Wenn es AWS CloudFormation nicht schafft, Ihren Stack zu erstellen, zu aktualisieren oder zu löschen, können Sie Fehlermeldungen oder Protokolle anzeigen, in denen Sie mehr über das Problem erfahren. Die folgenden Aufgaben beschreiben allgemeine Methoden zur Fehlerbehebung von AWS CloudFormation. Weitere Informationen zu bestimmten Fehlern und Lösungen finden Sie im Abschnitt Behebung von Fehlern.

  • Verwenden Sie die AWS CloudFormation-Konsole , um den Status Ihres Stacks anzuzeigen. In der Konsole können Sie eine Liste von Stack-Ereignissen anzeigen, während Ihr Stack erstellt, aktualisiert oder gelöscht wird. Finden Sie das Fehlerereignis in dieser Liste und sehen dann den Statusgrund für dieses Ereignis an. Der Statusgrund könnte eine Fehlermeldung von AWS CloudFormation oder von einem bestimmten Dienst enthalten, der Ihnen helfen kann, Ihr Problem zu beheben. Weitere Informationen zum Anzeigen von Stack-Ereignissen finden Sie unter Anzeigen Ihrer AWS CloudFormation-Stack-Daten und Ressourcen auf der AWS Management Console.

  • Für Amazon EC2-Probleme sehen Sie sich die "cloud-init" und cfn-Protokolle an. Diese Protokolle werden auf der Amazon EC2 Instance im Verzeichnis /var/log/ veröffentlicht. Diese Protokolle erfassen Prozesse und Befehlsausgaben während AWS CloudFormation Ihre Instance einrichtet. Unter Windows sehen Sie sich die EC2Configure-Service- und cfn-Protokolle unter %ProgramFiles%\Amazon\EC2ConfigService und C:\cfn\log an.

    Sie können auch Ihre AWS CloudFormation-Vorlage konfigurieren, sodass Protokolle im Amazon CloudWatch veröffentlicht werden, welches Protokolle in der AWS Management Console anzeigt, damit Sie sich nicht mehr mit Ihrer Amazon EC2-Instance verbinden müssen. Weitere Informationen finden Sie unter Anzeigen von CloudFormation-Protokolle in der Konsole im Application Management-Blog.

Behebung von Fehlern

Wenn Sie auf die folgenden Fehler mit Ihrem AWS CloudFormation-Stack gestoßen sind, können Sie die folgenden Lösungen verwenden, die Ihnen helfen, die Quelle für die Probleme zu finden und zu beheben.

Stack-Fehler löschen

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  • Einige Ressourcen müssen leer sein, bevor sie gelöscht werden können. Beispiel: Sie müssen alle Objekte in einem Amazon S3-Bucket löschen oder alle Instances in einer Amazon EC2-Sicherheitsgruppe entfernen, bevor Sie den Bucket oder die Sicherheitsgruppe löschen können.

  • Stellen Sie sicher, dass Sie die nötigen IAM-Berechtigungen zum Löschen von Ressourcen im Stack besitzen. Zusätzlich zu den AWS CloudFormation-Berechtigungen benötigen Sie die Berechtigung für die Verwendung der zugrunde liegenden Services, wie z. B. Amazon S3 oder Amazon EC2.

  • Wenn sich Stacks im DELETE_FAILED Status befinden, weil AWS CloudFormation keine Ressource löschen konnte, führen Sie den Löschvorgang mit dem RetainResources Parameter erneut aus und geben Sie die Ressource an, die AWS CloudFormation nicht löschen kann. AWS CloudFormation löscht den Stack ohne Löschen der beibehaltenen Ressource. Die Beibehaltung von Ressourcen ist nützlich, wenn eine Ressource nicht gelöscht werden kann, z. B. ein S3-Bucket mit Objekten, die Sie behalten möchten, aber dennoch den Stack löschen möchten.

    Nach dem Löschen des Stacks können Sie beibehaltene Ressourcen manuell löschen, indem Sie deren zugehörigen AWS-Service verwenden.

  • Sie können keine Stacks löschen, deren Beendigungsschutz aktiviert ist. Wenn Sie versuchen, einen Stack mit aktiviertem Beendigungsschutz zu löschen, schlägt das Löschen fehl und der Stack – einschließlich seines Status – bleibt unverändert. Deaktivieren Sie den Beendigungsschutz für den Stack und wiederholen Sie dann das Löschen.

    Dies umfasst verschachtelte Stacks, für deren Root-Stacks der Beendigungsschutz aktiviert ist. Deaktivieren Sie den Beendigungsschutz des Root-Stacks und wiederholen Sie dann das Löschen. Es wird dringend empfohlen, verschachtelte Stacks nicht direkt, sondern nur im Rahmen des Löschens des Root-Stacks und aller zugehörigen Ressourcen zu löschen.

    Weitere Informationen finden Sie unter Schützen eines Stacks vor dem Löschen.

  • Bei allen anderen Fragen, wenn Sie AWS Premium Support angemeldet haben, können Sie einen Fall für den Technischen Support erstellen. Siehe Den Support kontaktieren.

Abhängigkeitsfehler

Um einen Abhängigkeitsfehler zu beheben, fügen Sie ein DependsOn Attribut zu den Ressourcen hinzu, die von anderen Ressourcen in Ihrer Vorlage abhängen. In einigen Fällen müssen Sie explizit Abhängigkeiten deklarieren, sodass AWS CloudFormation Ressourcen in der richtigen Reihenfolge erstellen oder löschen kann. Wenn Sie beispielsweise eine Elastic IP-Adresse und eine VPC mit einem Internet-Gateway im selben Stack erstellen, muss die Elastic IP-Adresse vom Anhang des Internet-Gateways abhängen. Weitere Informationen finden Sie unter DependsOn-Attribut.

Fehler bei der Analyse der Parameter bei der Übergabe einer Liste

Wenn Sie AWS Command Line Interface oder AWS CloudFormation für die Übergabe in eine Liste verwenden, fügen Sie das Escapezeichen (\) vor jedem Komma hinzu. Das folgende Beispiel zeigt, wie Sie einen Eingabeparameter angeben, wenn Sie die Befehlszeilen-Schnittstelle (CLI) verwenden.

ParameterKey=CIDR,ParameterValue='10.10.0.0/16\,10.10.0.0/24\,10.10.1.0/24'

IAM Unzureichende Berechtigungen

Wenn Sie mit einem AWS CloudFormation-Stack arbeiten, brauchen Sie nicht nur die Berechtigungen, um AWS CloudFormation zu verwenden, sondern Sie müssen auch die Berechtigung haben, die zugrunde liegenden Dienste zu verwenden, die in Ihrer Vorlage beschrieben sind. Wenn Sie beispielsweise einen Amazon S3-Bucket erstellen oder eine Amazon EC2-Instance starten, brauchen Sie Berechtigungen für Amazon S3 oder Amazon EC2. Überprüfen Sie die IAM-Richtlinie und stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, bevor Sie mit AWS CloudFormation-Stacks arbeiten. Weitere Informationen finden Sie unter Zugriffssteuerung mit AWS Identity and Access Management.

Ungültiger Wert oder nicht unterstützte Ressourceneigenschaft

Beim Erstellen oder Aktualisieren eines AWS CloudFormation-Stacks, kann Ihr Stack scheitern aufgrund ungültiger Eingabeparameter, aufgrund nicht unterstützter Namen einer Ressource-Eigenschaft oder nicht unterstützten Eigenschaftswerten von Ressourcen. Stellen Sie für Eingabe-Parameter sicher, dass die Ressource vorhanden ist. Wenn Sie beispielsweise ein Amazon EC2-Schlüsselpaar oder eine VPC-ID bestimmen, muss die Ressource im Konto und in der Region vorhanden sein, in der Sie den Stack erstellen oder aktualisieren. Sie können AWS-spezifische Parametertypen verwenden, um sicherzustellen, dass Sie gültige Werte verwenden.

Für die Namen und Werte von Ressourceneigenschaften aktualisieren Sie Ihre Vorlage, um gültige Namen und Werte zu verwenden. Eine Liste aller Ressourcen und ihren Eigenschaftsnamen finden Sie unter AWS Ressourcen- und Eigenschaftstypen – Referenz.

Limit überschritten

Vergewissern Sie sich, dass Sie nicht ein Ressourcen-Limit erreicht haben. Die Standardanzahl an Amazon EC2-Instances, die Sie starten können, ist beispielsweise 20. Wenn Sie versuchen, mehr Amazon EC2-Instances als Ihr Konto-Limit zu erstellen, wird die Instance-Erstellung fehlschlagen und Sie erhalten den Fehler Status=start_failed. Um die Standard-AWS-Limits nach Service anzuzeigen, siehe AWS-Service Limits im AWS General Reference.

AWS CloudFormation-Limits und optimierende Strategien finden Sie unter Limits für AWS CloudFormation.

Auch bei einer Aktualisierung, wenn eine Ressource ersetzt wird, löscht AWS CloudFormation die alte Ressource, bevor eine neue erstellt wird. Dieser Austausch könnte Ihr Konto über das Ressourcen-Limit setzen. Dies würde dazu führen, dass die Aktualisierung fehlschlägt. Sie können überschüssige Ressourcen löschen oder eine Limit-Erhöhung beantragen.

Verschachtelte Stacks stecken im UPDATE_COMPLETE_CLEANUP_IN_PROGRESS, UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS oder UPDATE_ROLLBACK_IN_PROGRESS fest.

Ein verschachtelter Stack konnte nicht zurückgesetzt werden. Aufgrund der potenziellen Ressource-Abhängigkeiten zwischen verschachtelten Stacks, beginnt AWS CloudFormation nicht mit dem Bereinigen verschachtelter Stack-Ressourcen, bis alle verschachtelten Stacks aktualisiert oder zurückgesetzt wurden. Wenn ein verschachtelter Stack nicht zurückgesetzt werden kann, storniert AWS CloudFormation alle Vorgänge, unabhängig vom Zustand, in dem sich die anderen verschachtelten Stacks befinden. Ein verschachtelter Stack, der die Aktualisierung oder den Rollback abgeschlossen hat, aber kein Signal von AWS CloudFormation erhalten hat, mit dem Bereinigen zu starten, weil ein anderer verschachtelter Stack nicht zurückgesetzt werden konnte, befindet sich im Status UPDATE_COMPLETE_CLEANUP_IN_PROGRESS oder UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS. Ein verschachtelter Stack, der nicht aktualisieren konnte, aber kein Signal erhalten hat, um den Rollback zu starten, befindet sich in einem UPDATE_ROLLBACK_IN_PROGRESS Status.

Das Rollback eines verschachtelten Stacks kann aufgrund von Änderungen außerhalb von AWS CloudFormation fehlschlagen, wenn die Stack-Vorlage nicht genau den Status des Stacks wiedergibt. Ein verschachtelter Stack kann auch fehlschlagen, wenn eine Auto Scaling-Gruppe in einem verschachtelten Stack keine ausreichende Timeout-Zeit für das Ressourcen-Signal hatte, als die Gruppe erstellt oder aktualisiert wurde.

Um den Stack zu reparieren, wenden Sie sich bitte an den AWS Kunden-Support.

Keine Aktualisierungen zur Ausführung vorhanden

Um einen AWS CloudFormation-Stack zu aktualisieren, müssen Sie Vorlagen- oder Parameter-Änderungen an AWS CloudFormation senden. AWS CloudFormation wird jedoch keine Vorlagenänderungen als Update erkennen, z. B. Änderungen an einer Löschrichtlinie, Aktualisierungsrichtlinie, Zustandsdeklaration oder Ausgabedeklaration. Wenn Sie Änderungen vornehmen müssen, ohne etwas anderes zu ändern, können Sie ein Metadaten Attribut für alle Ressourcen hinzufügen oder ändern.

Weitere Informationen zu Vorlagenänderungen während eines Updates finden Sie unter Ändern einer Stack-Vorlage.

Ressource konnte während eines Erstellens, Aktualisierens oder Löschens des Stack-Vorgangs nicht stabilisiert werden.

Eine Ressource hat nicht reagiert, da die Operation die AWS CloudFormation-Timeout-Zeit überschritten hat oder ein AWS Service unterbrochen wurde. Für Service-Unterbrechungen, prüfen Sie , ob der relevante AWS Service ausgeführt wird, und wiederholen Sie den Stack-Vorgang.

Wenn die AWS-Services erfolgreich ausgeführt wurden, überprüfen Sie, ob Ihr Stack eine der folgenden Ressourcen enthält:

  • AWS::AutoScaling::AutoScalingGroup zum Erstellen, Aktualisieren und Löschen von Vorgängen

  • AWS::CertificateManager::Certificate zum Erstellen von Vorgängen

  • AWS::CloudFormation::Stack zum Erstellen, Aktualisieren und Löschen von Vorgängen

  • AWS::ElasticSearch::Domain zum Aktualisieren von Vorgängen

  • AWS::RDS::DBCluster zum Erstellen und Aktualisieren von Vorgängen

  • AWS::RDS::DBInstance zum Erstellen, Aktualisieren und Löschen von Vorgängen

  • AWS::Redshift::Cluster zum Aktualisieren von Vorgängen

Vorgänge für diese Ressourcen können länger dauern als die Standard-Timeout-Zeit. Die Timeout-Zeit hängt von der Ressource und den Anmeldeinformationen ab, die Sie tatsächlich nutzen. Geben Sie eine Service-Rolle, an, wenn Sie den Stack-Vorgang ausführen, um die Timeout-Zeit zu verlängern. Wenn Sie bereits eine Service-Rolle verwenden oder Ihr Stack eine Ressource enthält, die nicht aufgeführt ist, wenden Sie sich bitte an den AWS Kunden-Support.

Wenn sich Ihr Stack im UPDATE_ROLLBACK_FAILED Status befindet, sehen Sie nach unter Update-Rollback fehlgeschlagen.

Sicherheitsgruppe ist in VPC nicht vorhanden.

Überprüfen Sie, ob die Sicherheitsgruppe in der VPC vorhanden ist, die Sie angegeben haben. Wenn die Sicherheitsgruppe vorhanden ist, stellen Sie sicher, dass Sie die ID der Sicherheitsgruppe angeben und nicht den Namen. Wenn beispielsweise die AWS::EC2::SecurityGroupIngress Ressource einen SourceSecurityGroupName und SourceSecurityGroupId Eigenschaften hat. Für VPC-Sicherheitsgruppen müssen Sie die SourceSecurityGroupId Eigenschaft verwenden und die Sicherheitsgruppen-ID angeben.

Rollback-Aktualisierung fehlgeschlagen

Eine abhängige Ressource kann nicht in seinen ursprünglichen Zustand zurückversetzt werden, wodurch das Rollback fehlschlägt (UPDATE_ROLLBACK_FAILED Status). Beispielsweise kann es einen Stack geben, der ein Rollback auf eine alte Datenbank-Instance ausführt, die außerhalb von AWS CloudFormation gelöscht wurde. Da AWS CloudFormation nicht weiß, dass die Datenbank gelöscht wurde, wird davon ausgegangen, dass die Datenbank-Instance noch vorhanden ist und versucht, sie wiederherstellen, wodurch das Rollback der Aktualisierung fehlschlägt.

Je nach der Ursache des Fehlers können Sie ihn manuell beheben und das Rollback fortfahren. Wenn Sie mit dem Rollback fortfahren, können Sie Ihren Stack wieder in den Arbeitszustand bringen (den UPDATE_ROLLBACK_COMPLETE Status) und dann erneut versuchen, den Stack zu aktualisieren. Die folgende Liste beschreibt Lösungen für allgemeine Fehler, die fehlerhafte Rollback-Aktualisierungen verursachen:

  • Fehler beim Abrufen der erforderlichen Anzahl von Signalen

    Verwenden Sie den Signal-Ressource Befehl, um die erforderliche Anzahl erfolgreicher Signale manuell zur Ressource zu senden, die auf sie wartet, und setzen Sie dann das Rollback der Aktualisierung fort. Zum Beispiel könnten Instances in einer Auto Scaling-Gruppe während eines Aktualisierungs-Rollbacks scheitern, Erfolg innerhalb der Timeout-Dauer zu signalisieren. Erfolgssignale zur Auto Scaling-Gruppe manuell senden. Wenn Sie das Aktualisierungs-Rollback fortsetzen, sieht AWS CloudFormation Ihre Signale und fährt mit dem Rollback fort.

  • Änderungen an einer Ressource außerhalb von AWS CloudFormation

    Synchronisieren Sie Ressourcen manuell, damit sie mit der ursprüngliche Stack-Vorlage übereinstimmen und setzen dann mit dem Rollback der Aktualisierung fort. Wenn Sie beispielsweise manuell eine Ressource gelöscht haben, die AWS CloudFormation zurückzusetzen versucht, müssen Sie die Ressource manuell mit demselben Namen und denselben Eigenschaften wie im ursprünglichen Stack erstellen.

  • Unzureichende Berechtigungen

    Stellen Sie sicher, dass Sie über ausreichende IAM-Berechtigungen zum Ändern der Ressourcen besitzen, und setzen dann das Aktualisierungs-Rollback fort. Zum Beispiel könnte Ihnen Ihre IAM-Richtlinie erlauben, einen S3-Bucket zu erstellen, aber nicht zu ändern. Fügen Sie die Änderungsaktionen Ihrer Richtlinie hinzu.

  • Ungültiger Sicherheits-Token

    AWS CloudFormation erfordert einen neuen Satz von Anmeldeinformationen. Es ist keine Änderung erforderlich. Mit dem Rollback der Aktualisierung fortsetzen, was die Anmeldeinformationen aktualisiert.

  • Beschränkungsfehler

    Löschen Sie Ressourcen, die Sie nicht benötigen oder fordern sie eine Limit-Erhöhung an, und setzen dann mit dem Rollback der Aktualisierung fort. Wenn zum Beispiel Ihr Kontolimit für die Anzahl der EC2-Instanzen 20 ist und der Aktualisierungs-Rollback diese Grenze überschreitet, wird es fehlschlagen.

  • Ressource hat sich nicht stabilisiert

    Eine Ressource hat nicht reagiert, da der Vorgang die AWS CloudFormation-Timeout-Zeit überschritten haben könnte oder ein AWS Service unterbrochen worden sein könnte. Es ist keine Änderung erforderlich. Nachdem der Vorgang abgeschlossen ist, oder die AWS-Service-Ressource wieder betriebsbereit ist, fahren Sie mit dem Rollback der Aktualisierung fort.

Um das Rollback einer Aktualisierung fortzusetzen, können Sie die AWS CloudFormation-Konsole oder die AWS-Befehlszeilenschnittstelle (Command Line Interface, CLI) verwenden. Weitere Informationen finden Sie unter Rollback einer Aktualisierung fortsetzen.

Wenn keine dieser Lösungen funktioniert, können Sie die Ressourcen überspringen, die AWS CloudFormation nicht erfolgreich zurücksetzen kann. Weitere Informationen finden Sie im Parameter ResourcesToSkip für die Aktion ContinueUpdateRollback in AWS CloudFormation API Reference. AWS CloudFormation setzt den Status der angegebenen Ressourcen auf UPDATE_COMPLETE und setzt den Stapel weiter zurück. Nachdem der Rollback-Vorgang abgeschlossen ist, entspricht der Status der übersprungenen Ressourcen nicht dem Status der Ressourcen in der Stack-Vorlage. Bevor Sie eine weitere Stack-Aktualisierung durchführen, müssen Sie die Ressourcen ändern oder den Stack aktualisieren, sodass ihr Status konsistent ist. Andernfalls schlagen nachfolgende Aktualisierungen fehl, und der Stack lässt sich nicht mehr wiederherstellen.

Warte-Bedingung erhielt nicht die erforderliche Anzahl an Signalen von einer Amazon EC2-Instance

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  • Stellen Sie sicher, dass das AMI das Sie verwenden die AWS CloudFormation-Hilfeskripts installiert hat. Wenn das AMI die Hilfeskripts nicht hat, können Sie diese auch auf Ihre Instance runterladen. Weitere Informationen finden Sie unter Referenz für CloudFormation-Hilfsskripts.

  • Überprüfen Sie, ob der cfn-signal Befehl erfolgreich in der Instance ausgeführt wurde. Sie können z. B. Protokolle wie /var/log/cloud-init.log oder /var/log/cfn-init.log anzeigen, die Ihnen beim Debuggen des Instance-Starts helfen. Sie können die Protokolle abrufen, indem Sie sich bei der Instance einloggen, aber Sie müssen Rollback auf die jährliche Ausfallrate (AFR) deaktivieren, sonst löscht AWS CloudFormation die Instance, nachdem die Erstellung des Stacks fehlgeschlagen ist. Sie können auch die Protokolle auf veröffentlichenAmazon CloudWatch. Unter Windows können Sie cfn-Protokolle unter C:\cfn\log und EC2Config-Service-Protokolle unter %ProgramFiles%\Amazon\EC2ConfigService anzeigen.

  • Überprüfen Sie, ob die Instance eine Verbindung zum Internet hat. Wenn sich die Instance in einer VPC befindet, sollte die Instance in der Lage sein, eine Verbindung mit dem Internet über ein NAT-Gerät herzustellen, wenn es in einem privaten Subnetz ist, oder über ein Internet-Gateway, wenn es sich in einem öffentlichen Subnetz befindet. Versuchen Sie zum Testen der Instance-Internetverbindung auf eine öffentliche Webseite zuzugreifen, z. B. http://aws.amazon.com. Zum Beispiel können Sie den folgenden Befehl auf der Instance ausführen. Es sollte einen HTTP 200 Statuscode zurückgeben.

    curl -I https://aws.amazon.com

    Weitere Informationen zum Konfigurieren eines NAT-Geräts finden Sie unter NAT im Amazon VPC Benutzerhandbuch.

Den Support kontaktieren

Wenn Sie AWS Premium Support haben, können Sie einen technischen Support-Fall unter https://console.aws.amazon.com/support/home#/ eröffnen. Sammeln Sie die folgenden Informationen, bevor Sie sich an den Support wenden:

  • Die ID des Stacks. Sie finden die Stack-ID auf der Registerkarte Overview der -AWS CloudFormationKonsole. Weitere Informationen finden Sie unter Anzeigen Ihrer AWS CloudFormation-Stack-Daten und Ressourcen auf der AWS Management Console.

    Wichtig

    Nehmen Sie keine Änderungen am Stack außerhalb von AWS CloudFormation vor. Änderungen am Stack außerhalb von AWS CloudFormation kann den Stack in einen nicht wiederherstellbaren Status versetzen.

  • Jede Stack-Fehlermeldungen. Weitere Informationen zum Anzeigen von Stack-Fehlermeldungen finden Sie im Anleitung zur Fehlerbehebung Abschnitt.

  • Sammeln Sie für Amazon EC2-Probleme die "cloud-init" und cfn-Protokolle. Diese Protokolle werden auf der Amazon EC2 Instance im Verzeichnis /var/log/ veröffentlicht. Diese Protokolle erfassen Prozesse und Befehlsausgaben während Ihre Instance eingerichtet wird. Unter Windows rufen Sie die EC2Configure-Service- und cfn-Protokolle unter %ProgramFiles%\Amazon\EC2ConfigService und C:\cfn\log ab.

Sie können auch in den AWS CloudFormation-Foren nach Antworten suchen und Fragen posten.