Migre AWS CloudFormation pilhas para modelos de lançamento - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Migre AWS CloudFormation pilhas para modelos de lançamento

Você pode migrar seus modelos de AWS CloudFormation pilha existentes das configurações de lançamento para os modelos de lançamento. Para fazer isso, adicione um modelo de execução diretamente a um modelo de pilha existente e, em seguida, associe o modelo de execução ao grupo do Auto Scaling no modelo de pilha. Em seguida, use seu modelo modificado para atualizar sua pilha.

Ao migrar para modelos de lançamento, este tópico economiza seu tempo ao fornecer instruções para reescrever as configurações de lançamento em seus modelos de CloudFormation pilha como modelos de lançamento. Para obter mais informações sobre migração de configurações de lançamento para modelos de execução, consulte Migre seus grupos de Auto Scaling para modelos de lançamento.

Encontre grupos do Auto Scaling que usam uma configuração de execução

Para localizar grupos do Auto Scaling que usam uma configuração de execução
  • Use o describe-auto-scaling-groupscomando a seguir para listar os nomes dos grupos do Auto Scaling que estão usando configurações de inicialização na região especificada. Inclua a --filters opção de restringir os resultados aos grupos associados a uma CloudFormation pilha (filtrando pela chave da aws:cloudformation:stack-name tag).

    aws autoscaling describe-auto-scaling-groups --region REGION \ --filters Name=tag-key,Values=aws:cloudformation:stack-name \ --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'

    Veja a seguir um exemplo de saída.

    [ "{stack-name}-group-1", "{stack-name}-group-2", "{stack-name}-group-3" ]

    Você pode encontrar outros AWS CLI comandos úteis para encontrar grupos do Auto Scaling para migrar e filtrar a saída. Migre seus grupos de Auto Scaling para modelos de lançamento

Importante

Se os recursos da sua pilha estiverem AWSEB em seu nome, isso significa que eles foram criados por meio AWS Elastic Beanstalk de. Nesse caso, você deve atualizar o ambiente do Beanstalk para que o Elastic Beanstalk remova a configuração de execução e a substitua por um modelo de execução.

Atualizar uma pilha para usar um modelo de execução

Siga as etapas desta seção para fazer o seguinte:

  • Reescreva a configuração de execução como um modelo de execução usando as propriedades equivalentes do modelo de execução.

  • Associe o novo modelo de execução ao grupo do Auto Scaling.

  • Implemente essas atualizações.

Para modificar o modelo da pilha e atualizar a pilha
  1. Siga os mesmos procedimentos gerais para modificar o modelo de pilha descritos em Modificar um modelo de pilha no Guia do usuário AWS CloudFormation .

  2. Reescreva a configuração de execução como um modelo de execução. Veja o exemplo a seguir:

    Exemplo: uma configuração de execução simples

    --- Resources: myLaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroups: - !Ref EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Exemplo: O modelo de execução equivalente

    --- Resources: myLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId: ami-02354e95b3example InstanceType: t3.micro SecurityGroupIds: - Ref! EC2SecurityGroup KeyName: MyKeyPair BlockDeviceMappings: - DeviceName: /dev/xvda Ebs: VolumeSize: 150 DeleteOnTermination: true UserData: Fn::Base64: !Sub | #!/bin/bash -x yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource myASG --region ${AWS::Region}

    Para obter informações de referência sobre todas as propriedades EC2 suportadas pela Amazon, consulte AWS:EC2:: LaunchTemplate AWS no Guia do AWS CloudFormation usuário.

    Observe como o modelo de execução inclui a propriedade LaunchTemplateName com um valor de !Sub ${AWS::StackName}-launch-template. Isso é necessário se você quiser que o nome do modelo de execução inclua o nome da pilha.

  3. Se a IamInstanceProfile propriedade estiver presente na sua configuração de execução, você deverá convertê-la em uma estrutura e especificar o nome ou o perfil ARN da instância. Para obter um exemplo, consulte AWS:EC2:: LaunchTemplate AWS .

  4. Se as propriedades,AssociatePublicIpAddress InstanceMonitoring ou PlacementTenancy estiverem presentes em sua configuração de execução, você deverá convertê-las em uma estrutura. Para obter exemplos, consulte AWS:EC2:: LaunchTemplate AWS .

    Uma exceção é quando o valor da propriedade MapPublicIpOnLaunch nas sub-redes que você usou para seu grupo do Auto Scaling coincide com o valor da propriedade AssociatePublicIpAddress em sua configuração de execução. Neste caso, você pode ignorar a propriedadeAssociatePublicIpAddress. A AssociatePublicIpAddress propriedade só é usada para substituir a MapPublicIpOnLaunch propriedade e alterar se as instâncias recebem um IPv4 endereço público na inicialização.

  5. Você pode copiar grupos de segurança da propriedade SecurityGroups para um dos dois lugares em seu modelo de execução. Normalmente, você copia os grupos de segurança para a propriedadeSecurityGroupIds. No entanto, se você criar uma estrutura NetworkInterfaces em seu modelo de execução para especificar a propriedade,AssociatePublicIpAddress você deverá copiar os grupos de segurança para a propriedade Groups da interface de rede.

  6. Se alguma BlockDeviceMapping estrutura estiver presente em sua configuração de lançamento com NoDevice definido comotrue, você deverá especificar uma string vazia NoDevice em seu modelo de lançamento para que a Amazon EC2 omita o dispositivo.

  7. Se a propriedade SpotPrice estiver presente em sua configuração de execução, recomendamos que você a omita do seu modelo de execução. Suas instâncias spot serão executadas pelo preço spot atual. Este preço nunca excederá o preço sob demanda.

    Para solicitar instâncias spot, você tem duas opções mutuamente exclusivas:

    • A primeira é usar a estrutura InstanceMarketOptions em seu modelo de execução (não recomendado). Para obter mais informações, consulte AWS:EC2:: LaunchTemplate InstanceMarketOptions AWS no Guia do AWS CloudFormation Usuário.

    • A outra é adicionar uma estrutura MixedInstancesPolicy ao seu grupo do Auto Scaling. Isto oferece mais opções de como você faz a solicitação. Uma solicitação de instância spot em seu modelo de execução não é compatível com mais de uma seleção de tipo de instância por grupo do Auto Scaling. No entanto, uma política de instâncias mistas oferece suporte a mais de uma seleção de tipo de instância por grupo do Auto Scaling. As solicitações de Instância Spot se beneficiam de ter mais de um tipo de instância para escolher. Para obter mais informações, consulte AWS:AutoScaling:: AutoScalingGroup MixedInstancesPolicy AWS no Guia do AWS CloudFormation Usuário.

  8. Remova a LaunchConfigurationName propriedade do AutoScalingGroup recurso AWS:AutoScaling:: AutoScalingGroup AWS . Adicione o modelo de execução em seu lugar.

    Nos exemplos a seguir, a função intrínseca Ref obtém o ID do LaunchTemplate recurso AWS::EC2:: LaunchTemplate AWS com o ID lógico. myLaunchTemplate A GetAttfunção obtém o número da versão mais recente (por exemplo,1) do modelo de lançamento da Version propriedade.

    Exemplo: sem uma política de instâncias mistas

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: LaunchTemplate: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Exemplo: com uma política de instâncias mistas

    --- Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !Ref myLaunchTemplate Version: !GetAtt myLaunchTemplate.LatestVersionNumber ...

    Para obter informações de referência sobre todas as propriedades suportadas pelo Amazon EC2 Auto Scaling, consulte AWS::AutoScaling::: AutoScalingGroup AWS do AWS CloudFormation usuário.

  9. Quando você estiver pronto para implantar essas atualizações, siga os CloudFormation procedimentos para atualizar a pilha com seu modelo de pilha modificado. Para obter mais informações, consulte Modificar um modelo de pilha no Guia do usuário AWS CloudFormation .

Compreender atualização de comportamentos de recursos da pilha

CloudFormation atualiza os recursos da pilha comparando as alterações entre o modelo atualizado que você fornece e as configurações de recursos que você descreveu na versão anterior do seu modelo de pilha. As configurações de recursos que não foram alteradas permanecem inalteradas durante o processo de atualização.

CloudFormation suporta o UpdatePolicyatributo para grupos de Auto Scaling. Durante uma atualização, se UpdatePolicy estiver definido comoAutoScalingRollingUpdate, CloudFormation substitui InService as instâncias após você executar as etapas desse procedimento. Se UpdatePolicy estiver definido comoAutoScalingReplacingUpdate, CloudFormation substitui o grupo Auto Scaling e sua piscina aquecida (se houver).

Se você não especificou um UpdatePolicy atributo para seu grupo de Auto Scaling, o modelo de lançamento é verificado quanto à exatidão, mas CloudFormation não implanta nenhuma alteração nas instâncias do grupo Auto Scaling. Todas as novas instâncias receberão seu modelo de execução, mas as instâncias existentes continuarão a ser executadas com a configuração de execução com a qual foram executadas originalmente (apesar da inexistência da configuração de execução). A exceção é quando você altera suas opções de compra, por exemplo, adicionando uma política de instâncias mistas. Neste caso, seu grupo do Auto Scaling substitui gradualmente as instâncias existentes por novas instâncias para corresponder às novas opções de compra.

Rastrear a migração

Para rastrear a migração
  1. No console do AWS CloudFormation, selecione a pilha que você atualizou e, em seguida, escolha a guia Eventos para visualizar eventos de pilhas.

  2. Para atualizar a lista de eventos com os eventos mais recentes, escolha o botão Atualizar no CloudFormation console.

  3. Enquanto sua pilha estiver sendo atualizada, você notará vários eventos para cada atualização de recurso. Se você ver uma exceção na coluna Motivo do status que indica um problema ao tentar criar o modelo de execução, consulte Solucionar problemas do Amazon EC2 Auto Scaling: modelos de lançamento para as possíveis causas.

  4. (Opcional) Dependendo do uso do UpdatePolicy atributo, você pode monitorar o progresso do seu grupo de Auto Scaling na página de grupos do Auto Scaling do console da Amazon. EC2 Selecione o grupo do Auto Scaling. Na guia Activity (Atividade), em Activity history (Histórico de atividades), a coluna Status (Status) mostra se o seu grupo do Auto Scaling iniciou ou encerrou instâncias com êxito, ou se a ação de escalabilidade ainda está em andamento.

  5. Quando a atualização da pilha estiver concluída, CloudFormation emite um evento de UPDATE_COMPLETE pilha. Para obter mais informações, consulte Monitorar o andamento de uma atualização de pilha no Guia do usuário AWS CloudFormation .

  6. Depois que a atualização da pilha for concluída, abra a página de modelos do Launch e a página de configurações do Launch do console da AmazonEC2. Você notará que um novo modelo de execução foi criado e a configuração de execução foi excluída.

Referência do mapeamento de configuração de execução

Para fins de referência, a tabela a seguir lista todas as propriedades de nível superior no LaunchConfiguration recurso AWSAutoScaling:: LaunchConfiguration AWS com suas propriedades correspondentes no LaunchTemplate recurso AWS:EC2:: LaunchTemplate AWS .

Propriedade da fonte de configuração de execução Propriedade target do modelo de execução
AssociatePublicIpAddress NetworkInterfaces.AssociatePublicIpAddress
BlockDeviceMappings BlockDeviceMappings
ClassicLinkVPCId Não disponível¹
ClassicLinkVPCSecurityGroups Não disponível¹
EbsOptimized EbsOptimized
IamInstanceProfile Especifique IamInstanceProfile.Arn ou,IamInstanceProfile.Name mas não ambos
ImageId ImageId
InstanceId InstanceId
InstanceMonitoring Monitoring.Enabled
InstanceType InstanceType
KernelId KernelId
KeyName KeyName
LaunchConfigurationName LaunchTemplateName
MetadataOptions MetadataOptions
PlacementTenancy Placement.Tenancy
RamDiskId RamDiskId
SecurityGroups Especifique SecurityGroupIds ou,NetworkInterfaces.Groups mas não ambos
SpotPrice InstanceMarketOptions.SpotOptions.MaxPrice
UserData UserData

¹ As ClassicLinkVPCSecurityGroups propriedades ClassicLinkVPCId e não estão disponíveis para uso em um modelo de lançamento porque EC2 -Classic não está mais disponível.