Fehlersuche CloudFormation StackSets - AWS CloudFormation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlersuche CloudFormation StackSets

Dieses Thema enthält einige häufige Probleme mit StackSets und Lösungsvorschläge für diese Probleme.

Häufige Gründe für Störungen der Stack-Operationen

Problem: Eine Stack-Operation ist fehlgeschlagen und der Instance-Status ist OUTDATED.

Ursache: Es kann verschiedene häufige Ursachen für die Störung der Stack-Operation geben.

  • Nicht ausreichende Berechtigungen eines Zielkontos für die Erstellung von Ressourcen, die in Ihrer Vorlage angegeben sind.

  • Die CloudFormation-Vorlage könnte Fehler enthalten. Validieren Sie die Vorlage in CloudFormation und beheben Sie Fehler, bevor Sie versuchen, Ihr StackSet zu erstellen.

  • Die Vorlage könnte versuchen, globale Ressourcen zu erstellen, die eindeutig sein müssen, es aber nicht sind, wie z. B. S3-Buckets.

  • Eine angegebene Ziel-Kontonummer ist nicht vorhanden. Prüfen Sie die Ziel-Kontonummern, die Sie auf der Seite Set deployment options des Assistenten angegeben haben.

  • Das Administratorkonto hat keine Vertrauensbeziehung mit dem Zielkonto.

  • Die maximale Anzahl an einer Ressource, die in Ihrer Vorlage angegeben ist, ist in Ihrem Zielkonto bereits vorhanden. Sie können beispielsweise die Grenze der zulässigen IAM-Rollen in einem Zielkonto erreicht haben, aber die Vorlage erstellt weitere IAM-Rollen.

  • Sie haben die maximale Anzahl von Stapeln erreicht, die in einem StackSet erlaubt sind. Für die maximale Anzahl von Stapeln pro StackSet siehe CloudFormation-Quoten verstehen.

Lösung: Weitere Informationen zu den Berechtigungen, die für Ziel- und Administratorkonten erforderlich sind, bevor Sie StackSets erstellen können, finden Sie unter Geben Sie allen Benutzern des Administratorkontos die Berechtigung, Stapel in allen Zielkonten zu verwalten.

Wiederholen fehlgeschlagenen Operationen zum Erstellen und Aktualisieren von Stacks

Problem: Eine Erstellen oder Aktualisieren eines Stacks ist fehlgeschlagen und der Instance-Status ist OUTDATED. Um herauszufinden, warum die Erstellung oder Aktualisierung eines Stacks fehlgeschlagen ist, öffnen Sie die CloudFormation-Konsole und sehen Sie sich die Ereignisse für den Stack an, die den Status DELETED (für fehlgeschlagene Erstellungsvorgänge) oder FAILED (für fehlgeschlagene Aktualisierungsvorgänge) aufweisen. Durchsuchen Sie die Stack-Ereignissen und zeigen Sie die Spalte Statusgrund an. Der Wert vom Statusgrund erklärt, warum die Stack-Operation fehlgeschlagen ist.

Nachdem Sie die Ursache für den Fehler bei der Erstellung des Stacks behoben haben, können Sie das Erstellen der Stacks wiederholen. Dazu führen Sie die folgenden Schritte aus.

Lösung: Führen Sie die folgenden Schritte aus, um Ihre Stack-Operation zu wiederholen.

  1. Wählen Sie in der Konsole das StackSet, das den Stack enthält, bei dem der Vorgang fehlgeschlagen ist.

  2. Wählen Sie im Menü Actions (Aktionen) die Option Edit StackSet details (StackSet-Details bearbeiten) aus, um das Erstellen oder Aktualisieren von Stacks zu wiederholen.

  3. Auf der Seite Vorlage angeben behalten Sie die Standardoption Aktuelle Vorlage verwendenbei, um dieselbe CloudFormation-Vorlage zu verwenden. Wenn Ihre Stack-Operation fehlgeschlagen ist, weil in der Vorlage Änderungen erforderlich waren, und Sie eine überarbeitete Vorlage hochladen wollen, wählen Sie stattdessen Upload a template to Amazon S3 und wählen dann Browse, um Ihre aktualisierte Vorlage auszuwählen. Nachdem Sie Ihre geänderte Vorlage hochgeladen haben, wählen Sie Next.

  4. Wenn Sie auf der Seite Stack-Details angeben keine Parameter ändern, die für Ihre Vorlage spezifisch sind, wählen Sie Weiter.

  5. Ändern Sie auf der Seite Set deployment options die Standardwerte für Maximum concurrent accounts und gegebenenfalls für Failure tolerance. Weitere Informationen zu diesen Einstellungen finden Sie unter StackSet Operationsoptionen.

  6. Überprüfen Sie auf der Seite Review Ihre Auswahlen und markieren Sie das Kontrollkästchen, um die erforderlichen IAM-Kapazitäten zu bestätigen. Wählen Sie Absenden aus.

  7. Wenn Ihr Stack nicht erfolgreich aktualisiert wurde, wiederholen Sie dieses Verfahren, nachdem Sie die Probleme bei der Stack-Erstellung gelöst haben.

Löschen von Stack-Instances schlägt fehl

Problem: Das Löschen eines Stacks ist fehlgeschlagen.

Ursache: Das Löschen eines Stacks schlägt bei allen Stacks fehl, deren Beendigungsschutz aktiviert wurde.

Lösung: Ermitteln Sie, ob der Beendigungsschutz für den Stack aktiviert wurde. Wenn dies der Fall ist, deaktivieren Sie den Beendigungsschutz und wiederholen Sie dann das Löschen der Stack-Instance.

Stack-Importvorgang schlägt fehl

Problem: Ein Stapel-Importvorgang kann bestehende Stapel nicht in neue oder bestehende StackSets importieren. Die Stack-Instance befindet sich in einem INOPERABLE Status.

Lösung: Setzten Sie den Stack-Importvorgang zurück, indem Sie die folgenden Aufgaben ausführen.

  1. Verwenden Sie die Option Stacks aus StackSets löschen und aktivieren Sie während der Konfiguration Stacks beibehalten und löschen Sie dann die Stack-Instances aus Ihrem StackSet. Für weitere Informationen siehe Stapel aus CloudFormation StackSets löschen .

  2. Sie werden sehen, dass die Stack-Instances des StackSet aktualisiert werden, um die Stack-Instance INOPERABLE zu entfernen.

  3. Korrigieren Sie die Stack-Instances entsprechend dem Importfehler und wiederholen Sie den Stack-Importvorgang.

Anzahl der Stack-Instance-Fehler für StackSets-Vorgänge

Die Anzahl der Stack-Instance-Fehler warnt Sie, wenn Stack-Instances nicht bereitgestellt oder aktualisiert werden können. Diese Stack-Instances konnten aus einem oder mehreren der folgenden Gründe nicht bereitgestellt werden:

  • Bestehende Ressource(n) mit ähnlicher Konfiguration

  • Fehlende Abhängigkeiten, wie z. B. AWS Identity and Access Management (IAM)-Rollen

  • Andere widersprüchliche Faktoren

Wenn Sie mit maximaler Gleichzeitigkeit bereitstellen möchten, ist die Anzahl der maximalen Gleichzeitigkeit höchstens um eins höher als die Fehlertoleranz. Wenn die Anzahl der Fehlertoleranzen beispielsweise 9 beträgt, darf die maximale Anzahl der Parallelitäten nicht mehr als 10 betragen. Dadurch wird der Vorgang auch dann SUCCEEDED zurückgeben, wenn einige Stack-Instances nicht aktualisiert werden können. Mit der neuen Anzahl der Stack-Instances können Sie feststellen, ob der Vorgang nur bedingt erfolgreich war, da die Fehlertoleranzzahl so eingestellt ist, dass alle Fehler zugelassen werden.

Sie können die AWS-Managementkonsole, das AWS-SDK oder die AWS CLI verwenden, um die Anzahl der Fehler abzurufen, und Stack-Instances filtern, um zu bestimmen, welche Instances erneut bereitgestellt werden müssen.

Verwenden der Konsole

So zeigen Sie die Gesamtzahl der ausgefallenen Stack-Instances an:
  1. Öffnen Sie die CloudFormation Konsole und wählen Sie StackSets.

  2. Wählen Sie Ihr StackSet und dann die Registerkarte Operations (Vorgänge).

  3. Wählen Sie in der Spalte Status (Status) einen Status aus, um die Statusdetails anzuzeigen. Die Anzahl der ausgefallenen Stack-Instances für einen bestimmten Vorgang finden Sie in den Statusdetails.

Um das Konto, die Region und den Status der Stack-Instances für den Vorgang einzusehen, gehen Sie wie folgt vor:
  1. Wählen Sie in den Statusdetails die Anzahl der ausgefallenen Stack-Instances aus. Beispiel: Stack Instances: <number of failed stack instances> (Stack-Instances).

  2. Erweitern Sie den Seitenbereich, indem Sie den Header des Bereichs auswählen. Die Ergebnisse im Seitenbereich sind der Status der Stack-Instances nach Abschluss des ausgewählten Vorgangs.

Um die aktuellen Stack-Instance-Details für einen Vorgang anzuzeigen:
  1. Wählen Sie die Registerkarte Stack Instances (Stack-Instances) aus.

  2. Filtern Sie nach der Last operation ID (ID des letzten Vorgangs). Die Ergebnisse sind der aktuelle Status und die Statusgründe des letzten Vorgangs zur Änderung der Instance. Sie können diesen Filter in Kombination mit AWS Konto, AWS Region, Detaillierter Statusund Driftstatus verwenden, um Ihre Suchergebnisse weiter zu verfeinern.

Verwendung der AWS CLI

Um die Anzahl der ausgefallenen Stack-Instances zu ermitteln, rufen Sie describe-stack-set-operation oder list-stack-set-operations auf und sehen Sie unter StatusDetails nach.

aws cloudformation describe-stack-set-operation --stack-set-name ss1 \ --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60
{ "StackSetOperation": { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Action": "CREATE", "Status": "SUCCEEDED", "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 }, "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 } } }
aws cloudformation list-stack-set-operations --stack-set-name ss1
{ "Summaries": [ { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "Action": "CREATE", "Status": "SUCCEEDED", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 }, "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 } } ] }

Um einen historischen Überblick über einen bestimmten Vorgang zu erhalten, verwenden Sie list-stack-set-operation-results, um den Status und den Statusgrund für jede Stack-Instance nach Abschluss des Vorgangs anzuzeigen. Im folgenden Beispiel finden Status und StatusReason:

aws cloudformation list-stack-set-operation-results --stack-set-name ss1 \ --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60 --filters Name=OPERATION_RESULT_STATUS,Values=FAILED
{ "Summaries": [ { "Account": "123456789012", "Region": "us-west-2", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-west-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-east-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" } ] }

Verwenden Sie list-stack-instances mit den DETAILED_STATUS- und LAST_OPERATION_ID-Filtern, um eine Liste der Stack-Instances abzurufen, die bei dem letzten Vorgang, bei dem versucht wurde, die Stack-Instance bereitzustellen, fehlgeschlagen sind. Sehen Sie sich das --filters-Flag im Beispiel mit DETAILED_STATUS und LAST_OPERATION_ID an:

aws cloudformation list-stack-instances --stack-set-name ss1 \ --filters Name=DETAILED_STATUS,Values=FAILED Name=LAST_OPERATION_ID,Values=5550e62f-c822-4331-88fa-21c1d7bafc60
{ "Summaries": [ { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-east-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } ] }

Um nach der letzten Vorgangs-ID zum Ändern einer Stack-Instance zu suchen, rufen Sie mithilfe von list-stack-instances oder describe-stack-instance die LastOperationId ab:

aws cloudformation describe-stack-instance --stack-set-name ss1 \ --stack-instance-account 123456789012 --stack-instance-region us-east-2
{ "StackInstance": { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "ParameterOverrides": [], "Status": "OUTDATED", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } }