Este é o novo Guia de referência de modelos do CloudFormation. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o Guia do usuário do AWS CloudFormation.
UpdatePolicyAtributo
Use o atributo UpdatePolicy para especificar como o CloudFormation lida com as atualizações de certos recursos durante as operações de atualização de pilha.
Tópicos
Visão geral
Usando o atributo UpdatePolicy, você pode controlar como os seguintes recursos são atualizados, como descrito aqui:
-
AWS::AppStream::Fleet: o CloudFormation pode parar e iniciar uma frota, o que faz com que das instâncias da frota sejam substituídas. Fazendo isso, as alterações mais recentes serão aplicadas imediatamente após uma atualização da pilha.
-
AWS::AutoScaling::AutoScalingGroup – com os grupos do Auto Scaling, você pode usar uma ou mais políticas de atualização para controlar como o CloudFormation lida com determinadas atualizações. Essas políticas incluem:
-
Políticas de
AutoScalingReplacingUpdateeAutoScalingRollingUpdate: o CloudFormation pode substituir o grupo do Auto Scaling e suas instâncias por uma política deAutoScalingReplacingUpdateou pode substituir apenas as instâncias por uma política deAutoScalingRollingUpdate. Essas operações de substituição ocorrem quando você faz uma ou mais das seguintes alterações:-
Altera a AWS::AutoScaling::LaunchConfiguration do grupo do Auto Scaling.
-
Altera a propriedade
VPCZoneIdentifierdo grupo do Auto Scaling. -
Altera a propriedade
LaunchTemplatedo grupo do Auto Scaling. -
Altera a propriedade
PlacementGroupdo grupo do Auto Scaling. -
Atualiza um grupo de Auto Scaling que contém instâncias que não correspondem à atual
LaunchConfiguration.
Se ambas as políticas
AutoScalingReplacingUpdateeAutoScalingRollingUpdateforem especificadas, a definição da propriedadeWillReplaceparatruedá precedência aAutoScalingReplacingUpdate. -
-
Política
AutoScalingInstanceRefresh: o CloudFormation executa uma atualização de instância do Auto Scaling quando você altera determinadas propriedades do grupo do Auto Scaling. Em comparação comAutoScalingRollingUpdate, essa política oferece suporte a políticas de manutenção de instâncias (incluindo lançamento antes do encerramento), políticas de encerramento, proteção de redução horizontal, substituição do volume raiz e recursos adicionais do Amazon EC2 Auto Scaling. Você não pode especificarAutoScalingInstanceRefresheAutoScalingRollingUpdateno mesmo grupo do Auto Scaling. Para obter mais informações, consulte a Política AutoScalingInstanceRefresh. -
Política de
AutoScalingScheduledAction: essa política se aplica quando você atualiza uma pilha que inclui um grupo do Auto Scaling com ações programadas que escalam o grupo em horários específicos. O CloudFormation não pode modificar o tamanho mínimo, o tamanho máximo nem a capacidade desejada do grupo a menos que esses valores tenham sido explicitamente alterados no modelo de pilha. Essa política ajuda a evitar atualizações inesperadas que poderiam interferir nas atividades de escalação agendadas.
-
-
AWS::ElastiCache::ReplicationGroup – o CloudFormation pode modificar fragmentos de um grupo de replicação adicionando ou removendo fragmentos em vez de substituir todo o recurso.
-
AWS::OpenSearchService::Domain e AWS::Elasticsearch::Domain (legados): o CloudFormation pode atualizar um domínio do OpenSearch Service para uma nova versão do OpenSearch ou do Elasticsearch sem substituir o recurso inteiro.
-
AWS::Lambda::Alias – o CloudFormation pode realizar uma implantação do CodeDeploy quando a versão muda no alias.
As seções a seguir descrevem a sintaxe e as propriedades do atributo UpdatePolicy compatível com cada tipo de recurso.
Política de atualização do WorkSpaces Applications
Para parar uma frota do WorkSpaces Applications antes de uma atualização e reiniciá-la após uma atualização, use a política de atualização do WorkSpaces Applications.
Sintaxe
JSON
{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }
YAML
UpdatePolicy: StopBeforeUpdate: Type:BooleanStartAfterUpdate: Type:Boolean
StopBeforeUpdate-
Interrompe a frota especificada antes da atualização.
Obrigatório: não
StartAfterUpdate-
Inicia a frota especificada após a atualização.
Obrigatório: não
Política AutoScalingReplacingUpdate
Para substituir o grupo do Auto Scaling e as instâncias nele contidas, use a política de AutoScalingReplacingUpdate.
Antes de executar uma atualização, verifique se há capacidade suficiente no Amazon EC2 para os novos e antigos grupos de Auto Scaling.
Sintaxe
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" :Boolean} }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace:Boolean
Propriedades
WillReplace-
Especifica se um grupo do Auto Scaling e as instâncias que ele contém serão substituídos durante uma atualização. Durante a substituição, o CloudFormation retém o grupo antigo até que ele termine a criação do novo. Se a atualização falhar, o CloudFormation poderá reverter para o grupo de Auto Scaling antigo e excluir o grupo de Auto Scaling novo.
Embora o CloudFormation crie o novo grupo, ele não desanexa nem anexa as instâncias. Após criar com êxito o novo grupo do Auto Scaling, o CloudFormation excluirá o grupo de Auto Scaling antigo durante o processo de limpeza.
Quando você definir o parâmetro
WillReplace, lembre-se de especificar um Atributo CreationPolicy correspondente. Se o número mínimo de instâncias (especificado pela propriedadeMinSuccessfulInstancesPercent) não indicar sucesso dentro doTimeout(especificado no atributoCreationPolicy), haverá falha na atualização de substituição e o CloudFormation reverterá para o grupo do Auto Scaling antigo.Tipo: booliano
Obrigatório: não
Política AutoScalingRollingUpdate
Para realizar uma atualização contínua das instâncias de um grupo do Auto Scaling em vez de esperar que as atividades de escalação substituam gradualmente as instâncias mais antigas por mais novas, use a política de AutoScalingRollingUpdate. Essa política oferece a flexibilidade de especificar se o CloudFormation substitui as instâncias que estão em um grupo do Auto Scaling em lotes ou de uma só vez sem substituir todo o recurso.
Coisas a considerar ao usar uma política do AutoScalingRollingUpdate:
Atenção
As atualizações contínuas não respeitam a política de manutenção de instâncias configurada no seu grupo do Auto Scaling. Durante uma atualização contínua, a capacidade íntegra pode ficar abaixo do MinHealthyPercentage definido no grupo, e o CloudFormation não lança novas instâncias antes de encerrar as existentes, independentemente de MaxHealthyPercentage. Para preservar sua política de manutenção de instâncias durante as atualizações da pilha, use Política AutoScalingInstanceRefresh em vez disso.
-
Quando o CloudFormation reverte uma atualização, ele usa a configuração da
UpdatePolicyespecificada no modelo antes da atualização da pilha atual. Por exemplo, você alteraMaxBatchSizede 1 para 10 naUpdatePolicy, executa uma atualização de pilha e ocorre uma falha na atualização. O CloudFormation usará 1, e não 10, como o tamanho máximo de lote quando reverter. Para evitar que isso ocorra, faça as alterações naUpdatePolicyem uma atualização separada antes de fazer qualquer atualização que provavelmente iniciará atualizações contínuas no grupo do Auto Scaling. -
O CloudFormation recomenda especificar a propriedade
SuspendProcessespara suspender temporariamente os processos do Amazon EC2 Auto Scaling que possam interferir na atualização contínua e causar sua falha. Consulte mais informações em Como posso atualizar corretamente meu grupo do Auto Scaling ao atualizar minha pilha do CloudFormation?Como alternativa, a política
AutoScalingInstanceRefreshdá suporte a todos os processos do grupo do Auto Scaling durante as atualizações da pilha, para que você não precise suspendê-los. Se você precisar que processos como verificações de integridade e rebalanceamento de AZ permaneçam ativos, useAutoScalingInstanceRefreshem vez disso. Para obter mais informações, consulte a Política AutoScalingInstanceRefresh. -
O CloudFormation é compatível com o uso de hooks do ciclo de vida do Amazon EC2 Auto Scaling ao iniciar ou terminar instâncias. Isso dá a você tempo para executar ações personalizadas em uma instância antes que ela passe para o próximo estado. Para garantir que a nova instância alcance o estado de
InService, conclua o hook do ciclo de vida com um resultado deCONTINUEquando a ação personalizada for concluída. Por padrão, se nenhuma resposta for recebida e o tempo limite do hook do ciclo de vida expirar, a inicialização da instância será considerada malsucedida e será abandonada. Se nenhuma instância alcançar o estado deInService, a atualização contínua acabará falhando. -
Outros recursos do Amazon EC2 Auto Scaling, como políticas de encerramento e proteção contra redução de escala, não estão disponíveis para uso com atualizações contínuas do CloudFormation. Se precisar de algum desses recursos, use
AutoScalingInstanceRefreshem vez disso. Para obter mais informações, consulte Política AutoScalingInstanceRefresh. -
Se você usar uma
AutoScalingRollingUpdatepolítica e remover a configuração do grupo de posicionamento, o grupo de posicionamento será removido do grupo do Auto Scaling e do modelo CloudFormation. Além disso, isso aciona uma atualização contínua, para que novas instâncias não sejam lançadas em um grupo de posicionamento.
Sintaxe
JSON
"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" :Integer, "MinActiveInstancesPercent" :Integer, "MinInstancesInService" :Integer, "MinSuccessfulInstancesPercent" :Integer, "PauseTime" :String, "SuspendProcesses" : [List of processes], "WaitOnResourceSignals" :Boolean} }
YAML
UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize:IntegerMinActiveInstancesPercent:IntegerMinInstancesInService:IntegerMinSuccessfulInstancesPercent:IntegerPauseTime:StringSuspendProcesses: -List of processesWaitOnResourceSignals:Boolean
Propriedades
MaxBatchSize-
Especifica o número máximo de instâncias que podem ser substituídas ao mesmo tempo.
Padrão:
1Maximum:
100Tipo: inteiro
Obrigatório: não
MinActiveInstancesPercent-
Especifica o percentual de instâncias em um grupo do Auto Scaling que devem estar no estado
InServicerelativo à capacidade desejada desse grupo durante uma atualização contínua para que uma atualização seja bem-sucedida. É possível especificar um valor de 0 a 100. O CloudFormation arredonda para o décimo mais próximo de um percentual. Por exemplo, se você atualizar cinco instâncias com um percentual mínimo deInServiceigual a 50, pelo menos três instâncias deverão estar no estadoInService. Se uma instância não migrar para o estadoInServiceem até uma hora, o CloudFormation entenderá que a instância não foi atualizada.Configurar
MinActiveInstancesPercentem seuUpdatePolicytambém afetará as instâncias iniciadas quando a propriedadeDesiredCapacitydo recursoAWS::AutoScaling::AutoScalingGroupé definida como um valor maior do que a capacidade desejada atual desse grupo do Auto Scaling.Padrão:
100Tipo: inteiro
Obrigatório: não
MinInstancesInService-
Especifica o número mínimo de instâncias que devem estar em serviço dentro do grupo de Auto Scaling enquanto o CloudFormation atualiza as instâncias antigas. Esse valor deve ser menor que o MaxSize do grupo do Auto Scaling.
Atenção
Recomendamos definir o valor da propriedade
MinInstancesInServicecomo pelo menos o MinSize do grupo do Auto Scaling. Isso evita possíveis problemas de disponibilidade durante uma atualização contínua devido a 0 instâncias que atendem ao tráfego de clientes.Padrão:
0Tipo: inteiro
Obrigatório: não
MinSuccessfulInstancesPercent-
Especifica que porcentagem de instâncias em uma atualização sem interrupção do Auto Scaling deve sinalizar sucesso para que uma atualização seja bem-sucedida. É possível especificar um valor de 0 a 100. O CloudFormation arredonda para o décimo mais próximo de um percentual. Por exemplo, se você atualizar cinco instâncias com uma porcentagem mínima de êxito de
50, três instâncias deverão sinalizar sucesso. Se uma instância não enviar um sinal no tempo especificado na propriedadePauseTime, o CloudFormation entenderá que a instância não foi atualizada.Recomendamos definir a propriedade
MinSuccessfulInstancesPercentcom um valor maior do que 0. Quando a propriedadeMinSuccessfulInstancesPercentestiver definida como 0, o CloudFormation esperará que 0% das instâncias de capacidade estejam em um estadoInService. OMinSuccessfulInstancesPercentretornará imediatamente e antes de considerar o status do grupo do Auto Scaling comoUPDATE_COMPLETEpara passar para os recursos subsequentes que são definidos no modelo da pilha. Se outros grupos do Auto Scaling estiverem definidos no modelo do CloudFormation, eles serão atualizados simultaneamente. Quando todos os grupos do Auto Scaling são implantados de uma só vez com 0% das instâncias de capacidade em um estadoInService, você terá problemas de disponibilidade, pois nenhuma instância atenderá ao tráfego do cliente.Padrão:
100Tipo: inteiro
Obrigatório: não
PauseTime-
A quantidade de tempo que o CloudFormation pausa após fazer uma alteração em um lote de instâncias para dar a elas tempo para iniciar aplicações de software.
Especifique
PauseTimeno formato de duração ISO8601(no formato PT, em que cada#H#M#S#é o número de horas, minutos e segundos, respectivamente). OPauseTimemáximo é de uma hora (PT1H).Atenção
Quando
WaitOnResourceSignalsestá definido comotrue,PauseTimeatua como um valor de tempo limite. Ele determina o tempo máximo que o CloudFormation espera para receber o número necessário de sinais válidos das instâncias que estão sendo substituídas durante uma atualização contínua e das novas instâncias que estão sendo adicionadas, aumentando a propriedade DesiredCapacity do recursoAWS::AutoScaling::AutoScalingGroup. SePauseTimefor excedido antes de o CloudFormation receber os sinais esperados, a atualização falhará. Para ter os melhores resultados, especifique um período que garanta às aplicações tempo suficiente para inicializar. Se a atualização precisar ser revertida, um curtoPauseTimepode fazer com que a reversão falhe.Padrão:
PT5M(5 minutos) quando a propriedadeWaitOnResourceSignalsestá definida comotrue. Caso contrário, nenhum valor padrão será definido.Tipo: string
Obrigatório: não
SuspendProcesses-
Especifica os processos do Auto Scaling a serem suspensos durante uma atualização de pilha. A suspensão de processos impede que o Auto Scaling interfira na atualização da pilha. Por exemplo, você pode suspender alarmes para que o Amazon EC2 Auto Scaling não inicie políticas de escalabilidade associadas a um alarme. Para valores válidos, consulte Tipos de processos no Guia do usuário do Amazon EC2 Auto Scaling.
Padrão: não especificado
Tipo: Lista de processos de Auto Scaling
Obrigatório: não
WaitOnResourceSignals-
Especifica se o CloudFormation aguarda por sinais de sucesso de novas instâncias antes de continuar a atualização. O CloudFormation aguarda a duração
PauseTimeespecificada por sinais de sucesso.Para sinalizar o grupo do Auto Scaling, use o script auxiliar cfn-signal. Para grupos do Auto Scaling associados ao Elastic Load Balancing, considere adicionar uma verificação de integridade para garantir que as instâncias estejam íntegras antes de sinalizar o sucesso usando o script auxiliar cfn-init. Para obter um exemplo, consulte o comando
verify_instance_healthnos modelos de amostras para atualizações cumulativas do Amazon EC2 Auto Scaling em nosso repositório do GitHub. Padrão:
falseTipo: booliano
Obrigatório: condicional. Se você especificar a propriedade
MinSuccessfulInstancesPercent, a propriedadeWaitOnResourceSignalsdeverá ser definida comotrue.
Política AutoScalingInstanceRefresh
Para atualizar as instâncias de um grupo do Auto Scaling por meio de uma atualização de instâncias do Auto Scaling, utilize a política AutoScalingInstanceRefresh. Para obter a lista completa dos recursos de atualização de instâncias, consulte Usar uma atualização de instâncias para atualizar instâncias em um grupo do Auto Scaling no Guia do Usuário do Amazon EC2 Auto Scaling.
O CloudFormation realiza uma atualização da instância somente quando você atualiza uma das seguintes propriedades de um recurso AWS::AutoScaling::AutoScalingGroup:
LaunchTemplateMixedInstancesPolicyVPCZoneIdentifierAvailabilityZonesAvailabilityZoneIdsPlacementGroup
Ao utilizar a política AutoScalingInstanceRefresh, leve em consideração o seguinte:
-
Não é possível especificar as políticas
AutoScalingInstanceRefresheAutoScalingRollingUpdateno mesmo grupo do Auto Scaling. Se fizer isso, a atualização da pilha falhará. -
A reversão de pilha do CloudFormation é o mecanismo de reversão para
AutoScalingInstanceRefresh. Se a atualização de uma instância falhar, o CloudFormation reverte a pilha e inicia uma nova atualização da instância para restaurar o grupo à sua configuração anterior. Não é possível usar a operação da APIRollbackInstanceRefreshde Auto Scaling em uma atualização de instância que o CloudFormation já tenha iniciado. Para reverter uma atualização, use a APICancelInstanceRefreshou reverta a atualização da pilha. -
Um grupo do Auto Scaling pode executar apenas uma atualização de instância por vez. Se uma atualização de instância iniciada pelo usuário estiver em andamento quando você iniciar uma atualização da pilha com a política
AutoScalingInstanceRefresh, a atualização da pilha poderá falhar. -
Quando você define a atualização da instância
StrategycomoReplaceRootVolume, somente alterações emImageIdno modelo de execução ou na política de instâncias mistas são permitidas. Outras alterações nas propriedades podem fazer com que a atualização da pilha falhe. Para obter mais informações, consulte Substituir volumes raiz durante a atualização da instância no Guia do Usuário do Amazon EC2 Auto Scaling. -
Cada direção da atualização da pilha (avanço e reversão) está limitada pelo tempo limite de 36 horas do recurso do CloudFormation.
-
Atualizações de instâncias que demoram muito para serem concluídas podem exceder o prazo de validade das credenciais temporárias que o CloudFormation usa para chamar o Auto Scaling. Para evitar isso, configure um perfil de serviço na pilha. Para obter mais informações, consulte Perfil de serviço do CloudFormation.
nota
A atualização da instância não é compatível com o script auxiliar cfn-signal. Para obter informações sobre como verificar se a instância está pronta durante uma atualização da instância, consulte Verificar se a instância está pronta durante uma atualização da instância.
Sintaxe
JSON
"UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" :String, "Preferences" : { "AlarmSpecification" : { "Alarms" : [List of alarm names] }, "BakeTime" :Integer, "CheckpointDelay" :Integer, "CheckpointPercentages" : [List of integers], "InstanceWarmup" :Integer, "MaxHealthyPercentage" :Integer, "MinHealthyPercentage" :Integer, "ScaleInProtectedInstances" :String, "SkipMatching" :Boolean, "StandbyInstances" :String} } }
YAML
UpdatePolicy: AutoScalingInstanceRefresh: Strategy:StringPreferences: AlarmSpecification: Alarms: -List of alarm namesBakeTime:IntegerCheckpointDelay:IntegerCheckpointPercentages: -List of integersInstanceWarmup:IntegerMaxHealthyPercentage:IntegerMinHealthyPercentage:IntegerScaleInProtectedInstances:StringSkipMatching:BooleanStandbyInstances:String
Propriedades
Strategy-
A estratégia a ser utilizada para a atualização da instância. Os valores válidos são
RollingeReplaceRootVolume. Para obter informações sobre a estratégiaReplaceRootVolume, consulte Substituir volumes raiz durante a atualização da instância no Guia do Usuário do Amazon EC2 Auto Scaling.Tipo: string
Obrigatório: Sim
Preferences-
Define as preferências para a atualização da instância. Inclui o tempo de aquecimento da instância, as porcentagens mínimas e máximas de integridade e os comportamentos que o Amazon EC2 Auto Scaling utiliza caso as instâncias estejam em estado
Standbyou protegidas contra o aumento em grande escala. Você também pode habilitar recursos adicionais:Checkpoints
Alarmes do CloudWatch
Ignorar correspondência
Tempo de incorporação
Tipo: Preferências
Obrigatório: não
Preferências
AlarmSpecification-
A especificação de alarme do CloudWatch. Você pode usar os alarmes do CloudWatch para identificar possíveis problemas durante a atualização da instância e reverter a pilha caso um limite de alarme seja atingido. Para obter mais informações, consulte Iniciar uma atualização de instância com reversão automática no Guia do Usuário do Amazon EC2 Auto Scaling.
Tipo: AlarmSpecification
Obrigatório: não
BakeTime-
O tempo, em segundos, que deve ser aguardado ao final de uma atualização da instância antes que essa atualização seja considerada concluída.
Padrão:
0Mínimo:
0Maximum:
172800Tipo: inteiro
Obrigatório: não
CheckpointDelay-
A quantidade de tempo, em segundos, para aguardar após um ponto de verificação antes de continuar. Se você especificar um valor para
CheckpointPercentagesmas não paraCheckpointDelay, oCheckpointDelaypadrão será3600(1 hora).Mínimo:
0Maximum:
172800Tipo: inteiro
Obrigatório: não
CheckpointPercentages-
Valores de limite para cada ponto de verificação em ordem crescente. Cada número deve ser único. Para substituir todas as instâncias do grupo do Auto Scaling, o último número da matriz deve ser
100. Para exemplos de uso, consulte Adicionar pontos de verificação a uma atualização de instância no Guia do Usuário do Amazon EC2 Auto Scaling.Tipo: Lista de inteiros
Obrigatório: não
InstanceWarmup-
Um período, em segundos, em que a atualização de uma instância aguarda antes de passar para a substituição da próxima instância depois que uma nova instância entra no estado
InService.Se você não especificar
InstanceWarmup, o Auto Scaling usará o valor da propriedadeDefaultInstanceWarmupno lugar. Recomendamos definir um valor paraDefaultInstanceWarmupem todos os casos de uso.Se você não especificar um valor para nenhuma das propriedades, o Auto Scaling usará o valor da propriedade
HealthCheckGracePeriod.Tipo: inteiro
Obrigatório: não
MaxHealthyPercentage-
Especifica a porcentagem máxima do grupo que pode estar em serviço e íntegro, ou em espera, para dar suporte à sua workload durante a troca de instâncias. O valor é expresso como uma porcentagem da capacidade desejada do grupo do Auto Scaling. Se você especificar
MaxHealthyPercentage, também deverá especificarMinHealthyPercentage, e a diferença entre eles não poderá ser maior que 100. Um intervalo maior aumenta o número de instâncias que podem ser substituídas ao mesmo tempo.Padrão: o valor definido na política de manutenção de instâncias do grupo Auto Scaling, se definido. Caso contrário,
110quandoStrategyéRolling, ou100quandoStrategyéReplaceRootVolume.Mínimo:
100Maximum:
200Tipo: inteiro
Obrigatório: não
MinHealthyPercentage-
Especifica o percentual mínimo do grupo a ser mantido em serviço, íntegro e pronto para uso para dar suporte à sua workload e permitir que a operação continue. O valor é expresso como uma porcentagem da capacidade desejada do grupo do Auto Scaling.
Padrão: o valor definido na política de manutenção de instâncias do grupo Auto Scaling, se definido. Caso contrário,
100quandoStrategyéRolling, ou90quandoStrategyéReplaceRootVolume.Mínimo:
0Maximum:
100Tipo: inteiro
Obrigatório: não
ScaleInProtectedInstances-
Escolha o comportamento que você deseja que o Amazon EC2 Auto Scaling use se forem encontradas instâncias protegidas contra redução da escala horizontalmente. E seguir está uma lista de valores válidos:
-
Atualizar: o Amazon EC2 Auto Scaling substitui instâncias protegidas contra redução de escala.
-
Ignorar: o Amazon EC2 Auto Scaling ignora as instâncias protegidas contra o aumento de escalabilidade e continua a realizar a troca das instâncias que não estão protegidas.
-
Aguardar: o Amazon EC2 Auto Scaling aguarda uma hora para que você remova a proteção contra redução de escala. Caso contrário, a atualização da instância falhará.
Padrão:
WaitTipo: string
Obrigatório: não
-
SkipMatching-
Indica se a correspondência de ignorar está habilitada. Se habilitado (
true), o Auto Scaling ignora a substituição de instâncias que já correspondem à configuração especificada no seu modelo de pilha. Para obter mais informações, consulte Usar uma atualização de instância com correspondência de salto no Guia do Usuário do Amazon EC2 Auto Scaling.Padrão:
trueTipo: booliano
Obrigatório: não
StandbyInstances-
Escolha o comportamento que você deseja que o Amazon EC2 Auto Scaling use se forem encontradas instâncias no estado
Standby. E seguir está uma lista de valores válidos:-
Encerrar: o Amazon EC2 Auto Scaling encerra instâncias que estão em
Standby. -
Ignorar: o Amazon EC2 Auto Scaling ignora instâncias que estejam em
Standbye continua substituindo instâncias que estejam no estadoInService. -
Aguardar: o Amazon EC2 Auto Scaling aguarda uma hora até que você coloque as instâncias de volta em operação. Caso contrário, a atualização da instância falhará.
Padrão:
WaitTipo: string
Obrigatório: não
-
AlarmSpecification
Alarms-
Os nomes de um ou mais alarmes do CloudWatch para monitorar a atualização da instância. É possível definir até 10 alarmes.
Tipo: lista de strings
Obrigatório: não
Verificar se a instância está pronta durante uma atualização da instância
Por padrão, a atualização de instâncias passa automaticamente para o próximo conjunto de instâncias quando as instâncias recém-iniciadas são aprovadas nas verificações de integridade configuradas no seu grupo do Auto Scaling. Isso inclui as verificações de integridade do Amazon EC2 e, se configuradas, as verificações de integridade do Elastic Load Balancing. Para obter mais informações, consulte Health checks for instances in an Auto Scaling group no Amazon EC2 Auto Scaling User Guide.
Se suas instâncias exigirem bootstrapping de aplicação antes de passar para InService, adicione um gancho do ciclo de vida autoscaling:EC2_INSTANCE_LAUNCHING ao grupo do Auto Scaling. A atualização da instância espera que o gancho do ciclo de vida seja concluído antes de prosseguir para o próximo conjunto de instâncias. Conclua o hook chamando a API CompleteLifecycleAction. Você pode fazer essa chamada a partir da própria instância usando um script de dados do usuário do modelo de execução ou de um serviço externo. Para obter mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling e Como realizar uma ação do ciclo de vida em um grupo do Auto Scaling no Guia do Usuário do Amazon EC2 Auto Scaling.
Política AutoScalingScheduledAction
Para especificar como o CloudFormation lida com atualizações das propriedades MinSize, MaxSize e DesiredCapacity quando o recurso AWS::AutoScaling::AutoScalingGroup tem uma ação agendada associada, use a política de AutoScalingScheduledAction.
Com as ações programadas, as propriedades de tamanho de um grupo do Auto Scaling podem mudar a qualquer momento. Quando você atualiza uma pilha com um grupo de Auto Scaling e uma ação programada, o CloudFormation sempre define os valores das propriedades de tamanho do seu grupo de Auto Scaling como os valores definidos no recurso AWS::AutoScaling::AutoScalingGroup do seu modelo, mesmo que uma ação programada esteja em vigor.
Se você não quiser que o CloudFormation altere os valores das propriedades de tamanho do grupo quando tiver uma ação programada em vigor, use a política de atualização AutoScalingScheduledAction e defina IgnoreUnmodifiedGroupSizeProperties como true para impedir que o CloudFormation altere as propriedades MinSize, MaxSize ou DesiredCapacity, a menos que esses valores tenham sido modificados no seu modelo.
Sintaxe
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :Boolean} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:Boolean
Propriedades
IgnoreUnmodifiedGroupSizeProperties-
Se
true, o CloudFormation ignorará as diferenças nas propriedades de tamanho do grupo entre o grupo do Auto Scaling atual e o grupo do Auto Scaling descrito no recursoAWS::AutoScaling::AutoScalingGroupdo seu modelo durante uma atualização de pilha. Se você modificar qualquer valor da propriedade de tamanho do grupo do modelo, o CloudFormation usará os valores modificados e atualizará o grupo do Auto Scaling.nota
Essa propriedade é ignorada durante a reversão de uma pilha.
Padrão:
falseTipo: booliano
Obrigatório: não
Política UseOnlineResharding
Para modificar os estilhaços de um grupo de replicação, adicionando ou removendo estilhaços, em vez de substituir todo o recurso AWS::ElastiCache::ReplicationGroup, utilize a política de atualização UseOnlineResharding.
Se UseOnlineResharding estiver definido como true, você poderá atualizar as propriedades NumNodeGroups e NodeGroupConfiguration do recurso AWS::ElastiCache::ReplicationGroup e o CloudFormation atualizará essas propriedades sem interrupção. Quando UseOnlineResharding estiver definido como false, ou não estiver especificado, a atualização das propriedades NumNodeGroups e NodeGroupConfiguration fará com que o CloudFormation substitua todo o recurso de AWS::ElastiCache::ReplicationGroup.
A política de atualização de UseOnlineResharding não tem propriedades.
Coisas a considerar ao definir a política de atualização de UseOnlineResharding para true:
-
É altamente recomendável que você execute as atualizações para as propriedades de
NumNodeGroupseNodeGroupConfigurationcomo sendo as únicas atualizações em uma determinada operação de atualização da pilha.A atualização da configuração do grupo de nós de um grupo de replicação é uma operação com uso intensivo de recursos. Se uma atualização de pilha falhar, o CloudFormation não reverterá as alterações na configuração de grupo de nós de um grupo de replicação. No entanto, o CloudFormation reverterá quaisquer outras propriedades que foram alteradas como parte da operação de atualização que falhou.
-
Todas as atualizações de grupos de nós exigem a identificação de todos os grupos de nós.
Se você especificar a propriedade de
NodeGroupConfiguration, precisará especificar também o NodeGroupId para a configuração de cada grupo de nós para que o CloudFormation atualize o número de nós sem interrupção.Ao criar um grupo de replicação, se você não especificar um ID para cada grupo de nós, o ElastiCache gerará automaticamente um ID para cada grupo de nós. Para atualizar o grupo de replicação sem interrupção, use o console do ElastiCache (https://console.aws.amazon.com/elasticache/
) ou DescribeReplicationGroups para recuperar os IDs para todos os grupos de nós do grupo de replicações. Em seguida, especifique o ID para cada grupo de nós no seu modelo de pilha antes de tentar adicionar ou remover estilhaços. nota
Como uma prática recomendada, ao criar um grupo de replicação em um modelo de pilha, inclua um ID para cada grupo de nós que você especificar.
Além disso, a atualização do número de nós sem interrupção requer que você tenha especificado com precisão as propriedades
PrimaryAvailabilityZone,ReplicaAvailabilityZoneseReplicaCountpara cadaNodeGroupConfigurationtambém. Você pode usar o console ElastiCache (https://console.aws.amazon.com/elasticache/) ou DescribeReplicationGroups para recuperar os valores reais para cada grupo de nós e compará-los com os valores no seu modelo de pilha. Você pode atualizar os valores de propriedades dos groups de nós como uma atualização de pilha separada ou como parte da mesma atualização da pilha que altera o número de grupos de nós. Quando você usa uma política de atualização de
UseOnlineReshardingpara atualizar o número de grupos de nós sem interrupção, o ElastiCache distribui uniformemente os espaços de chave entre o número especificado de slots. Isso não pode ser atualizado mais tarde. Portanto, depois de atualizar o número de grupos de nós dessa forma, você deve remover o valor especificado para a propriedadeSlotsde cadaNodeGroupConfigurationdo modelo de pilha, uma vez que ele já não reflete mais os valores reais em cada grupo de nós. -
Os resultados reais da remoção do grupo de nós podem variar
Quando você especifica um valor de
NumNodeGroupsmenor que o número atual de grupos de nós, o CloudFormation instrui o ElastiCache para remover o maior número de grupos de nós possível para alcançar o número especificado de nós. No entanto, o ElastiCache pode não ser sempre capaz de remover o número desejado de grupos de nós. Caso o ElastiCache não possa remover o número desejado de grupos de nós, o CloudFormation gera um evento de pilha com alertas sobre isso. Nos casos em que o ElastiCache não puder remover quaisquer grupos de nós, a atualização do recurso CloudFormation falhará.
Para obter mais informações sobre como modificar grupos de replicação, consulte ModifyReplicationGroupShardConfiguration no Amazon ElastiCache API Reference.
Sintaxe
JSON
"UpdatePolicy" : { "UseOnlineResharding" :Boolean}
YAML
UpdatePolicy: UseOnlineResharding:Boolean
Política EnableVersionUpgrade
Para atualizar um domínio do OpenSearch Service para uma nova versão do OpenSearch ou do Elasticsearch, em vez de substituir todo o recurso AWS::OpenSearchService::Domain ou AWS::Elasticsearch::Domain use a política de atualização EnableVersionUpgrade.
Se EnableVersionUpgrade estiver definida como true, você poderá atualizar a propriedade EngineVersion do recurso AWS::OpenSearchService::Domain (ou a propriedade ElasticsearchVersion do recurso AWS::Elasticsearch::Domain legado) e o CloudFormation atualizará essa propriedade sem interrupções.. Quando EnableVersionUpgrade estiver definida como false ou não estiver especificada, a atualização da propriedade EngineVersion ou ElasticsearchVersion fará com que o CloudFormation substitua o recurso AWS::OpenSearchService::Domain/AWS::Elasticsearch::Domain inteiro.
A política de atualização de EnableVersionUpgrade não tem propriedades.
Para obter mais informações, consulte Upgrading OpenSearch Service domains no Amazon OpenSearch Service Developer Guide.
Sintaxe
JSON
"UpdatePolicy" : { "EnableVersionUpgrade" :Boolean}
YAML
UpdatePolicy: EnableVersionUpgrade:Boolean
Política CodeDeployLambdaAliasUpdate
Para executar uma implantação do CodeDeploy quando a versão for alterada em um recurso de AWS::Lambda::Alias use a política de atualização CodeDeployLambdaAliasUpdate.
Sintaxe
JSON
"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" :String, "ApplicationName" :String, "BeforeAllowTrafficHook" :String, "DeploymentGroupName" :String} }
YAML
UpdatePolicy: CodeDeployLambdaAliasUpdate: AfterAllowTrafficHook:StringApplicationName:StringBeforeAllowTrafficHook:StringDeploymentGroupName:String
Propriedades
AfterAllowTrafficHook-
O nome da função do Lambda a ser executada depois que o roteamento do tráfego for concluído.
Obrigatório: não
Tipo: string
ApplicationName-
O nome da aplicação do CodeDeploy.
Obrigatório: Sim
Tipo: string
BeforeAllowTrafficHook-
O nome da função do Lambda a ser executada antes do início do roteamento do tráfego.
Obrigatório: não
Tipo: string
DeploymentGroupName-
O nome do grupo de implantação do CodeDeploy. Esse é o local em que a política de mudança de tráfego é definida.
Obrigatório: Sim
Tipo: string
Para obter um exemplo que especifica o atributo UpdatePolicy para um recurso AWS::Lambda::Alias, consulte Política de atualização de alias do Lambda.
Exemplos
Os exemplos a seguir mostram como adicionar uma política de atualização a um grupo do Auto Scaling e como manter a disponibilidade ao atualizar metadados.
Adicionar uma UpdatePolicy a um grupo do Auto Scaling
O exemplo a seguir mostra como adicionar uma política de atualização. Durante uma atualização, o grupo do Auto Scaling atualiza as instâncias em lotes de dois e mantém no mínimo uma instância em serviço. Como o sinalizador WaitOnResourceSignals está definido, o grupo de Auto Scaling aguarda pelas novas instâncias que serão adicionadas ao grupo. As novas instâncias devem sinalizar ao grupo do Auto Scaling antes que ele atualize o próximo lote de instâncias.
JSON
"ASG" : { "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MaxSize":"4", "MinSize":"1" }, "UpdatePolicy":{ "AutoScalingScheduledAction":{ "IgnoreUnmodifiedGroupSizeProperties":"true" }, "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"2", "WaitOnResourceSignals":"true", "PauseTime":"PT10M", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh
Política AutoScalingReplacingUpdate
O exemplo a seguir declara uma política que impõe um grupo do Auto Scaling associado a ser substituído durante uma atualização. Para que a atualização seja bem-sucedida, uma porcentagem de instâncias (especificada pelo parâmetro MinSuccessfulPercentParameter) deve sinalizar o sucesso dentro do período de Timeout.
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : true } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: true CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
Política AutoScalingInstanceRefresh
Os exemplos a seguir mostram duas configurações comuns da política AutoScalingInstanceRefresh. O primeiro exemplo usa launch-before-terminate para manter a capacidade durante a atualização. O segundo exemplo usa um alarme do CloudWatch para reverter a pilha se a implantação causar problemas.
Atualização com lançamento antes do encerramento
O exemplo a seguir declara uma política AutoScalingInstanceRefresh que usa launch-before-terminate. A configuração de MinHealthyPercentage para 100 garante que novas instâncias sejam iniciadas antes que as existentes sejam encerradas, e MaxHealthyPercentage de 200 permite que o grupo dobre temporariamente de tamanho. A política também ignora instâncias que já correspondem à configuração.
JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "MinHealthyPercentage" : 100, "MaxHealthyPercentage" : 200, "SkipMatching" : true } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: MinHealthyPercentage: 100 MaxHealthyPercentage: 200 SkipMatching: true
Atualização com reversão baseada em alarme
O exemplo a seguir declara uma política AutoScalingInstanceRefresh com pontos de verificação, reversão baseada em alarme e tempo de incorporação. O Auto Scaling faz uma pausa de 5 minutos em cada ponto de verificação e aguarda 10 minutos após a conclusão antes de declarar sucesso.
JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "CheckpointPercentages" : [ 33, 66, 100 ], "CheckpointDelay" : 300, "BakeTime" : 600, "AlarmSpecification" : { "Alarms" : [ "my-cloud-watch-alarm" ] } } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: CheckpointPercentages: - 33 - 66 - 100 CheckpointDelay: 300 BakeTime: 600 AlarmSpecification: Alarms: -my-cloud-watch-alarm
Manter a disponibilidade ao atualizar os metadados do script auxiliar cfn-init
Ao instalar aplicações de software em instâncias, você pode usar a chave de metadados AWS::CloudFormation::Init e o script de ajuda cfn-init para inicializar as instâncias no grupo do Auto Scaling. O CloudFormation instala os pacotes, executa os comandos e realiza outras ações de inicialização descritas nos metadados.
Ao atualiza apenas os metadados (por exemplo, atualizar um pacote para outra versão), você pode usar o daemon de ajuda cfn-hup para detectar e aplicar as atualizações. No entanto, o daemon cfn-hup será executado de forma independente em cada instância. Se o daemon for executado ao mesmo tempo em todas as instâncias, sua aplicação ou serviço poderá estar indisponível durante a atualização. Para garantir a disponibilidade, force uma atualização sem interrupção para que o CloudFormation atualize as instâncias um lote por vez.
Importante
Forçar uma atualização sem interrupção requer que o CloudFormation crie uma instância nova e, em seguida, exclua a antiga. Todas as informações armazenadas na instância antiga serão perdidas.
Para forçar uma atualização sem interrupção, altere o ID lógico do recurso de configuração de execução e, em seguida, atualize a pilha e quaisquer referências que apontam para o ID lógico original (como o grupo do Auto Scaling associado). O CloudFormation aciona uma atualização sem interrupção no grupo do Auto Scaling, substituindo todas as instâncias.
Modelo original
"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
Atualização do ID lógico
"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
Política de atualização de alias do Lambda
O exemplo a seguir especifica o atributo UpdatePolicy para um recurso AWS::Lambda::Alias. Todos os detalhes da implantação são definidos pela aplicação e pelo grupo de implantação passados para a política.
JSON
"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }
YAML
Alias: Type: AWS::Lambda::Alias Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction