Risoluzione dei problemi di StackSet CloudFormation - AWS CloudFormation

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à.

Risoluzione dei problemi di StackSet CloudFormation

In questo argomento sono inclusi alcuni problemi comuni relativi agli StackSet e le corrispondenti soluzioni consigliate.

Motivi comuni per operazioni di stack non riuscite

Problema: un'operazione di stack non è riuscita e lo stato dell'istanza di stack è OUTDATED.

Causa: esistono diverse cause comuni per le operazioni di stack non riuscite.

  • Autorizzazioni insufficienti in un account target per la creazione delle risorse specificate nel modello.

  • Il modello CloudFormation potrebbe presentare errori. Convalida il modello in CloudFormation e correggi gli errori prima di provare a creare lo StackSet.

  • È possibile che il modello stia provando a creare le risorse globali che devono essere univoche, ma non lo sono, ad esempio i bucket S3.

  • Non esiste un numero di account target specificato. Controlla i numeri di account target specificati nella pagina Set deployment options (Imposta opzioni di distribuzione) della procedura guidata.

  • L'account amministratore non ha una relazione di trust con l'account target.

  • Nell'account target è già presente il numero massimo di una risorsa specificato nel modello. Ad esempio, è possibile che sia stato raggiunto il limite di ruoli IAM consentiti in un account target, ma il modello crea un numero maggiore di ruoli IAM.

  • Hai raggiunto il numero massimo di stack consentiti in uno StackSet. Consulta Comprendere le quote di CloudFormation per il numero massimo di stack per StackSet.

Soluzione: per ulteriori informazioni sulle autorizzazioni necessarie per gli account amministratore e target prima di poter creare StackSet, vedi Concedere a tutti gli utenti dell’account amministratore le autorizzazioni per gestire gli stack in tutti gli account di destinazione.

Nuovo tentativo di operazioni di creazione o aggiornamento d stack non riuscite

Problema: un'operazione di creazione o aggiornamento di stack non è riuscita e lo stato dell'istanza di stack è OUTDATED. Per risolvere i problemi relativi alla creazione o all’aggiornamento di uno stack, aprire la console CloudFormation e visualizzare gli eventi per lo stack il cui stato è DELETED (per le operazioni di creazione non riuscite) o FAILED (per le operazioni di aggiornamento non riuscite). Sfogliare gli eventi di stack e individuare la colonna Status reason (Motivo dello stato). Il valore di Status reason (Motivo dello stato) spiega perché l'operazione dello stack non è riuscita.

Dopo aver corretto la causa alla base dell'errore di creazione dello stack e si è pronti per riprovare, eseguire la procedura riportata di seguito.

Soluzione: eseguire la procedura seguente per riprovare l'operazione di stack.

  1. Nella console selezionare lo StackSet che contiene lo stack per cui l’operazione non è riuscita.

  2. Nel menu Actions (Operazioni), scegliere Edit StackSet details (Modifica dettagli Stackset) per provare a ricreare o ad aggiornare gli stack.

  3. Nella pagina Specifica modello, per utilizzare lo stesso modello CloudFormation, mantieni l’opzione predefinita Utilizza il modello corrente. Se l'operazione di stack non è riuscita perché il modello richiedeva modifiche e si desidera caricare un modello aggiornato, scegliere invece Upload a template to Amazon S3 (Carica un modello in Amazon S3), quindi selezionare Browse (Sfoglia) per selezionare il modello aggiornato. Dopo aver caricato il modello aggiornato, scegliere Next (Avanti).

  4. Nella pagina Specifica i dettagli, se non intendi modificare parametri specifici del modello, scegli Avanti.

  5. Nella pagina Set deployment options (Imposta opzioni di distribuzione), se si desidera, modificare le impostazioni predefinite per Maximum concurrent accounts (Numero massimo di account simultanei) e Failure tolerance (Tolleranza ai guasti). Per ulteriori informazioni su queste impostazioni, consultare StackSet opzioni operative.

  6. Nella pagina Review (Revisione) rivedere le selezioni e indicare con un segno di spunta di aver preso visione delle funzionalità IAM richieste. Scegli Invia.

  7. Se lo stack non viene aggiornato, ripetere questa procedura dopo aver risolto eventuali problemi sottostanti che impediscono di creare lo stack.

L'eliminazione dell'istanza di stack non riesce

Problema: non è stato possibile eliminare uno stack.

Causa: non è possibile eliminare gli stack per cui è stata abilitata la protezione da cessazione.

Soluzione: verificare se per lo stack è stata abilitata la protezione da cessazione. In caso affermativo, disabilitare la protezione da cessazione, quindi eseguire nuovamente l'eliminazione dell'istanza dello stack.

L'operazione di importazione di stack ha esito negativo

Problema: un’operazione di importazione di stack non riesce a importare stack esistenti in StackSet nuovi o esistenti. L'istanza di stack si trova in uno stato INOPERABLE.

Soluzione: ripristinare l'operazione di importazione di stack, completando le seguenti attività.

  1. Usa l’opzione Delete Stacks from StackSets e abilita RetainStacks durante la configurazione, quindi procedi all’eliminazione delle istanze dello stack dal tuo StackSet. Per ulteriori informazioni, consulta Elimina gli stack dagli StackSet CloudFormation.

  2. Vedrai che le istanze di stack dello Stackset vengono aggiornate per rimuovere l’istanza dello stack INOPERABLE.

  3. Correggi le istanze dello stack in base all'errore di importazione non riuscita e riprova l'operazione di importazione dello stack.

Numero di errori delle istanze di stack per le operazioni StackSets

Il numero degli errori delle istanze di stack ti avvisa se le istanze di stack non vengono fornite o aggiornate. Queste istanze di stack non sono state implementate a causa di uno o più motivi di seguito indicati:

  • Risorse esistenti con una configurazione simile

  • Dipendenze mancanti, ad esempio ruoli AWS Identity and Access Management (IAM)

  • Altri fattori in conflitto

Per l'implementazione con la massima simultaneità, il numero massimo di simultaneità è maggiore di almeno un'unità rispetto al numero di tolleranze di errori. Ad esempio, se il numero di tolleranze di errori è 9, il numero massimo di simultaneità non può essere superiore a 10. In tal modo, l'operazione restituisce SUCCEEDED anche se alcune istanze di stack non vengono aggiornate. Il nuovo numero degli errori delle istanze di stack consente di determinare se l'operazione è riuscita solo in maniera condizionale poiché il numero di tolleranze di errori è impostato per consentire tutti gli errori.

Puoi utilizzare la Console di gestione AWS, AWSSDK o la AWS CLI per ottenere il numero di errori e filtrare le istanze di stack per determinare le istanze che richiedono una nuova implementazione.

Utilizzo della console

Per visualizzare il numero di istanze di stack non riuscite:
  1. Apri la console CloudFormation e scegli Crea stack.

  2. Scegli il tuo StackSet, quindi scegli la scheda Operazioni.

  3. Scegli uno stato nella colonna Stato per visualizzare i dettagli dello stato. Troverai il numero di istanze di stack non riuscite per un'operazione particolare nei dettagli dello stato.

Per visualizzare l'account, la regione e lo stato delle istanze di stack per l'operazione:
  1. Nei dettagli dello stato, scegli il numero di istanze di stack non riuscite. Esempio: Istanze di stack: <number of failed stack instances>.

  2. Espandi il pannello laterale scegliendo l'intestazione del pannello. I risultati nel pannello laterale sono gli stati delle istanze di stack dopo il completamento dell'operazione selezionata.

Per visualizzare i dettagli dell'istanza di stack corrente per un'operazione:
  1. Scegli la scheda Istanze stack.

  2. Filtra per ID ultima operazione. I risultati sono gli stati correnti e i relativi motivi dall'ultima operazione di modifica dell'istanza. Puoi utilizzare questo filtro in combinazione con Account AWS, Regione AWS, Stato dettagliato e Stato deviazione per restringere ulteriormente i risultati della ricerca.

Utilizzando AWS CLI

Per ottenere il numero di istanze di stack non riuscite, richiama describe-stack-set-operation o list-stack-set-operations e consulta StatusDetails.

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 } } ] }

Per ottenere una panoramica cronologica di una particolare operazione, usa list-stack-set-operation-results per visualizzare lo stato e il relativo motivo per ogni istanza di stack dopo il completamento dell'operazione. Consulta l'esempio seguente per trovare Status e 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": "" } ] }

Usa list-stack-instances con i filtri DETAILED_STATUS e LAST_OPERATION_ID per ottenere un elenco di istanze di stack non riuscite nell'ultima operazione che ha tentato l'implementazione dell'istanza di stack. Consulta il contrassegno --filters nell'esempio con DETAILED_STATUS e LAST_OPERATION_ID:

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" } ] }

Per individuare l'ID dell'ultima operazione per modificare un'istanza di stack, usa list-stack-instances o describe-stack-instance per ottenere LastOperationId:

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" } }