Ermitteln von Abweichungen im gesamten CloudFormation-Stack
Das Durchführen einer Abweichungserkennung für einen Stack ermittelt, ob der Stack von seiner erwarteten Vorlagenkonfiguration abgewichen ist, und gibt detaillierte Informationen über den Abweichungsstatus jeder Ressource im Stack zurück, die die Abweichungserkennung unterstützt.
So erkennen Sie eine Abweichung für einen gesamten Stack mit Hilfe der AWS Management Console
Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation
. -
Wählen Sie in der Liste der Stacks den Stack aus, für den Sie die Abweichungserkennung durchführen möchten. Wählen Sie im Stack-Detailbereich die Option Stack actions (Stack-Aktionen) und dann Detect drift (Abweichung erkennen) aus.
CloudFormation zeigt eine Informationsleiste an, die angibt, dass Abweichungserkennung für den ausgewählten Stack initiiert wurde.
-
Warten Sie, bis CloudFormation den Vorgang der Abweichungserkennung abgeschlossen hat. Wenn der Abweichungserkennungsvorgang abgeschlossen ist, aktualisiert CloudFormation Drift status (Abweichungsstatus) und Last drift check time (Zeitpunkt der letzten Abweichungsprüfung) für Ihren Stack. Diese Felder werden im Abschnitt Overview (Übersicht) des Bereichs Stack info (Stack-Informationen) der Stack-Detailseite aufgeführt.
Der Vorgang der Abweichungserkennung kann mehrere Minuten dauern, abhängig von der Anzahl der im Stack enthaltenen Ressourcen. Sie können nur jeweils einen einzigen Abweichungserkennungsvorgang für einen bestimmten Stack ausführen. CloudFormation führt den Abweichungserkennungsvorgang weiter aus, selbst wenn Sie die Informationsleiste schließen.
-
Überprüfen Sie die Ergebnisse der Abweichungserkennung für den Stack und seine Ressourcen. Wenn Sie Ihren Stack ausgewählt haben, wählen Sie im Menü Stack actions (Stack-Aktionen) die Option View drift results (Abweichungsergebnisse anzeigen) aus.
CloudFormation listet den Gesamtabweichungsstatus des Stacks zusätzlich zum letzten Mal auf, als die Abweichungserkennung für den Stack oder eine seiner einzelnen Ressourcen eingeleitet wurde. Ein Stack gilt als abgewichen, wenn eine oder mehrere seiner Ressourcen abgewichen sind.
Im Abschnitt Resource drift status (Ressourcenabweichungsstatus) listet CloudFormation jede Stack-Ressource, ihren Abweichungsstatus und das letzte Mal, als die Abweichungserkennung für die Ressource eingeleitet wurde, auf. Die logische ID und die physische ID jeder Ressource werden angezeigt, um Ihnen bei der Identifizierung zu helfen. Darüber hinaus zeigt CloudFormation für Ressourcen mit dem Status MODIFIED Details zur Ressourcenabweichung an.
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 geänderten Ressourcen ausgewählt haben, wählen Sie die Option zum Anzeigen von Abweichungsdetails aus.
CloudFormation zeigt die Abweichungsdetailseite für diese Ressource an. Diese Seite führt den erwarteten und aktuellen Eigenschaftswert der Ressource sowie alle Unterschiede zwischen den beiden auf.
Zum Hervorheben eines Unterschieds wählen Sie im Abschnitt Differences (Unterschiede) den Eigenschaftsnamen aus.
-
Zusätzliche Eigenschaften werden in der Spalte Current (Aktuell) des Abschnitts Details grün hinterlegt.
-
Gelöschte Eigenschaften werden in der Spalte Expected (Erwartet) des Abschnitts Details rot markiert.
-
Eigenschaften, deren Wert geändert wurde, sind in den beiden Spalten Expected (Erwartet) und Current (Aktuell) gelb markiert.
-
-
-
So erkennen Sie eine Abweichung für einen gesamten Stack mit Hilfe der AWS CLI
Um eine Abweichung für einen gesamten Stack mit der AWS CLI zu erkennen, verwenden Sie die folgenden Befehle aws
cloudformation
:
-
detect-stack-drift
, um einen Abweichungserkennungsvorgang für einen Stack einzuleiten. -
describe-stack-drift-detection-status
, um den Status des Stapelabweichungserkennungs-Vorgangs zu überwachen. -
describe-stack-resource-drifts
, um die Details der Stapelabweichungserkennung zu überprüfen.
-
Verwenden Sie die
detect-stack-drift
, um eine Abweichung für einen gesamten Stack zu erkennen. Geben Sie den Stack-Namen oder ARN an. Sie können auch die logischen IDs aller bestimmten Ressourcen angeben, die Sie als Filter für diese Abweichungserkennung verwenden möchten.PROMPT> aws cloudformation detect-stack-drift --stack-name
my-stack-with-resource-drift
{ "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample" } -
Da die Erkennung der Stack-Abweichung lange dauern kann, verwenden Sie
describe-stack-drift-detection-status
, um den Status des Vorgangs zu überwachen. Dieser Befehl übernimmt die ID der Stack-Abweichungserkennung, die vom Befehldetect-stack-drift
zurückgegeben wird.Im folgenden Beispiel haben wir die vom obigen Beispiel
detect-stack-drift
zurückgegebene Stack-Abweichungserkennungs-ID verwendet und als Parameter andescribe-stack-drift-detection-status
übergeben. Der Parameter gibt Vorgangsdetails zurück, die zeigen, dass der Abweichungserkennungs-Vorgang abgeschlossen ist, eine einzelne Stack-Ressource abgewichen ist und dass der gesamte Stack als Ergebnis als abgewichen gilt.PROMPT> aws cloudformation describe-stack-drift-detection-status --stack-drift-detection-id
624af370-311a-11e8-b6b7-500cexample
{ "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "StackDriftDetectionId": "624af370-311a-11e8-b6b7-500cexample", "StackDriftStatus": "DRIFTED", "Timestamp": "2018-03-26T17:23:22.279Z", "DetectionStatus": "DETECTION_COMPLETE", "DriftedStackResourceCount": 1 } -
Wenn die Stapelabweichungserkennung abgeschlossen ist, verwenden Sie den Befehl
describe-stack-resource-drifts
, um die Ergebnisse zu überprüfen, einschließlich der tatsächlichen und erwarteten Eigenschaftswerte für Ressourcen, die abgewichen sind.Das folgende Beispiel verwendet den Parameter
stack-resource-drift-status-filters
, um Informationen zur Stack-Abweichung für die Ressourcen abzurufen, die 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, deren Werte geändert wurden. Es wurden keine Ressourcen gelöscht.PROMPT> aws cloudformation describe-stack-resource-drifts --stack-name
my-stack-with-resource-drift
--stack-resource-drift-status-filters MODIFIED DELETED { "StackResourceDrifts": [ { "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "ActualProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":120,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":12},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", "ResourceType": "AWS::SQS::Queue", "Timestamp": "2018-03-26T17:23:34.489Z", "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/099908667365/my-stack-with-resource-drift-Queue-494PBHCO76H4", "StackResourceDriftStatus": "MODIFIED", "ExpectedProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":20,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":10},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", "PropertyDifferences": [ { "PropertyPath": "/DelaySeconds", "ActualValue": "120", "ExpectedValue": "20", "DifferenceType": "NOT_EQUAL" }, { "PropertyPath": "/RedrivePolicy/maxReceiveCount", "ActualValue": "12", "ExpectedValue": "10", "DifferenceType": "NOT_EQUAL" } ], "LogicalResourceId": "Queue" } ] }