Drifterkennung durchführen am 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.

Drifterkennung durchführen am CloudFormation StackSets

Selbst wenn Sie Ihre Stacks und die darin enthaltenen Ressourcen verwalten CloudFormation, können Benutzer diese Ressourcen außerhalb von CloudFormation ändern. Benutzer können Ressourcen direkt bearbeiten, indem sie den zugrunde liegenden Service verwenden, der die Ressource erstellt hat. Durch die Abweichungserkennung für ein Stack-Set können Sie feststellen, ob sich eine der Stack-Instances, die zu diesem Stack-Set gehören, von der erwarteten Konfiguration unterscheidet oder abgewichen ist.

Wie CloudFormation funktioniert die Drift-Erkennung bei einem Stack-Set

Wenn eine CloudFormation Drifterkennung in einem Stack-Set durchgeführt wird, wird eine Drifterkennung auf dem Stack durchgeführt, der jeder Stack-Instance im Stack-Set zugeordnet ist. CloudFormation vergleicht dazu den aktuellen Status jeder Ressource im Stack mit dem erwarteten Zustand dieser Ressource, wie in der Vorlage des Stacks definiert, und den angegebenen Eingabeparametern. Wenn der aktuelle Status einer Ressource vom erwarteten Zustand abweicht, wird davon ausgegangen, dass diese Ressource abgewichen ist. Wenn eine oder mehrere Ressourcen in einem Stack abgewichen sind, wird der Stack selbst als abgewichen angesehen, und die Stack-Instances, denen der Stack zugeordnet ist, werden auch als abgewichen angesehen. Wenn eine oder mehrere Stack-Instances in einem Stack-Set abgewichen sind, wird das Stack-Set selbst als abgewichen angesehen.

Die Drift-Erkennung identifiziert nicht verwaltete Änderungen, d. h. Änderungen, die an Stacks außerhalb von vorgenommen wurden. CloudFormation Änderungen, die direkt und nicht CloudFormation auf Stack-Set-Ebene an einem Stack vorgenommen werden, gelten nicht als Drift. Angenommen, Sie haben einen Stack, der einer Stack-Instance eines Stack-Sets zugeordnet ist. Wenn Sie diesen Stack so aktualisieren, dass er eine andere Vorlage verwendet, wird dies nicht als Abweichung angesehen, obwohl dieser Stack jetzt eine andere Vorlage hat als alle anderen Stapel, die zum Stack-Set gehören. CloudFormation Dies liegt daran, dass der Stack immer noch mit seiner erwarteten Vorlagen- und Parameterkonfiguration in CloudFormation übereinstimmt.

Ausführliche Informationen darüber, wie die CloudFormation Drifterkennung auf einem Stack durchgeführt wird, finden Sie unterErkennen Sie mit Drift-Erkennung nicht verwaltete Konfigurationsänderungen an Stacks und Ressourcen.

Da die CloudFormation Drifterkennung für jeden Stapel einzeln durchgeführt wird, werden bei der Bestimmung, ob ein Stapel driftet ist, alle überschriebenen Parameterwerte berücksichtigt. Weitere Hinweise zum Überschreiben von Vorlagenparametern in Stack-Instances finden Sie unter Überschreiben Sie Parameterwerte auf Stack-Instanzen in CloudFormation StackSets.

Wenn Sie die Drifterkennung direkt auf einem Stack durchführen, der einer Stack-Instance zugeordnet ist, sind diese Drift-Ergebnisse nicht auf der StackSetsKonsolenseite verfügbar.

Erkennen Sie Drift auf einem Stack-Set (Konsole)

Um Drift auf einem Stack-Set zu erkennen
  1. Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie auf der StackSetsSeite das Stack-Set aus, für das Sie eine Drift-Erkennung durchführen möchten.

  3. Wählen Sie im Menü Aktionen die Option Abweichungen erkennen aus.

    CloudFormation zeigt eine Informationsleiste an, die angibt, dass die Drifterkennung für das ausgewählte Stack-Set ausgelöst wurde.

  4. Optional: So überwachen Sie den Fortschritt des Abweichungserkennungsvorgangs:

    1. Wählen Sie den Namen des Stack-Sets aus, um die Seite Stackset-Details anzuzeigen.

    2. Wählen Sie die Registerkarte Vorgänge, den Abweichungserkennungsvorgang und dann Abweichungsdetails anzeigen aus.

    CloudFormation zeigt das Dialogfeld mit den Vorgangsdetails an.

  5. Warten Sie, bis der Vorgang zur Drifterkennung CloudFormation abgeschlossen ist. Wenn die Drift-Erkennung abgeschlossen ist, werden der Drift-Status und die Uhrzeit der letzten Drift-Prüfung für Ihr Stack-Set CloudFormation aktualisiert. Diese Felder sind auf der Registerkarte „Übersicht“ der StackSet Detailseite für das ausgewählte Stack-Set aufgeführt.

    Die Abweichungserkennungsvorgang kann einige Zeit in Anspruch nehmen, abhängig von der Anzahl der Stack-Instances, die im Stack-Set enthalten sind und der Anzahl der Ressourcen, die im Stack-Set enthalten sind. Sie können jeweils nur einen einzigen Vorgang zur Erkennung von Abweichungen auf einem bestimmten Stack-Set ausführen. CloudFormation setzt den Vorgang zur Drifterkennung fort, auch wenn Sie die Informationsleiste schließen.

  6. Um die Ergebnisse der Abweichungserkennung für die Stack-Instances in einem Stack-Set zu überprüfen, wählen Sie die Registerkarte Stack-Instances aus.

    In der Spalte Stack-Name wird der Name des Stacks aufgeführt, der jeder Stack-Instance zugeordnet ist, und in der Spalte Abweichungsstatus wird der Abweichungsstatus dieses Stacks aufgeführt. Ein Stack gilt als abgewichen, wenn eine oder mehrere seiner Ressourcen abgewichen sind.

  7. So überprüfen Sie die Ergebnisse der Abweichungserkennung für den Stack, der mit einer bestimmten Stack-Instance verknüpft ist:

    1. Wählen Sie die Registerkarte Vorgänge aus.

    2. Wählen Sie den Abweichungsvorgang aus, für den Sie die Ergebnisse der Abweichungserkennung ansehen möchten. Der Status der Stack-Instance und der Grund für den ausgewählten Vorgang werden in einem geteilten Fenster angezeigt. Bei einem Abweichungsvorgang wird in der Spalte „Statusgrund“ der Abweichungsstatus einer Stack-Instance angezeigt.

    3. Wählen Sie die Stack-Instance aus, für die Sie Abweichungsdetails sehen möchten, und gehen Sie dann auf Ressourcenabweichungen anzeigen. In der Tabelle Ressourcenabweichungsstatus auf der Seite Ressourcenabweichungen werden alle Stack-Ressourcen mit ihrem jeweiligen Abweichungsstatus aufgeführt und Sie sehen, wann für die einzelnen Ressourcen zuletzt die Abweichungserkennung eingeleitet wurde. Die logische ID und die physische ID jeder Ressource werden angezeigt, um Ihnen bei der Identifizierung zu helfen.

  8. Sie können die Ressourcen basierend auf ihrem Abweichungsstatus mithilfe der Spalte Drift status (Abweichungsstatus) sortieren.

    So zeigen Sie die Details zu einer geänderten Ressource an:

    1. Wenn Sie die Ressource ausgewählt haben, wählen Sie Abweichungsdetails anzeigen aus.

      CloudFormation zeigt die Drift-Detailseite für diese bestimmte Ressource an. Auf dieser Seite werden die Unterschiede der Ressource aufgelistet. Außerdem werden die erwarteten und aktuellen Eigenschaftswerte der Ressource aufgeführt.

      Anmerkung

      Wenn die zugehörige Region bzw. das Konto des Stacks von der Region und dem Konto abweichen, in dem Sie derzeit angemeldet sind, ist die Schaltfläche Abweichung erkennen deaktiviert und Sie können die Details nicht anzeigen.

Erkennt Drift auf einem Stack-Set (AWS CLI)

Gehen Sie wie folgt vor AWS CLI, um Drift auf einem gesamten Stack mithilfe von zu erkennen:

Um Drift auf einem Stack-Set zu erkennen
  1. Verwenden der detect-stack-set-driftBefehl zur Erkennung von Drift in einem gesamten Stack-Set und den zugehörigen Stack-Instances.

    Im folgenden Beispiel wird die Abweichungserkennung für das Stack-Set stack-set-drift-example initiiert.

    aws cloudformation detect-stack-set-drift \ --stack-set-name stack-set-drift-example

    Ausgabe:

    { "OperationId": "c36e44aa-3a83-411a-b503-cb611example" }
  2. Da Operationen zur Erkennung von Stack-Set-Drift ein langwieriger Vorgang sein können, verwenden Sie den describe-stack-set-operationBefehl zur Überwachung des Status des Drift-Vorgangs. Dieser Befehl übernimmt die ID des Stack-Set-Vorgangs, die vom Befehl detect-stack-set-drift zurückgegeben wird.

    In den folgenden Beispielen wird die Vorgangs-ID aus dem vorherigen Beispiel verwendet, um Informationen über die Erkennung der Stack-Set-Abweichung zurückzugeben. In diesem Beispiel wird der Vorgang noch ausgeführt. Von den sieben Stack-Instances, die mit diesem Stack-Set verknüpft sind, wurde bereits eine abweichende Stack-Instance festgestellt. Zwei Instances sind synchron und die Abweichungserkennung für die verbleibenden vier Stack-Instances wird noch ausgeführt. Da eine Instance abgewichen ist, lautet der Abweichungsstatus des Stack-Sets selbst jetzt DRIFTED.

    aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example

    Ausgabe:

    { "StackSetOperation": { "Status": "RUNNING", "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "OperationPreferences": { "RegionOrder": [] }, "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 1, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:34:28.543Z", "InSyncStackInstancesCount": 2, "InProgressStackInstancesCount": 4, "DriftStatus": "DRIFTED", "FailedStackInstancesCount": 0 }, "Action": "DETECT_DRIFT", "CreationTimestamp": "2019-12-04T20:33:13.673Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "OperationId": "c36e44aa-3a83-411a-b503-cb611example" } }

    Wenn Sie den gleichen Befehl später ausführen, werden in diesem Beispiel die Informationen angezeigt, die zurückgegeben werden, sobald der Abweichungserkennungsvorgang abgeschlossen ist. Zwei der insgesamt sieben Stack-Instances, die mit diesem Stack-Set verknüpft sind, sind abgewichen, wodurch der Abweichungsstatus des Stack-Sets selbst als DRIFTED gerendert wird.

    aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example

    Ausgabe:

    { "StackSetOperation": { "Status": "SUCCEEDED", "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "OperationPreferences": { "RegionOrder": [] } "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "EndTimestamp": "2019-12-04T20:37:32.829Z", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 2, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:36:55.612Z", "InSyncStackInstancesCount": 5, "InProgressStackInstancesCount": 0, "DriftStatus": "DRIFTED", "FailedStackInstancesCount": 0 }, "Action": "DETECT_DRIFT", "CreationTimestamp": "2019-12-04T20:33:13.673Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "OperationId": "c36e44aa-3a83-411a-b503-cb611example" } }
  3. Wenn die Erkennung der Stack-Set-Abweichung abgeschlossen ist, können Sie die Ergebnisse mit den Befehlen describe-stack-set, list-stack-instances, describe-stack-instance und list-stack-instance-resource-drifts überprüfen.

    Die describe-stack-setDer Befehl enthält dieselben detaillierten Drift-Informationen, die vom describe-stack-set-operation Befehl zurückgegeben wurden.

    aws cloudformation describe-stack-set \ --stack-set-name stack-set-drift-example

    Ausgabe:

    { "StackSet": { "Status": "ACTIVE", "Description": "Demonstration of drift detection on stack sets.", "Parameters": [], "Tags": [ { "Value": "Drift detection", "Key": "Feature" } ], "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "Capabilities": [], "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 2, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:36:55.612Z", "InProgressStackInstancesCount": 0, "DriftStatus": "DRIFTED", "DriftDetectionStatus": "COMPLETED", "InSyncStackInstancesCount": 5, "FailedStackInstancesCount": 0 }, "StackSetARN": "arn:aws:cloudformation:us-east-1:123456789012:stackset/stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "TemplateBody": [details omitted], "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22ebexample", "StackSetName": "stack-set-drift-example" } }

    Sie können den list-stack-instancesBefehl, um zusammenfassende Informationen über die Stack-Instances zurückzugeben, die einem Stack-Set zugeordnet sind, einschließlich des Drift-Status jeder Stack-Instance.

    In diesem Beispiel können wir durch Ausführen von list-stack-instances für das Beispiel-Stack-Set mit dem Abweichungsstatusfilter „DRIFTED“ ermitteln, welche zwei Stack-Instances den Abweichungsstatus „DRIFTED“ aufweisen.

    aws cloudformation list-stack-instances \ --stack-set-name stack-set-drift-example \ --filters Name=DRIFT_STATUS,Values=DRIFTED

    Ausgabe:

    { "Summaries": [ { "StackId": "arn:aws:cloudformation:eu-west-1:123456789012:stack/StackSet-stack-set-drift-example-b0fb6083-60c0-4e39-af15-2f071e0db90c/0e4f0940-16d4-11ea-93d8-0641cexample", "Status": "CURRENT", "Account": "012345678910", "Region": "eu-west-1", "LastDriftCheckTimestamp": "2019-12-04T20:37:32.687Z", "DriftStatus": "DRIFTED", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" }, { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/StackSet-stack-set-drift-example-b7fde68e-e541-44c2-b33d-ef2e2988071a/008e6030-16d4-11ea-8090-12f89example", "Status": "CURRENT", "Account": "123456789012", "Region": "us-east-1", "LastDriftCheckTimestamp": "2019-12-04T20:34:28.275Z", "DriftStatus": "DRIFTED", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" }, [additional stack instances omitted] ] }

    Die describe-stack-instanceDer Befehl gibt diese Informationen ebenfalls zurück, jedoch für eine einzelne Stack-Instance, wie im folgenden Beispiel.

    aws cloudformation describe-stack-instance \ --stack-set-name stack-set-drift-example \ --stack-instance-account 012345678910 --stack-instance-region us-east-1

    Ausgabe:

    { "StackInstance": { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/StackSet-stack-set-drift-example-b7fde68e-e541-44c2-b33d-ef2e2988071a/008e6030-16d4-11ea-8090-12f89example", "Status": "CURRENT", "Account": "123456789012", "Region": "us-east-1", "ParameterOverrides": [], "DriftStatus": "DRIFTED", "LastDriftCheckTimestamp": "2019-12-04T20:34:28.275Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" } }
  4. Sobald Sie herausgefunden haben, welche Stack-Instances sich verändert haben, können Sie die Informationen über die Stack-Instances, die von den describe-stack-instance Befehlen list-stack-instances oder zurückgegeben werden, verwenden, um den list-stack-instance-resource-driftsBefehl. Dieser Befehl gibt detaillierte Informationen darüber zurück, welche Ressourcen im Stack für einen bestimmten Abweichungsvorgang abgewichen sind.

    Im folgenden Beispiel wird der Parameter --stack-instance-resource-drift-statuses verwendet, um Informationen zur Stack-Abweichung für die Ressourcen abzurufen, die im Abweichungsvorgang aus dem vorherigen Beispiel geändert oder gelöscht wurden. Die Anfrage gibt Informationen über die eine Ressource zurück, die geändert wurde, einschließlich Details über zwei ihrer Eigenschaften und deren geänderte Werte. Es wurden keine Ressourcen gelöscht.

    aws cloudformation list-stack-instance-resource-drifts \ --stack-set-name my-stack-set-with-resource-drift \ --stack-instance-account 123456789012 \ --stack-instance-region us-east-1 \ --operation-id c36e44aa-3a83-411a-b503-cb611example \ --stack-instance-resource-drift-statuses MODIFIED DELETED

    Ausgabe:

    { "Summaries": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-stack-set-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "ResourceType": "AWS::SQS::Queue", "Timestamp": "2018-03-26T17:23:34.489Z", "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/123456789012/my-stack-with-resource-drift-Queue-494PBHCO76H4", "StackResourceDriftStatus": "MODIFIED", "PropertyDifferences": [ { "PropertyPath": "/DelaySeconds", "ActualValue": "120", "ExpectedValue": "20", "DifferenceType": "NOT_EQUAL" }, { "PropertyPath": "/RedrivePolicy/maxReceiveCount", "ActualValue": "12", "ExpectedValue": "10", "DifferenceType": "NOT_EQUAL" } ], "LogicalResourceId": "Queue" } ] }

Stoppen der Abweichungserkennung für ein Stack-Set

Da die Abweichungserkennung für ein Stack-Set ein lang andauernder Vorgang sein kann, kann es Instances geben, wenn Sie einen Abweichungserkennungsvorgang beenden möchten, der derzeit für ein Stack-Set ausgeführt wird.

Um die Drifterkennung auf einem Stack-Set (Konsole) zu stoppen
  1. Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie auf der StackSetsSeite den Namen des Stack-Sets aus.

    CloudFormation zeigt die StackSets Detailseite für das ausgewählte Stack-Set an.

  3. Wählen Sie auf der StackSets Detailseite die Registerkarte Operationen und dann den Vorgang zur Drifterkennung aus.

  4. Wählen Sie Vorgang stoppen aus.

Um die Drifterkennung auf einem Stack-Set zu beenden (AWS CLI)
  • Verwenden der stop-stack-set-operationBefehl. Sie müssen sowohl den Stack-Set-Namen als auch die Operations-ID der Abweichungserkennungs-Stack-Set-Operation angeben.

    aws cloudformation stop-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id 624af370-311a-11e8-b6b7-500cexample