Problembehebung AWS 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.

Problembehebung AWS CloudFormation StackSets

Dieses Thema enthält einige häufig auftretende AWS CloudFormation StackSets Probleme 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 AWS CloudFormation Vorlage enthält möglicherweise Fehler. Überprüfen Sie die Vorlage AWS CloudFormation und beheben Sie Fehler, bevor Sie versuchen, Ihr Stack-Set 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. Beispielsweise haben Sie möglicherweise das Limit der zulässigen IAM Rollen in einem Zielkonto erreicht, aber die Vorlage erstellt mehr IAM Rollen.

  • Sie haben die maximale Anzahl von Stacks erreicht, die in einem Stack-Satz erlaubt sind. Weitere Informationen zur maximalem Anzahl von Stacks pro Stack-Satz finden Sie unter AWS CloudFormation -Limits.

Lösung: Weitere Informationen zu den erforderlichen Berechtigungen von Ziel- und Administratorkonten für das Erstellen von Stack-Sets finden Sie unter Erteilen Sie allen Benutzern des Administratorkontos die Berechtigung, Stacks 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 zu ermitteln, warum die Erstellung oder Aktualisierung eines Stacks fehlgeschlagen ist, öffnen Sie die AWS CloudFormation Konsole und sehen Sie sich die Ereignisse für den Stack an. Diese haben dann den Status DELETED (für fehlgeschlagene Erstellungsvorgänge) oder FAILED (für fehlgeschlagene Aktualisierungsvorgänge). 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 auf der Konsole den Stack aus, der den Stack enthält, für den die Operation fehlgeschlagen ist.

  2. Wählen Sie im Menü Aktionen die Option StackSetDetails bearbeiten aus, um erneut zu versuchen, Stacks zu erstellen oder zu aktualisieren.

  3. Verwenden Sie auf der Seite Specify template (Vorlage angeben) dieselbe AWS CloudFormation -Vorlage und behalten Sie die Standardoption, Current template (Aktuelle Vorlage), bei. 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 für Ihre Vorlage spezifischen Parameter ändern, 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 Optionen in den Operationen für Stack-Sets.

  6. Überprüfen Sie auf der Seite „Überprüfen“ Ihre Auswahl und aktivieren Sie das Kontrollkästchen, um die erforderlichen IAM Funktionen 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: Bei einem Stack-Importvorgang können vorhandene Stacks nicht in neue oder vorhandene Stack-Sets importiert werden. 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 StackSets Option Stacks aus löschen und aktivieren Sie sie RetainStackswährend der Konfiguration. Fahren Sie dann mit dem Löschen von Stack-Instances aus Ihrem Stack-Set fort. Weitere Informationen finden Sie unterLöschen Sie Stack-Instances mit der CloudFormation Konsole oder AWS CLI.

  2. Sie werden sehen, dass die Stack-Instance des Stacksets aktualisiert wird, um die INOPERABLE-Stack-Instance 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 Operationen

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. Rollen AWS Identity and Access Management (IAM)

  • 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, oder verwenden AWS Management Console AWS SDK, AWS CLI um die Anzahl der Fehler abzurufen und Stack-Instances zu filtern, um zu ermitteln, welche Instanzen erneut bereitgestellt werden müssen.

Verwenden der Konsole

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

  2. Wählen Sie Ihre StackSet aus und wählen Sie dann die Registerkarte Operationen.

  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 Status und Abweichungsstatus verwenden, um Ihre Suchergebnisse weiter zu verfeinern.

Verwenden Sie den 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" } }