Minha pilha do AWS CloudFormation está presa no estado REVIEW_IN_PROGRESS.
Breve descrição
Uma pilha presa no estado REVIEW_IN_PROGRESS significa que você tentou criá-la usando um conjunto de alterações que não foi executado. Quando você cria um conjunto de alterações para uma nova pilha, o CloudFormation cria um ID de pilha exclusivo, mas sem recursos. Se você não executar o conjunto de alterações, a pilha permanecerá no estado REVIEW_IN_PROGRESS.
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS CLI.
Resolução
Conclua as etapas a seguir para executar um conjunto de alterações usando seu método preferido.
Usar o console do AWS CloudFormation
- Abra o console do AWS CloudFormation.
- No painel de navegação, escolha Stacks (Pilhas) e encontre a pilha que está presa.
- Escolha a guia Change Sets (Conjuntos de alterações).
- Selecione o último conjunto de alterações e revise as alterações.
- Escolha Run (Executar) para criar a pilha.
Usar a AWS Command Line Interface (AWS CLI)
1. Execute o seguinte comando list-change-sets para listar todos os conjuntos de alterações:
aws cloudformation list-change-sets --stack-name StackName
2. Identifique o conjunto de alterações e execute o seguinte comando execute-change-set:
aws cloudformation execute-change-set –change-set-name ChangeSetName
Usar o console do AWS CodePipeline
O uso do AWS CodePipeline para implantar no CloudFormation com o modo de ação Create or replace a change set (Criar ou substituir um conjunto de alterações) apenas cria ou substitui o conjunto de alterações. Ele não o executa automaticamente. Para executar o conjunto de alterações, você deve adicionar o modo de ação Execute a change set (Executar um conjunto de alterações).
- Abra o console do AWS CodePipeline.
- Identifique o pipeline que está sendo implantado no CloudFormation.
- Escolha Edit (Editar) e, em seguida, escolha Edit Deploy stage (Editar estágio de implantação).
- Escolha Add Action group (Adicionar grupo de ações).
- Em Action name (Nome da ação), insira o nome da ação.
- Para Action provider (Provedor de ação), selecione AWS CloudFormation.
- Para Action mode (Modo de ação), selecione Execute a change set (Executar um conjunto de alterações).
- Escolha Save (Salvar).
Usar a AWS CLI
1. Execute o seguinte comando get-pipeline para copiar a estrutura do pipeline em um arquivo JSON:
aws codepipeline get-pipeline --name MyPipeline >pipeline.json
2. Adicione CHANGE_SET_EXECUTE como ActionMode no estágio Deploy (Implantar):
{
"name": "Deploy",
"blockers": null,
"actions": [
{
"name": "Deploy",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"provider": "CloudFormation",
"version": "1"
},
"runOrder": 1,
"configuration": {
"TemplatePath": "SourceArtifact::ssm.yml",
"ActionMode": "CHANGE_SET_REPLACE",
"Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
"ChangeSetName": "CFNTest-CS",
"RoleArn": "arn:aws:iam::xxxxx:role/xxx",
"StackName": "CFNTest"
},
"outputArtifacts": [],
"inputArtifacts": [
{
"name": "SourceArtifact"
}
],
"roleArn": null,
"region": "us-east-1",
"namespace": "DeployVariables"
},
{
"name": "ExecuteChangeSet",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"provider": "CloudFormation",
"version": "1"
},
"runOrder": 2,
"configuration": {
"ActionMode": "CHANGE_SET_EXECUTE",
"ChangeSetName": "CFNTest-CS",
"StackName": "CFNTest"
},
"outputArtifacts": [],
"inputArtifacts": [
{
"name": "SourceArtifact"
}
],
"roleArn": null,
"region": "us-east-1",
"namespace": null
}
]
}
3. Execute o seguinte comando update-pipeline para copiar o pipeline em um arquivo JSON:
aws codepipeline update-pipeline --cli-input-json file://pipeline.json