

# Solução de problemas de CloudFormation StackSets
<a name="stacksets-troubleshooting"></a>

Este tópico contém alguns problemas comuns do StackSets e soluções sugeridas para esses problemas.

**Topics**
+ [Motivos comuns de falha na operação da pilha](#common-reasons-for-stack-operation-failure)
+ [Realizar novamente operações de criação ou atualização de pilha com falha](#retrying-failed-stack-creation-or-update-operations)
+ [Falha de exclusão de instância de pilha](#stack-instance-delete-fails)
+ [Falha na operação de importação de pilhas](#stack-import-fails)
+ [Contagem de falhas de instâncias de pilha para operações do StackSets](#stack-instance-failure-count-for-stackset-operations)

## Motivos comuns de falha na operação da pilha
<a name="common-reasons-for-stack-operation-failure"></a>

**Problema:** uma operação de pilha falhou, e o status da instância de pilha é `OUTDATED`.

**Causa:** pode haver várias causas comuns para a falha na operação da pilha.
+ Permissões insuficientes em uma conta de destino para criar recursos especificados no seu modelo.
+ O modelo do CloudFormation pode conter erros. Valide o modelo no CloudFormation e corrija os erros antes de tentar criar seu StackSet.
+ O modelo pode estar tentando criar recursos globais que precisam ser únicos, mas não são. Por exemplo, os buckets do S3.
+ Não existe um número de conta de destino especificado. Verifique os números da conta de destino que você especificou na página **Definir opções de implantação** do assistente.
+ A conta de administrador não possui uma relação de confiança com a conta de destino.
+ A quantidade máxima especificada para um recurso no seu modelo já existe na sua conta de destino. Por exemplo, você pode ter atingido o limite de permitido de funções IAM em uma conta de destino, mas o modelo cria mais funções IAM.
+ Você atingiu a quantidade máxima permitida de pilhas em um StackSet. Para saber a quantidade máxima de pilhas por StackSet, consulte [Entender as cotas do CloudFormation](cloudformation-limits.md).

**Solução:** para obter mais informações sobre as permissões necessárias das contas de destino e administrador antes de criar StackSets, consulte [Concessão de permissões para o gerenciamento de pilhas em todas as contas de destino a todos os usuários da conta do administrador](stacksets-prereqs-self-managed.md#stacksets-prereqs-accountsetup).

## Realizar novamente operações de criação ou atualização de pilha com falha
<a name="retrying-failed-stack-creation-or-update-operations"></a>

**Problema:** uma operação de criação ou atualização de pilha falhou, e o status da instância de pilha é `OUTDATED`. Para saber o motivo da falha de uma tentativa de criação ou atualização de pilha, abra o console do CloudFormation e veja os eventos da pilha, que exibirão um status `DELETED` (para operações de criação com falha) ou `FAILED` (para operações de atualização com falha). Navegue pelos eventos de pilha e localize a coluna **Motivo do status**. O valor de **Motivo do status** explica o motivo da falha na operação.

Depois de corrigir a causa subjacente da falha na criação da pilha, você poderá tentar realizar a criação da pilha novamente. Para isso, execute as etapas a seguir.

**Solução:** execute as seguintes etapas para tentar realizar a operação da pilha novamente.

1. No console, selecione o StackSet que contém a pilha em que a operação falhou.

1. No menu **Actions (Ações)**, escolha **Edit StackSet details (Editar detalhes do StackSet)** para tentar criar ou atualizar as pilhas novamente.

1. Na página **Especificar modelo**, mantenha a opção padrão **Usar modelo atual** para usar o mesmo modelo do CloudFormation. Se sua operação de pilha falhou porque o modelo necessário foi alterado e você deseja enviar um modelo revisado, escolha **Carregar um modelo no Amazon S3** e, em seguida, **Procurar** para selecionar o modelo atualizado. Quando você terminar de carregar do modelo revisado, escolha **Próximo**.

1. Na página **Especificar detalhes da pilha**, escolha **Próximo** se você não estiver alterando nenhum parâmetro específico do modelo.

1. Na página **Definir opções de implantação**, altere os padrões para **Máximo de contas simultâneas** e **Tolerância a falhas**, se desejar. Para ter mais informações sobre essas configurações, consulte [Opções de operação de StackSets](stacksets-concepts.md#stackset-ops-options).

1. Na página **Revisão**, revise suas seleções e marque a caixa de seleção para confirmar os recursos do IAM necessários. Selecione **Enviar**.

1. Se sua pilha não for atualizada com êxito, repita este procedimento depois de ter resolvido todos os problemas subjacentes que estejam impedindo a criação de pilhas.

## Falha de exclusão de instância de pilha
<a name="stack-instance-delete-fails"></a>

**Problema:** houve uma falha de exclusão de pilha.

**Causa:** a exclusão de pilha falhará para as pilhas em que a proteção contra encerramento foi ativada.

**Solução:** determine se a proteção contra encerramento foi ativada para a pilha. Caso tenha sido, desative a proteção contra encerramento e, em seguida, execute a exclusão de instância de pilha novamente.

## Falha na operação de importação de pilhas
<a name="stack-import-fails"></a>

**Problema:** uma operação de importação de pilhas falha ao importar pilhas existentes para StackSets novos ou existentes. A instância da pilha está em um status `INOPERABLE`.

**Solução:** reverta a operação de importação de pilhas, concluindo as seguintes tarefas.

1. Use a opção **Excluir pilhas do StackSets**, habilite **RetainStacks** durante a configuração e depois exclua instâncias de pilha do seu StackSet. Para obter mais informações, consulte [Excluir pilhas do CloudFormation StackSets](stackinstances-delete.md).

1. Você verá que as instâncias de pilha do StackSet são atualizadas para remover a instância de pilha `INOPERABLE`.

1. Corrija as instâncias da pilha de acordo com o erro de falha na importação e repita a operação de importação da pilha.

## Contagem de falhas de instâncias de pilha para operações do StackSets
<a name="stack-instance-failure-count-for-stackset-operations"></a>

A contagem de falhas de instâncias de pilha alerta você se houver falha no provisionamento ou na atualização de instâncias de pilha. Essas instâncias da pilha não foram implantados por um ou mais dos seguintes motivos:
+ Recursos existentes com uma configuração semelhante
+ Dependências ausentes, como perfis do AWS Identity and Access Management (IAM)
+ Outros fatores conflitantes

Se você quiser implantar com o máximo de simultaneidade, a contagem máxima de simultaneidade é uma mais do que a contagem de tolerância a falhas. Por exemplo, se a contagem de tolerância a falhas for 9, a contagem máxima de simultaneidade não poderá ser maior que 10. Isso fará com que a operação retorne `SUCCEEDED` mesmo se houver falha algumas na atualização de algumas instâncias de pilha. A nova contagem de falhas de instâncias de pilha permite que você determine se a operação só foi bem-sucedida condicionalmente porque a contagem de tolerância a falhas está definida para permitir todas as falhas.

Você pode usar o Console de gerenciamento da AWS, o AWS SDK ou a AWS CLI para obter a contagem de falhas e filtrar as instâncias de pilha para determinar quais instâncias precisam ser reimplantadas.

### Utilizar o console
<a name="stack-instance-failure-count-for-stackset-operations-console-examples"></a>

**Para ver o número de instâncias de pilha em que houve falha:**

1. Abra o [console do CloudFormation](https://console.aws.amazon.com/cloudformation) e escolha **StackSets**.

1. Escolha o StackSet e selecione a guia **Operações**.

1. Escolha um status na coluna **Status** para visualizar detalhes do status. Você encontrará o número de instâncias de pilha em que houve falha para uma determinada operação nos detalhes do status.

**Para visualizar a conta, a região e o status das instâncias de pilha para a operação:**

1. Nos detalhes do status, escolha a contagem das instâncias de pilha em que houve falha. *Exemplo:* **instâncias de pilha: `<number of failed stack instances>`**.

1. Expanda o painel lateral escolhendo o cabeçalho do painel. Os resultados no painel lateral são os status das instâncias de pilha após a conclusão da operação selecionada.

**Para ver os detalhes da instância de pilha atual para uma operação:**

1. Escolha a guia **Stack Instances** (Instâncias de pilha).

1. Filtre por **Last operation ID** (ID da última operação). Os resultados são os status atuais e os motivos dos status da última operação a modificar a instância. É possível usar esse filtro em combinação com **Conta da AWS**, **Região da AWS**, **Status detalhado** e **Status de desvio** para refinar ainda mais os resultados da pesquisa.

### Como usar o AWS CLI
<a name="stack-instance-failure-count-for-stackset-operations-cli-examples"></a>

Para obter o número de instâncias de pilha em que houve falha, chame `describe-stack-set-operation` ou `list-stack-set-operations` e consulte `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
            }
        }
    ]
}
```

Para obter uma visão geral histórica de uma determinada operação, use `list-stack-set-operation-results` para visualizar o status e o motivo do status de cada instância de pilha após a conclusão da operação. Veja `Status` e `StatusReason` no seguinte exemplo:

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

Use `list-stack-instances` com os filtros `DETAILED_STATUS` e `LAST_OPERATION_ID` para obter uma lista das instâncias de pilha em que houve falha na última operação que tentou implantar a instância de pilha. Veja o sinalizador `--filters` no exemplo com `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"
        }
    ]
}
```

Para encontrar o ID da última operação para modificar uma instância de pilha, use `list-stack-instances` ou `describe-stack-instance` para obter o `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"
    }
}
```