Wie behebe ich den Fehler „Interner Fehler“, wenn ich versuche, einen Stack in CloudFormation zu erstellen oder zu aktualisieren?

Lesedauer: 5 Minute
0

Ich möchte den Fehler „Interner Fehler“ in AWS CloudFormation beheben.

Kurzbeschreibung

Wenn Sie Ihren CloudFormation-Stack erstellen oder aktualisieren, kann es sein, dass Sie die Fehlermeldung „Interner Fehler“ erhalten, wenn ein Vorgang auf einer Ressource fehlschlägt. Sie können diesen Fehler auch erhalten, wenn Ihr Stack nicht bereitgestellt werden kann.

Ein Vorgang auf einer Ressource kann in den folgenden Szenarien fehlschlagen:

  • Ihre Ressourcen oder Eigenschaften sind auf falsche Werte gesetzt. Um dieses Problem zu beheben, führen Sie die Schritte im Abschnitt Teststack bereitstellen, um die falschen Werte für Ihre Ressourcen oder Eigenschaften zu finden aus.
  • Ein interner Workflow ist fehlgeschlagen. Um dieses Problem mithilfe von AWS CloudTrail zu lösen, führen Sie die Schritte im Abschnitt Nach den fehlgeschlagenen API-Vorgängen in Ihren CloudTrail-Ereignisprotokollen suchen aus.

Schließlich kann die Bereitstellung Ihres Stacks fehlschlagen, wenn Sie falsche Werte an den Abschnitt Outputs Ihrer CloudFormation-Vorlage übergeben. Um diesen Fehler zu beheben, führen Sie die Schritte im Abschnitt Die Werte in den Ausgängen Ihrer CloudFormation-Vorlage überprüfen aus.

Hinweis: Die folgenden Schritte beziehen sich nur auf Fehler „Interner Fehler“, die Sie erhalten, wenn Sie versuchen, einen Stack in CloudFormation zu erstellen oder zu aktualisieren.

Behebung

Stellen Sie einen Teststack bereit, um die falschen Werte für Ihre Ressourcen oder Eigenschaften zu finden

Um die falschen Werte für Ihre Ressourceneigenschaften oder Attribute zu finden, stellen Sie einen Teststack mit einer CloudFormation-Vorlage bereit, die nur die ausgefallene Ressource enthält.

Wenn Ihr Teststack erfolgreich bereitgestellt wird, folgen Sie den Schritten im Abschnitt Fehlgeschlagene API-Vorgänge in Ihren CloudTrail-Ereignisprotokollen finden.

Wenn Ihre Teststackbereitstellung fehlschlägt, entfernen Sie weiterhin nicht benötigte Eigenschaften und Attribute aus dem Teststack, bis Sie die falschen Werte gefunden haben.

Im folgenden Beispielszenario erhalten Sie die Fehlermeldung „Interner Fehler“, wenn CloudFormation versucht, eine AWS::Config::ConformancePack-Ressource mit AWS Config zu erstellen. Sie erhalten eine Fehlermeldung, weil die DeliveryS3Bucket-Eigenschaft eine falsche Syntax verwendet. Die DeliveryS3Bucket-Eigenschaft akzeptiert nur einen Bucket-Namen als Wert (zum Beispiel: bucketname). Ein Dateipfad, der den Bucket-Namen enthält, ist kein akzeptabler Wert (zum Beispiel: s3://bucketname).

AWSTemplateFormatVersion: 2010-09-09
Resources:
  CloudFormationCanaryPack:
    Type: AWS::Config::ConformancePack
    Properties:
      ConformancePackName: ConformancePackName
      DeliveryS3Bucket: s3://bucketname            # Incorrect value for DeliveryS3Bucket
      TemplateS3Uri: s3://bucketname/prefix

Fehlgeschlagene API-Vorgänge in Ihren CloudTrail-Ereignisprotokollen finden

1.Öffnen Sie die CloudTrail-Konsole.

2.Wählen Sie im Navigationsbereich die Option Ereignisverlauf aus.

  1. Geben Sie für Zeitraum einen Zeitraum ein, um den fehlgeschlagenen API-Aufruf zu isolieren, und wählen Sie dann Anwenden aus.

Tipp: Geben Sie als Startzeit die Uhrzeit ein, zu der die Ressource in Ihrem CloudFormation-Stack den Status CREATE\ _IN\ _PROGRESS oder UPDATE\ _IN\ _PROGRESS erreicht hat. Geben Sie für die Endzeit die Uhrzeit ein, zu der der API-Aufruf fehlgeschlagen ist.

  1. Verwenden Sie Attributfilter, um über die Standardanzeige von Ereignissen im Ereignisverlauf hinaus zu suchen.

Hinweis: Standardmäßig verwendet der Ereignisverlauf einen schreibgeschützten Filter, der auf falsch gesetzt ist. Das Ergebnis des schreibgeschützten Filters zeigt nur Schreibereignisse für API-Aktivitäten und schließt schreibgeschützte Ereignisse aus der Liste der angezeigten Ereignisse aus.

Sie können EventName verwenden, um nach dem Namen des zurückgegebenen Ereignisses zu filtern. Wenn Sie die API-Aktion kennen, die zum Erstellen oder Aktualisieren einer Ressource verwendet wird, können Sie einen EventName-Filter nur für bestimmte API-Aufrufe verwenden. Beispielsweise verwendet der CloudFormation-Stack die AWS Config-API-Aktion PutConformancePack wenn er eine AWS::Config::ConformancePack-Ressource erstellt. Das bedeutet, dass Sie nur nach der PutConformancePack-API filtern können. Sie können EventSource verwenden, um nach dem AWS-Service zu filtern, der die API-Anfrage gestellt hat. Das heißt, Sie können durch eine Liste von Ereignisquellen blättern und die entsprechende Ressource auswählen, die in Ihrer CloudFormation-Vorlage verwendet wird.

  1. Um die Hauptursache des Fehlers zu ermitteln, überprüfen Sie die Fehlermeldung für das zurückgegebene Ereignis.

Hinweis: Bei einigen API-Vorgangsfehlern müssen Sie Ihre ursprüngliche CloudFormation-Vorlage aktualisieren und anschließend eine Testbereitstellung durchführen, um zu bestätigen, dass der Fehler behoben ist.

Überprüfen Sie die Werte im Abschnitt „Outputs“ Ihrer CloudFormation-Vorlage

Vergewissern Sie sich in Ihrer CloudFormation-Vorlage, dass die Werte im Abschnitt Outputs keine Syntaxfehler enthalten. Entfernen Sie beispielsweise alle nachfolgenden Leerzeichen.

Wenn Sie Ressourcenattribute mit dynamischen Verweisen abrufen, müssen Sie sicherstellen, dass die Attribute während der Stack-Bereitstellung verfügbar sind. Gehen Sie wie folgt vor, um dies außerhalb von CloudFormation zu simulieren:

  1. Führen Sie einen API-Aufruf Create* oder Update* für den Ressourcentyp mit dem fehlgeschlagenen Attribut durch (zum Erstellen oder Ändern).

  2. Führen Sie einen Describe* API-Aufruf durch, um die aktuellen Attribute der Ressource während des Stack-Erstellungs- oder Aktualisierungsprozesses abzurufen.

Das folgende Beispielszenario zeigt einen internen Fehler, der von einem Stack zurückgegeben wird, wenn das Attribut ReplicationInstancePrivateIpAddresses der Ressource AWS::DMS::ReplicationInstance an Outputs übergeben wird.

Im folgenden Beispiel ist das private IP-Attribut der Instance erst verfügbar, nachdem die Ressource ReplicationInstance ihren Status auf verfügbar geändert hat. Wenn sich die Ressource ReplicationInstance zum Zeitpunkt der Verarbeitung der Ausgaben durch den Stack nicht im Status verfügbar befindet, kann CloudFormation das private IP-Attribut nicht abrufen. Dann schlägt die Bereitstellung fehl.

AWSTemplateFormatVersion: 2010-09-09
Resources:
  BasicReplicationInstance:
    Type: AWS::DMS::ReplicationInstance
    Properties:
      ReplicationInstanceClass: dms.t2.small
Outputs:
  DmsInstanceIP:
    Value: !GetAtt BasicReplicationInstance.ReplicationInstancePrivateIpAddresses

Verwandte Informationen

Problembehandlung bei AWS CloudFormation

Ereignisse mit dem CloudTrail-Ereignisverlauf anzeigen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren