Conjuntos de alteração para pilhas aninhadas - AWS CloudFormation

Conjuntos de alteração para pilhas aninhadas

Com os conjuntos de alterações para pilhas aninhadas, você pode visualizar as alterações nos recursos de suas aplicações e infraestrutura em toda a hierarquia de pilha aninhada, dando continuidade às atualizações após confirmar que todas as alterações estejam conforme pretendido.

Consulte as seguintes seções para obter mais detalhes sobre conjuntos de alterações para pilhas aninhadas:

Visão geral de conjuntos de alterações e pilhas aninhadas

Os conjuntos de alterações para pilhas aninhadas combinam os seguintes recursos para expandir o escopo da visualização de alterações para toda a hierarquia de pilha:

  • Os conjuntos de alterações são um recurso do CloudFormation que oferece uma visualização de como alterações propostas em uma pilha afetarão recursos existentes ou recém-criados. Ao criar um conjunto de alterações, o CloudFormation fornece uma lista de alterações propostas, fazendo uma comparação entre sua pilha e as alterações nos recursos que você enviou. Para mais informações sobre conjuntos de alterações, consulte Como atualizar pilhas usando conjuntos de alterações.

  • As pilhas aninhadas são criadas como parte de outras pilhas. Para criar uma pilha aninhada, especifique o recurso AWS::CloudFormation::Stack na seção Resource do seu modelo. Por exemplo, talvez você tenha recursos relacionados a redes e segurança em uma pilha aninhada e recursos de aplicação em outra. Fazer o particionamento de modelos de aplicação dessa forma ajuda na capacidade de manutenção e reutilização de código. Para mais informações sobre pilhas aninhadas, consulte Como trabalhar com pilhas aninhadas.

Como trabalhar com conjuntos de alterações para pilhas aninhadas (console)

  • Criar um conjunto de alterações – Cria um conjunto de alterações mediante o envio de alterações com base em qualquer nível da hierarquia de pilha. Você pode enviar um modelo modificado de pilha ou valores modificados de parâmetro de entrada e o CloudFormation compara sua pilha aninhada às alterações que você enviou para gerar um conjunto de alterações. Os conjuntos de alterações para pilhas aninhadas são habilitados por padrão no console do CloudFormation. Para mais informações, consulte Como criar um conjunto de alterações.

    
                        A opção Criar um conjunto de alterações para pilhas aninhadas está habilitada por padrão.
    nota

    Um conjunto raiz de alterações é o conjunto de alterações associado à pilha com base na qual toda a hierarquia de conjuntos de alterações é criada. Você deve executar ou excluir conjuntos de alterações para pilhas aninhadas com base no conjunto raiz de alterações.

  • Visualizar o conjunto de alterações: visualize as alterações nos recursos dentro de pilhas aninhadas antes de executá-las. Você pode ver as alterações propostas na seção Alterações do seu conjunto de alterações navegando pela pilha atual e pelos respectivos conjuntos de alterações aninhados. Para mais informações, consulte Como visualizar um conjunto de alterações.

  • Executar o conjunto de alterações – Execute as alterações descritas no conjunto de alterações que pertencem à pilha atual e aos seus descendentes. A operação de execução deve ser feita a partir do conjunto raiz de alterações. Para mais informações, consulte Como executar um conjunto de alterações.

  • Excluir o conjunto de alterações – Remove os conjuntos de alterações da pilha atual. A exclusão de um conjunto de alterações ajuda a impedir que você ou outro usuário inicie acidentalmente um conjunto de alterações que não deva ser aplicado. A operação de exclusão deve ser executada com base no conjunto raiz de alterações. Para mais informações, consulte Como excluir um conjunto de alterações.

Como trabalhar com conjuntos de alterações para pilhas aninhadas (AWS CLI)

  • create-change-set: conjuntos de alterações para pilhas aninhadas não são habilitados por padrão para o AWS CLI. Para criar um conjunto de alterações para toda a hierarquia de pilha, especifique o parâmetro --include-nested-stacks. Para obter mais informações, consulte Para criar um conjunto de alterações (AWS CLI).

O seguinte exemplo do AWS CLI é de uma entrada de create-change-set.

aws cloudformation create-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set \ --template-body file://template.yaml \ --capabilities CAPABILITY_IAM \ --include-nested-stacks

O seguinte exemplo do AWS CLI é de uma saída de create-change-set.

{ "Id":"arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:Stack/my-root-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204" }
  • describe-change-set – Retorna uma lista de alterações que o CloudFormation fará se você executar o conjunto de alterações. Se o conjunto de alterações especificado contiver conjuntos filhos de alterações que pertençam a pilhas aninhadas, ChangeSetId retornará informações sobre esse conjunto de alterações. Para obter mais informações, consulte Para visualizar um conjunto de alterações (AWS CLI).

O seguinte exemplo do AWS CLI é de uma entrada de describe-change-set para o conjunto de alterações de pilha raiz.

aws cloudformation describe-change-set \ --change-set-name my-root-stack-change-set \ --stack-name my-root-stack

O seguinte exemplo do AWS CLI é de uma saída de describe-change-set para o conjunto de alterações de pilha raiz.

{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "ChildStack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-nested-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ResourceType": "AWS::CloudFormation::Stack", "Replacement": "False", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "RequiresRecreation": "Never" }, "Evaluation": "Dynamic", "ChangeSource": "Automatic" } ] } } ], "ChangeSetName": "my-root-stack-change-set", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-root-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "StackName": "my-root-stack", "IncludeNestedStacks": true, "ParentChangeSetId": null, "RootChangeSetId": null, "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": null, "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }

O seguinte exemplo do AWS CLI é de uma entrada de describe-change-set para o conjunto de alterações de pilha aninhada.

aws cloudformation describe-change-set \ --change-set-name my-nested-stack-change-set \ --stack-name my-nested-stack

O seguinte exemplo do AWS CLI é de uma saída de describe-change-set para o conjunto de alterações de pilha aninhada.

{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "function", "PhysicalResourceId": "my-function", "ResourceType": "AWS::Lambda::Function", "Replacement": "False", "ChangeSetId": null, "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "Name": "Timeout", "RequiresRecreation": "Never" }, "Evaluation": "Static", "ChangeSource": "DirectModification" } ] } } ], "ChangeSetName": "my-nested-stack-change-set", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-nested-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ParentChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "RootChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "IncludeNestedStacks": true, "StackName": "my-nested-stack", "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "UNAVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": "Executable from root change set", "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }
  • execute-change-set – Cria ou atualiza uma pilha usando as informações de entrada fornecidas quando o conjunto de alterações especificado foi criado. Para criar um conjunto de alterações para toda a hierarquia de pilha, você precisa especificar o parâmetro –include-nested-stacks durante o processo create-change-set. Para obter mais informações, consulte Para executar um conjunto de alterações (AWS CLI).

    nota

    execute-change-set deve ser executado com base no conjunto raiz de alterações e aplicará o conjunto de alterações em toda a hierarquia de pilhas.

O seguinte exemplo do AWS CLI é de uma entrada de execute-change-set.

aws cloudformation execute-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set
  • delete-change-set – Exclui o conjunto de alterações especificado. A exclusão de conjuntos de alterações garante que ninguém use o conjunto de alterações errado. A exclusão de conjuntos de alterações é assíncrona para conjuntos de alterações criados com o parâmetro –include-nested-stacks. Para obter mais informações, consultePara excluir um conjunto de alterações (AWS CLI)

    nota

    delete-change-set deve ser executado com base no conjunto raiz de alterações e excluirá toda a hierarquia de conjuntos de alterações. As pilhas aninhadas com status REVIEW_IN_PROGRESS também serão excluídas se tiverem sido criadas durante a operação create-change-set.

O seguinte exemplo do AWS CLI é de uma entrada de delete-change-set para o conjunto raiz de alterações.

aws cloudformation delete-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set