Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esecuzione del rilevamento della deriva su CloudFormation StackSets
Anche se gestisci gli stack e le risorse in essi contenute CloudFormation, gli utenti possono modificare tali risorse all'esterno. CloudFormation Gli utenti possono modificare le risorse direttamente utilizzando il servizio sottostante che ha creato la risorsa. Eseguendo il rilevamento della deviazione su un set di stack, è possibile determinare se una qualsiasi delle istanze dello stack appartenenti a quel set di stack differiscono, o sono state deviate, dalla configurazione prevista.
Argomenti
Come CloudFormation esegue il rilevamento della deriva su un set di pile
Quando CloudFormation esegue il rilevamento della deriva su un set di stack, esegue il rilevamento della deriva sullo stack associato a ciascuna istanza dello stack set. A tale scopo, CloudFormation confronta lo stato corrente di ogni risorsa nello stack con lo stato previsto di tale risorsa, come definito nel modello dello stack e qualsiasi parametro di input specificato. Se lo stato corrente di una risorsa varia dallo stato previsto, tale risorsa viene considerata deviata. Se una o più risorse in uno stack sono deviate, lo stack stesso è considerato deviato e anche le istanze dello stack a cui lo stack è associato vengono considerate deviate. Se una o più istanze di stack in un set di stack sono state deviate, il set di stack stesso è considerato deviato.
Il rilevamento della deriva identifica le modifiche non gestite, ovvero le modifiche apportate agli stack esterni a. CloudFormation Le modifiche apportate direttamente CloudFormation a uno stack, anziché a livello di set di pila, non sono considerate deviazioni. Ad esempio, supponiamo di avere uno stack associato a un'istanza di stack di un set di stack. Se si aggiorna lo stack CloudFormation per utilizzare un modello diverso, ciò non viene considerato deriva, anche se quello stack ora ha un modello diverso da qualsiasi altro stack appartenente allo stack set. Questo perché lo stack corrisponde ancora al modello previsto e alla configurazione dei parametri in CloudFormation.
Per informazioni dettagliate su come CloudFormation esegue il rilevamento della deriva su uno stack, consulta. Rileva le modifiche di configurazione non gestite agli stack e alle risorse con il rilevamento della deriva
Poiché CloudFormation esegue il rilevamento della deriva su ogni pila singolarmente, tiene conto di tutti i valori dei parametri sostituiti per determinare se una pila ha subito una deriva. Per ulteriori informazioni sull'override dei parametri del modello nelle istanze dello stack, consulta Sovrascrivi i valori dei parametri sulle istanze dello stack in CloudFormation StackSets.
Se esegui il rilevamento della deriva direttamente su uno stack associato a un'istanza dello stack, tali risultati non sono disponibili nella pagina della console. StackSets
Rileva la deriva su un set di stack (console)
Per rilevare la deriva su un set di pile
-
Nella StackSetspagina, seleziona il set di pila su cui desideri eseguire il rilevamento della deriva.
-
Dal menu Actions (Operazioni), selezionare Detect drifts (Rileva deviazioni).
CloudFormation visualizza una barra informativa che indica che il rilevamento della deriva è stato avviato per il set di pila selezionato.
-
Facoltativo: per monitorare lo stato di avanzamento dell'operazione di rilevamento della deviazione:
-
Fare clic sul nome del set di stack per visualizzare la pagina dei Stackset details (Dettagli del set di stack).
-
Selezionare la scheda Operations (Operazioni), selezionare l'operazione di rilevamento della deviazione e quindi selezionare View drift details (Visualizza dettagli deviazione).
CloudFormation visualizza la finestra di dialogo dei dettagli dell'operazione.
-
-
Attendere il CloudFormation completamento dell'operazione di rilevamento della deriva. Al termine dell'operazione di rilevamento della deriva, CloudFormation aggiorna Drift status e Last drift check time per lo stack set. Questi campi sono elencati nella scheda Panoramica della pagina dei StackSet dettagli per il set di stack selezionato.
L'operazione di rilevamento della deviazione potrebbe richiedere del tempo, a seconda del numero di istanze dello stack incluse nel set di stack e del numero di risorse incluse nel set di stack. È possibile eseguire una sola operazione di rilevamento della deriva su un determinato set di stack alla volta. CloudFormation continua l'operazione di rilevamento della deriva anche dopo aver chiuso la barra delle informazioni.
-
Per esaminare i risultati del rilevamento della deviazione per le istanze dello stack in un set di stack, selezionare la scheda Stack instances (Istanze di stack).
La colonna Stack name (Nome stack) elenca il nome dello stack associato a ogni istanza dello stack e la colonna di Drift status (Stato deviazione) elenca lo stato della deviazione di tale stack. Uno stack è considerato come deviato se una o più delle relative risorse risultano deviate.
-
Per esaminare i risultati del rilevamento della deviazione per lo stack associato a un'istanza dello stack specifica:
-
Scegli la scheda Operazioni.
-
Seleziona l'operazione di deviazione per la quale desideri visualizzare i risultati del rilevamento della deviazione. Un pannello di suddivisione mostrerà lo stato e il motivo dell'istanza dello stack per l'operazione selezionata. Per un'operazione di deviazione, la colonna del motivo dello stato mostra lo stato di deviazione di un'istanza stack.
-
Scegli l'istanza dello stack per cui desideri visualizzare i dettagli della deviazione, quindi seleziona Visualizza deviazioni delle risorse. Nella tabella Stato deviazione risorsasulla pagina Deviazione delle risorse elenca ogni risorsa di stack, il relativo stato di deviazione e l'ultima volta in cui è stato iniziato il rilevamento sulla risorsa. L'ID logico e l'ID fisico di ogni risorsa sono visualizzati per consentirti di identificarla.
-
-
È possibile ordinare le risorse in base al loro stato deviazione, utilizzando la colonna Drift (Deviazione).
Per visualizzare i dettagli su una risorsa modificata:
-
Con la risorsa selezionata, scegli Visualizza dettagli deviazione.
CloudFormation visualizza la pagina di dettaglio della deriva per quella particolare risorsa. Questa pagina elenca le differenze tra le risorse. Elenca anche i valori delle proprietà previsti e correnti della risorsa.
Nota
Se lo stack appartiene a una Regione e a un account diversi da quelli a cui sei attualmente connesso, il pulsante Rileva deviazione sarà disabilitato e non potrai visualizzare i dettagli.
-
Rileva la deriva su uno stack set ()AWS CLI
Per rilevare la deriva su un'intera pila utilizzando il AWS CLI, utilizzate la seguente procedura:
Per rilevare la deriva su un set di pile
-
Utilizzo dell'detect-stack-set-driftcomando per rilevare la deriva su un intero set di stack e sulle istanze di stack associate.
Nell'esempio seguente viene avviato il rilevamento della deviazione nel set di stack
stack-set-drift-example
.aws cloudformation detect-stack-set-drift \ --stack-set-name stack-set-drift-example
Output:
{ "OperationId": "c36e44aa-3a83-411a-b503-cb611example" }
-
Poiché le operazioni di rilevamento della deriva dello stack set possono essere un'operazione di lunga durata, utilizzate il describe-stack-set-operationcomando per monitorare lo stato dell'operazione di deriva. Questo comando utilizza l'ID dell'operazione della deviazione di stack restituito dal comando detect-stack-set-drift.
Negli esempi seguenti viene utilizzato l'ID operazione dell'esempio precedente per restituire informazioni sull'operazione di rilevamento della deviazione del set di stack. In questo esempio, l'operazione è ancora in esecuzione. Delle sette istanze dello stack associate a questo set di stack, un'istanza dello stack è già stata trovata deviata, due istanze sono sincronizzate e il rilevamento della deviazione per le restanti quattro istanze dello stack è ancora in corso. Poiché un'istanza è stata spostata, lo stato della deviazione del set di stack stesso è ora
DRIFTED
.aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example
Output:
{ "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" } }
Eseguendo lo stesso comando in un secondo momento, questo esempio mostra le informazioni restituite una volta completata l'operazione di rilevamento della deviazione. Due delle sette istanze di stack totali associate a questo set di stack sono deviate, rendendo lo stato di deviazione dello stack
DRIFTED
.aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example
Output:
{ "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" } }
-
Al termine dell'operazione di rilevamento della deviazione del set di stack, utilizza i comandi describe-stack-set, list-stack-instances, describe-stack-instance e list-stack-instance-resource-drifts per esaminare i risultati.
Il describe-stack-setil comando include le stesse informazioni dettagliate sulla deriva restituite dal describe-stack-set-operation comando.
aws cloudformation describe-stack-set \ --stack-set-name stack-set-drift-example
Output:
{ "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" } }
È possibile utilizzare il list-stack-instancescomando per restituire informazioni di riepilogo sulle istanze dello stack associate a un set di stack, incluso lo stato di deriva di ciascuna istanza dello stack.
In questo esempio, l'esecuzione di list-stack-instances sul set di stack di esempio con il filtro dello stato della deviazione impostato su
DRIFTED
consente di identificare le due istanze di stack che hanno uno stato di deviazione pari aDRIFTED
.aws cloudformation list-stack-instances \ --stack-set-name stack-set-drift-example \ --filters Name=DRIFT_STATUS,Values=DRIFTED
Output:
{ "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]
] }Il describe-stack-instancecommand restituisce anche queste informazioni, ma per una singola istanza dello stack, come nell'esempio seguente.
aws cloudformation describe-stack-instance \ --stack-set-name stack-set-drift-example \ --stack-instance-account 012345678910 --stack-instance-region us-east-1
Output:
{ "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" } }
-
Dopo aver identificato quali istanze dello stack sono andate alla deriva, puoi utilizzare le informazioni sulle istanze dello stack restituite dai comandi o per eseguire list-stack-instances describe-stack-instance list-stack-instance-resource-driftscomando. Questo comando restituisce informazioni dettagliate su quali risorse nello stack sono state deviate per una determinata operazione di deviazione.
L'esempio seguente utilizza il parametro
--stack-instance-resource-drift-statuses
per richiedere le informazioni sulla deviazione dello stack per le risorse che sono state modificate o eliminate nell'esempio dell'operazione di deviazione precedente. La richiesta restituisce informazioni sulla risorsa che è stata modificata, tra cui dettagli su due proprietà della stessa i cui valori sono stati modificati. Nessuna risorsa è stata eliminata.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
Output:
{ "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" } ] }
Arresto del rilevamento delle deviazioni su un set di stack
Poiché il rilevamento della deviazione in un set di stack può essere un'operazione a esecuzione prolungata, potrebbero esserci casi in cui si desidera interrompere un'operazione di rilevamento della deviazione attualmente in esecuzione su un set di stack.
Per interrompere il rilevamento della deriva su uno stack set (console)
-
Nella StackSetspagina, seleziona il nome dello stack set.
CloudFormation visualizza la pagina dei StackSets dettagli per il set di stack selezionato.
-
Nella pagina dei StackSets dettagli, selezionare la scheda Operazioni, quindi selezionare l'operazione di rilevamento della deriva.
-
Selezionare Stop operation (Interrompi operazione).
Per interrompere il rilevamento della deriva su uno stack set ()AWS CLI
-
Utilizzo dell'stop-stack-set-operationcomando. È necessario fornire sia il nome del set di stack sia l'ID operazione dell'operazione del set di stack di rilevamento della deviazione.
aws cloudformation stop-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id 624af370-311a-11e8-b6b7-500cexample