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.
Drift-Erkennung bei CloudFormation StackSets durchführen
Auch wenn Sie Ihre Stacks und die darin enthaltenen Ressourcen über CloudFormation verwalten, 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. Wenn Sie eine Drifterkennung für ein StackSet durchführen, können Sie feststellen, ob eine der Stack-Instances, die zu diesem StackSet gehören, von ihrer erwarteten Konfiguration abweicht oder gedriftet ist.
Themen
Wie CloudFormation die Drift-Erkennung bei einem StackSet durchführt
Wenn CloudFormation eine Drifterkennung für ein StackSet durchführt, führt es eine Drifterkennung für den Stack durch, der mit jeder Stack-Instance im StackSet verbunden 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 StackSet gedriftet sind, gilt auch das StackSet selbst als gedriftet.
Die Abweichungserkennung identifiziert nicht verwaltete Änderungen, d. h. Änderungen an Stacks außerhalb von CloudFormation. Änderungen, die über CloudFormation direkt an einem Stack und nicht auf der Ebene des StackSets vorgenommen werden, gelten nicht als Drift. Nehmen wir zum Beispiel an, Sie haben einen Stapel, der mit einer Stack-Instance eines StackSet verbunden ist. Wenn Sie CloudFormation verwenden, um diesen Stack zu aktualisieren und eine andere Vorlage zu verwenden, wird dies nicht als Drift betrachtet, auch wenn dieser Stack jetzt eine andere Vorlage hat als alle anderen Stacks, die zum StackSet gehören. Dies liegt daran, dass der Stack immer noch mit seiner erwarteten Vorlagen- und Parameterkonfiguration in CloudFormation übereinstimmt.
Ausführliche Informationen dazu, wie CloudFormation die Abweichungserkennung für einen Stack durchführt, finden Sie unter Erkennen Sie nicht verwaltete Konfigurationsänderungen an Stacks und Ressourcen mit Drift Detection.
Da CloudFormation die Abweichungserkennung für jeden Stack einzeln durchführt, werden alle überschriebenen Parameterwerte berücksichtigt, wenn festgestellt wird, ob ein Stack abgewichen ist. Weitere Hinweise zum Überschreiben von Vorlagenparametern in Stack-Instances finden Sie unter Überschreiben von Parameterwerten auf Stacks innerhalb Ihres CloudFormation StackSet.
Wenn Sie die Abweichungserkennung direkt für einen Stack durchführen, der einer Stack-Instance zugeordnet ist, sind diese Abweichungsergebnisse nicht auf der StackSets-Konsolenseite verfügbar.
Drift in einem StackSet erkennen (Konsole)
So erkennen Sie Drift bei einem StackSet
Öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie auf der Seite StackSets den StackSet aus, für den Sie die Drifterkennung durchführen möchten.
-
Wählen Sie im Menü Aktionen die Option Abweichungen erkennen aus.
CloudFormation zeigt eine Informationsleiste an, die besagt, dass die Drifterkennung für das ausgewählte StackSet eingeleitet wurde.
-
Optional: So überwachen Sie den Fortschritt des Abweichungserkennungsvorgangs:
-
Wählen Sie den StackSet-Namen, um die Seite Stackset-Details anzuzeigen.
-
Wählen Sie die Registerkarte Vorgänge, den Abweichungserkennungsvorgang und dann Abweichungsdetails anzeigen aus.
CloudFormation zeigt das Dialogfeld Vorgangsdetails an.
-
-
Warten Sie, bis CloudFormation den Vorgang der Abweichungserkennung abgeschlossen hat. Wenn die Drift-Erkennung abgeschlossen ist, aktualisiert CloudFormation Drift-Status und Letzte Drift-Prüfzeit für Ihr StackSet. Diese Felder werden auf der Registerkarte Übersicht der Seite StackSet-Details für den ausgewählten StackSet aufgeführt.
Der Vorgang der Drifterkennung kann einige Zeit in Anspruch nehmen, abhängig von der Anzahl der im StackSet enthaltenen Stack-Instances und der Anzahl der im StackSet enthaltenen Ressourcen. Sie können nur einen einzigen Drift-Erkennungsvorgang für ein bestimmtes StackSet auf einmal durchführen. CloudFormation führt den Abweichungs-Erkennungsvorgang weiter aus, selbst wenn Sie die Informationsleiste schließen.
-
Um die Ergebnisse der Drifterkennung für die Stack-Instances in einem StackSet zu überprüfen, wählen Sie die Registerkarte Stack-Instances .
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.
-
So überprüfen Sie die Ergebnisse der Abweichungserkennung für den Stack, der mit einer bestimmten Stack-Instance verknüpft ist:
-
Wählen Sie die Registerkarte Vorgänge aus.
-
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.
-
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.
-
-
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:
-
Wenn Sie die Ressource ausgewählt haben, wählen Sie Abweichungsdetails anzeigen aus.
CloudFormation zeigt die Abweichungsdetailseite für diese 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.
-
Drift in einem StackSet erkennen (AWS CLI)
Um die Drift eines ganzen Stapels mit Hilfe des AWS CLIzu erkennen, gehen Sie wie folgt vor:
So erkennen Sie Drift bei einem StackSet
-
Verwenden Sie den Befehl detect-stack-set-drift, um eine Drift in einem gesamten StackSet und den zugehörigen Stack-Instances zu erkennen.
Das folgende Beispiel initiiert die Drifterkennung auf dem StackSet
stack-set-drift-example.aws cloudformation detect-stack-set-drift \ --stack-set-namestack-set-drift-exampleAusgabe:
{ "OperationId": "c36e44aa-3a83-411a-b503-cb611example" } -
Da die StackSet-Drift-Erkennung ein langwieriger Vorgang sein kann, verwenden Sie den Befehl describe-stack-set-operation, um den Status des Driftvorgangs zu überwachen. Dieser Befehl nimmt die vom Befehl detect-stack-set-drift zurückgegebene StackSet-Operations-ID.
Die folgenden Beispiele verwenden die Operations-ID aus dem vorherigen Beispiel, um Informationen über die StackSet-Drift-Erkennungsoperation zurückzugeben. In diesem Beispiel wird der Vorgang noch ausgeführt. Von den sieben Stack-Instances, die mit diesem StackSet verbunden sind, wurde bei einer Stack-Instance bereits eine Drift festgestellt, zwei Instances sind synchronisiert und die Drift-Erkennung für die restlichen vier Stack-Instances ist noch im Gange. Da eine Instance gedriftet ist, ist der Drift-Status des StackSets selbst jetzt
DRIFTED.aws cloudformation describe-stack-set-operation \ --stack-set-namestack-set-drift-example\ --operation-idc36e44aa-3a83-411a-b503-cb611exampleAusgabe:
{ "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 StackSet verbunden sind, sind abgedriftet, so dass der Drift-Status des StackSets selbst
DRIFTEDlautet.aws cloudformation describe-stack-set-operation \ --stack-set-namestack-set-drift-example\ --operation-idc36e44aa-3a83-411a-b503-cb611exampleAusgabe:
{ "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" } } -
Wenn der Vorgang der StackSet-Drift-Erkennung abgeschlossen ist, verwenden Sie die Befehle,describe-stack-set,list-stack-instances describe-stack-instanceund list-stack-instance-resource-drifts, um die Ergebnisse zu überprüfen.
Der Befehl describe-stack-set enthält die gleichen detaillierten Driftinformationen, die auch der Befehl describe-stack-set-operation liefert.
aws cloudformation describe-stack-set \ --stack-set-namestack-set-drift-exampleAusgabe:
{ "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" } }Mit dem Befehl list-stack-instances erhalten Sie zusammenfassende Informationen über die mit einem StackSet verbundenen Stack-Instances, einschließlich des Drift-Status jeder Stack-Instance.
In diesem Beispiel können Sie durch die Ausführung von list-stack-instances auf dem Beispiel-StackSet mit dem auf
DRIFTEDgesetzten Driftstatusfilter feststellen, welche zwei Stack-Instances den DriftstatusDRIFTEDhaben.aws cloudformation list-stack-instances \ --stack-set-namestack-set-drift-example\ --filtersName=DRIFT_STATUS,Values=DRIFTEDAusgabe:
{ "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]] }Der Befehl describe-stack-instance gibt diese Informationen ebenfalls zurück, allerdings für eine einzelne Stack-Instance, wie im folgenden Beispiel.
aws cloudformation describe-stack-instance \ --stack-set-namestack-set-drift-example\ --stack-instance-account012345678910--stack-instance-regionus-east-1Ausgabe:
{ "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" } } -
Sobald Sie festgestellt haben, welche Stack-Instances gedriftet sind, können Sie die Informationen über die Stack-Instances, die von den Befehlen list-stack-instances oder describe-stack-instance zurückgegeben werden, verwenden, um den Befehl list-stack-instance-resource-drifts auszuführen. 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-statusesverwendet, 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-namemy-stack-set-with-resource-drift\ --stack-instance-account123456789012\ --stack-instance-regionus-east-1\ --operation-idc36e44aa-3a83-411a-b503-cb611example\ --stack-instance-resource-drift-statusesMODIFIED DELETEDAusgabe:
{ "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" } ] }
Beenden der Drifterkennung bei einem StackSet
Da die Drifterkennung auf einem StackSet ein langwieriger Vorgang sein kann, kann es vorkommen, dass Sie einen laufenden Vorgang zur Drifterkennung auf einem StackSet stoppen möchten.
So beenden Sie die Drifterkennung auf einem StackSet (Konsole)
Öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie auf der Seite StackSets den Namen des StackSets.
CloudFormation zeigt die Seite StackSets Details für das ausgewählte StackSet an.
-
Wählen Sie auf der Seite StackSets-Details die Registerkarte Vorgänge und dann den Abweichungserkennungsvorgang aus.
-
Wählen Sie Vorgang stoppen aus.
So beenden Sie die Drifterkennung bei einem StackSet (AWS CLI)
-
Verwenden Sie den stop-stack-set-operation-Befehl. Sie müssen sowohl den StackSet-Namen als auch die Operations-ID der StackSet-Operation zur Drifterkennung angeben.
aws cloudformation stop-stack-set-operation \ --stack-set-namestack-set-drift-example\ --operation-id624af370-311a-11e8-b6b7-500cexample