Risoluzione dei problemi AWS CloudFormation StackSets - 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 AWS CloudFormation StackSets

Questo argomento contiene alcuni AWS CloudFormation StackSets problemi comuni e le relative soluzioni suggerite.

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 AWS CloudFormation modello potrebbe contenere errori. Convalida il modello AWS CloudFormation e correggi gli errori prima di provare a creare il tuo set di stack.

  • È 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, potresti aver raggiunto il limite di IAM ruoli consentiti in un account di destinazione, ma il modello crea più IAM ruoli.

  • Hai raggiunto il numero massimo di stack consentiti in un set di stack. Consulta Limiti AWS CloudFormation per il numero massimo di stack per set di stack.

Soluzione: per ulteriori informazioni sulle autorizzazioni necessarie per gli account amministratore e target prima di poter creare set di stack, vedi Concedi 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 il motivo per cui la creazione o l'aggiornamento di uno stack non sono riusciti, apri la AWS CloudFormation console e visualizza gli eventi dello stack, che avrà lo stato di DELETED (per operazioni di creazione non riuscite) o FAILED (per 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 il set di stack che contiene lo stack per cui l'operazione non è riuscita.

  2. Nel menu Azioni, scegliete Modifica StackSet dettagli per riprovare a creare o aggiornare gli stack.

  3. Nella pagina Specify template (Specifica modello), per utilizzare lo stesso modello AWS CloudFormation , mantenere l'opzione predefinita Use current template (Utilizza 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 Specificare i dettagli dello stack, se non state modificando alcun parametro specifico del modello, scegliete 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 Opzioni per le operazioni dei set di stack.

  6. Nella pagina Revisione, rivedi le tue selezioni e compila la casella di controllo per confermare le funzionalità richieste. IAM 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 set di stack 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. Utilizzate l' StackSetsopzione Delete Stacks from e RetainStacksabilitatela durante la configurazione, quindi procedete all'eliminazione delle istanze dello stack dal set di stack. Per ulteriori informazioni, per ulteriori informazioni, vedere. Eliminare le istanze dello stack utilizzando la console o CloudFormation AWS CLI

  2. Vedrai che l'istanza stack dello Stackset viene aggiornata 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 dello 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, come i 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.

È possibile utilizzare AWS Management Console AWS SDK, o AWS CLI per ottenere il conteggio degli errori e filtrare le istanze dello stack per determinare quali istanze devono essere ridistribuite.

Utilizzo della console

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

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