Encerrar a instância - Amazon Elastic Compute Cloud

Encerrar a instância

Você pode excluir sua instância quando não precisar mais dela. Isso é chamado de encerrar sua instância. Assim que o estado de uma instância mudar para shutting-down ou para terminated, não haverá mais custos para essa instância.

Não é possível conectar-se a uma instância ou iniciá-la depois de interrompê-la. No entanto, você pode executar instâncias adicionais usando a mesma AMI. Se você preferir interromper e iniciar a instância ou hiberná-la, consulte Interromper e iniciar sua instância ou Hibernar a instância do Linux sob demanda. Para mais informações, consulte Diferenças entre reinicialização, interrupção, hibernação e encerramento.

Encerramento de instância

Depois de encerrar uma instância, ela permanecerá visível no console por um curto período, quando será automaticamente excluída. Você não pode excluir a entrada da instância encerrada por conta própria. Depois que uma instância é interrompida, recursos como tags e volumes são gradualmente dissociados da instância e podem não ficar visíveis na instância interrompida após um breve período.

Quando uma instância é encerrada, os dados em quaisquer volumes de armazenamento de instâncias associados a ela são excluídos.

Por padrão, os volumes do dispositivo raiz do Amazon EBS são excluídos automaticamente quando a instância é encerrada. Contudo, por padrão, todos os volumes do EBS adicionais que você anexar na execução ou todos os volumes do EBS que você anexar a uma instância existente persistirão mesmo após o encerramento da instância. Esse comportamento é controlado pelo atributo DeleteOnTermination do volume, que você pode modificar. Para mais informações, consulte Preservar volumes do Amazon EBS no encerramento da instância.

Você pode impedir que uma instância seja encerrada acidentalmente por alguém usando o AWS Management Console, a CLI e a API. Esse recurso está disponível para instâncias baseadas no Amazon EBS e instâncias com armazenamento de instâncias do Amazon EC2. Cada instância tem um atributo DisableApiTermination com o valor padrão de false (ela pode ser encerrada pelo Amazon EC2). Você pode modificar esse atributo enquanto a instância estiver sendo executada ou interrompida (no caso de instâncias baseadas no Amazon EBS). Para mais informações, consulte Habilitar a proteção contra encerramento.

Você pode definir se uma instância deve ser interrompida ou encerrada quando o desligamento for iniciado a partir da instância usando um comando do sistema operacional para o desligamento do sistema. Para mais informações, consulte Alterar o comportamento de desligamento iniciado da instância.

Se você executar um script no encerramento da instância, ela pode ter uma interrupção anormal, pois não há como garantir que os scripts de desativação sejam executados. O Amazon EC2 tenta desativar uma instância corretamente e executar quaisquer scripts de desativação do sistema. No entanto, determinados eventos (como falha de hardware) podem impedir que esses scripts de desativação do sistema sejam executados.

Terminar várias instâncias com proteção contra término entre zonas de disponibilidade

Se você terminar várias instâncias em várias zonas de disponibilidade e uma ou mais instâncias especificadas estiverem habilitadas para proteção contra encerramento, a solicitação apresentará os seguintes resultados de falha:

  • As instâncias especificadas que estão na mesma zona de disponibilidade que a instância protegida não estão terminadas.

  • As instâncias especificadas que estão em zonas de disponibilidade diferentes, em que nenhuma outra instância especificada está protegida, estão terminadas corretamente.

Por exemplo, digamos que você tenha as seguintes instâncias:

Instância Availability Zone Encerrar proteção
Instância A us-east-1a Disabled
Instância B Disabled
Instância C us-east-1b Enabled
Instância D Disabled

Se você tentar terminar todas essas instâncias na mesma solicitação, a solicitação relatará falha com os seguintes resultados:

  • Instância A e Instância B estão terminadas corretamente porque nenhuma das instâncias especificadas em us-east-1a está habilitada para proteção contra término.

  • Instância C e Instância D não conseguem terminar porque pelo menos uma das instâncias especificadas em us-east-1b (Instância C) está habilitada para proteção contra término.

O que acontece quando você encerra uma instância

Quando uma instância do EC2 é encerrada usando o comando terminate-instances, o seguinte é registrado no nível do SO:

  • A solicitação da API enviará um evento de pressionamento de botão ao convidado.

  • Vários serviços do sistema serão interrompidos como resultado do evento de pressionamento do botão. O systemd executa um desligamento normal do sistema. O desligamento normal é acionado pelo evento de pressionamento do botão de desligamento de ACPI do hipervisor.

  • O desligamento de ACPI será iniciado.

  • A instância será desligada quando o processo de desligamento normal terminar. Não existe um tempo de desligamento configurável para o SO.

Como encerrar uma instância

Você pode encerrar uma instância usando o AWS Management Console ou a linha de comando.

Por padrão, ao iniciar a desativação de uma instância baseada no Amazon EBS (usando os comandos shutdown ou poweroff), a instância será interrompida. O comando halt não inicia um desligamento. Se ele for usado, a instância não será encerrada. Em vez disso, ele colocará a CPU em HLT e a instância permanecerá em execução.

New console

Para encerrar uma instância usando o console

  1. Antes de encerrar a instância, confirme que não perderá dados verificando se seus volumes do Amazon EBS não serão excluídos no encerramento e se você copiou todos os dados de que precisa dos volumes de armazenamento persistente de instância, como o Amazon EBS ou o Amazon S3.

  2. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  3. No painel de navegação, escolha Instances (Instâncias).

  4. Selecione a instância e escolha Instance state (Estado da instância) e Terminate instance (Encerrar instância).

  5. Quando a confirmação for solicitada, escolha Terminate (Encerrar).

Old console

Para encerrar uma instância usando o console

  1. Antes de encerrar a instância, confirme que não perderá dados verificando se seus volumes do Amazon EBS não serão excluídos no encerramento e se você copiou todos os dados de que precisa dos volumes de armazenamento persistente de instância, como o Amazon EBS ou o Amazon S3.

  2. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  3. No painel de navegação, escolha Instances (Instâncias).

  4. Selecione a instância e escolha Actions, Instance State e Terminate.

  5. Quando a confirmação for solicitada, escolha Sim, encerrar.

Para encerrar uma instância usando a linha de comando

Você pode usar um dos comandos a seguir. Para obter mais informações sobre essas interfaces de linha de comando, consulte Acessar o Amazon EC2.

Para executar um experimento controlado de injeção de falha

Você pode usar o AWS Fault Injection Simulator para testar como suas aplicações respondem quando sua instância é encerrada. Para obter mais informações, consulte o Guia do usuário do AWS Fault Injection Simulator.

Habilitar a proteção contra encerramento

Por padrão, você pode encerrar sua instância usando o console do Amazon EC2, a interface de linha de comando ou a API. Se você quiser impedir que sua instância seja interrompida acidentalmente usando o Amazon EC2, pode habilitar a proteção contra a interrupção da instância. O atributo DisableApiTermination define se a instância pode ser encerrada usando o console, a CLI ou a API. Por padrão, a proteção contra encerramento está desabilitada para sua instância. Você pode definir o valor desse atributo ao executar a instância, enquanto a instância estiver em execução ou quando a instância for interrompida (para instâncias baseadas no Amazon EBS).

O atributo DisableApiTermination não impede que você encerre uma instância iniciando o desligamento da instância (usando um comando do sistema operacional para o desligamento do sistema) quando o atributo InstanceInitiatedShutdownBehavior é definido. Para mais informações, consulte Alterar o comportamento de desligamento iniciado da instância.

Limitações

Não é possível habilitar a proteção contra encerramento para uma instância spot. Uma instância spot é encerrada quando o preço spot excede o valor que você está disposto a pagar por instâncias spot. No entanto, é possível preparar sua aplicação para lidar com interrupções de instância spot. Para mais informações, consulte Interrupções de instâncias spot.

O atributo DisableApiTermination não impede que o Amazon EC2 Auto Scaling encerre uma instância. Para instâncias em um grupo do Auto Scaling, use os seguintes recursos do Amazon EC2 Auto Scaling em vez de a proteção contra encerramento do Amazon EC2:

  • Para impedir que as instâncias que fazem parte de um grupo do Auto Scaling sejam encerradas na redução de escala na horizontal, use a proteção de redução de escala na horizontal da instância. Para obter mais informações, consulte Uso de proteção contra redução de escala na horizontal da instância no Guia do usuário do Amazon EC2 Auto Scaling.

  • Para impedir que o Amazon EC2 Auto Scaling encerre instâncias não íntegras, suspenda o processo ReplaceUnhealthy. Para obter mais informações, consulte Suspensão e retomada dos processos de escalabilidade no Guia do usuário do Amazon EC2 Auto Scaling.

  • Para especificar quais instâncias do Amazon EC2 Auto Scaling devem ser encerradas primeiro, escolha uma política de encerramento. Para obter mais informações, consulte Personalização da política de encerramento no Guia do usuário do Amazon EC2 Auto Scaling.

Para habilitar a proteção contra encerramento de uma instância no momento da execução

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel, escolha Launch Instance (Executar instância) e siga as instruções contidas no assistente.

  3. Na página Configure Instance Details (Configurar detalhes da instância), marque a caixa de seleção Enable termination protection (Habilitar proteção contra encerramento).

Para habilitar a proteção contra encerramento de uma instância em execução ou interrompida

  1. Selecione a instância, escolha Actions (Ações), Instance Settings (Configurações da instância) e selecione Change Termination Protection (Alterar proteção contra interrupção).

  2. Escolha Yes, Enable (Sim, habilitar).

Para desabilitar a proteção contra encerramento de uma instância em execução ou interrompida

  1. Selecione a instância, escolha Actions (Ações), Instance Settings (Configurações da instância) e selecione Change Termination Protection (Alterar proteção contra interrupção).

  2. Escolha Yes, Disable (Sim, desabilitar).

Para habilitar ou desabilitar a proteção contra encerramento usando a linha de comando

Você pode usar um dos comandos a seguir. Para obter mais informações sobre essas interfaces de linha de comando, consulte Acessar o Amazon EC2.

Alterar o comportamento de desligamento iniciado da instância

Por padrão, quando você inicia um desligamento em uma instância baseada no Amazon EBS (usando um comando como shutdown ou poweroff), a instância é interrompida (observe que halt não emite um comando poweroff e, se usado, a instância não será encerrada. Em vez disso, ela colocará a CPU em HLT e a instância permanecerá em execução). Você pode alterar esse comportamento usando o atributo InstanceInitiatedShutdownBehavior para a instância de forma que, em vez de ser desligada, ela seja encerrada. Você pode atualizar esse atributo enquanto a instância estiver sendo executada ou interrompida.

Você pode atualizar o atributo InstanceInitiatedShutdownBehavior usando o console do Amazon EC2 ou a linha de comando. O atributo InstanceInitiatedShutdownBehavior se aplica apenas quando você executa uma desativação do sistema operacional da própria instância; ele não se aplica quando você interrompe uma instância usando a API StopInstances ou o console do Amazon EC2.

Para alterar o comportamento de desligamento de uma instância usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Selecione a instância.

  4. Escolha Actions (Ações), Instance settings (Configurações da instância), Change shutdown behavior (Alterar comportamento de desativação). O comportamento atual é selecionado.

  5. Para alterar o comportamento, selecione Stop (Interromper) ou Terminate (Encerrar) em Shutdown behavior (Comportamento de desativação) e escolha Apply (Aplicar).

Para alterar o comportamento de desligamento de uma instância usando a linha de comando

Você pode usar um dos comandos a seguir. Para obter mais informações sobre essas interfaces de linha de comando, consulte Acessar o Amazon EC2.

Preservar volumes do Amazon EBS no encerramento da instância

Quando uma instância é encerrada, o Amazon EC2 usa o valor do atributo DeleteOnTermination para cada volume do Amazon EBS anexado a fim de determinar se o volume será preservado ou excluído.

O valor padrão do atributo DeleteOnTermination difere dependendo de se o volume é o volume raiz da instância ou um volume não raiz anexado à instância.

Volume raiz

Por padrão, o atributo DeleteOnTermination para o volume raiz de uma instância é definido como true. Portanto, o padrão é excluir o volume raiz da instância quando a instância é encerrada. O atributo DeleteOnTermination pode ser definido pelo criador de uma AMI, bem como pela pessoa que executa a instância. Quando o atributo é alterado pelo criador de uma AMI ou pela pessoa que executa uma instância, a nova configuração substitui a configuração padrão original da AMI. Recomendamos que você verifique a configuração padrão do atributo DeleteOnTermination após executar uma instância com uma AMI.

Volume não raiz

Por padrão, ao anexar um volume do EBS não raiz a uma instância, seu atributo DeleteOnTermination é definido como false. Portanto, o padrão é preservar esses volumes. Depois que a instância é encerrada, você pode criar uma snapshot do volume preservado ou anexá-lo a outra instância. Exclua um volume para evitar cobranças adicionais. Para mais informações, consulte Excluir um volume de Amazon EBS.

Para verificar o valor do atributo DeleteOnTermination de um volume do EBS que esteja em uso, consulte o mapeamento de dispositivos de bloco da instância. Para mais informações, consulte Visualizar os volumes do EBS em um mapeamento de dispositivos de blocos de instância.

Você pode alterar o valor do atributo DeleteOnTermination de um volume quando executar a instância ou enquanto a instância estiver sendo executada.

Alterar o volume raiz a ser mantido na execução usando o console

Usando o console, você pode alterar o atributo DeleteOnTermination quando executar uma instância. Para alterar esse atributo para uma instância em execução, use a linha de comando.

Para alterar o volume raiz de uma instância a ser mantido na execução usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel do console, selecione Launch Instance (Executar instância).

  3. Na página Choose an Amazon Machine Image (AMI) (Escolher uma imagem de máquina da Amazon), selecione uma AMI e escolha Select (Selecionar).

  4. Siga o assistente para preencher as páginas Choose an Instance Type e Configure Instance Details.

  5. Na página Add Storage, desmarque a caixa de seleção Delete On Termination do volume do dispositivo raiz.

  6. Preencha as páginas restantes do assistente e escolha Launch (Executar).

Na nova experiência do console, você pode verificar a configuração exibindo detalhes do volume raiz do dispositivo no painel de detalhes da instância. Na guia Armazenamento, em Dispositivos de blocos, role para a direita para ver a configuração Excluir no encerramento para o volume. Por padrão, Delete on termination é Yes. Se você alterar o comportamento padrão, Delete on termination será No.

Na experiência antiga do console, você pode verificar a configuração exibindo detalhes do volume raiz do dispositivo no painel de detalhes da instância. Ao lado de Dispositivos de blocos, selecione a entrada do volume do dispositivo raiz. Por padrão, Delete on termination é True. Se você alterar o comportamento padrão, Delete on termination será False.

Alterar o volume raiz a ser mantido na execução usando a linha de comando

Ao executar uma instância baseada no EBS, você pode usar um dos seguintes comandos para alterar o volume do dispositivo raiz a ser mantido. Para obter mais informações sobre essas interfaces de linha de comando, consulte Acessar o Amazon EC2.

Por exemplo, adicione a opção a seguir ao seu comando run-instances:

--block-device-mappings file://mapping.json

Especifique o seguinte em mapping.json:

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false, "SnapshotId": "snap-1234567890abcdef0", "VolumeType": "gp2" } } ]

Alterar o volume raiz de uma instância em execução a ser mantido usando a linha de comando

Você pode usar um dos seguintes comandos para alterar o volume do dispositivo raiz de uma instância baseada no EBS em execução a ser mantido. Para obter mais informações sobre essas interfaces de linha de comando, consulte Acessar o Amazon EC2.

Por exemplo, use o comando a seguir:

aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --block-device-mappings file://mapping.json

Especifique o seguinte em mapping.json:

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]

Solucionar problemas de encerramento da instância

Se você encerrar a instância e outra instância for iniciada, provavelmente você configurou a escalabilidade automática por meio de um recurso como o Frota do EC2 ou o Amazon EC2 Auto Scaling.

Se a instância permanecer no estado shutting-down por mais tempo do que o normal, ela será removida (encerrada) por processos automatizados no serviço do Amazon EC2. Para mais informações, consulte Encerramento atrasado da instância.