Trabalhar com Instâncias spot - Amazon Elastic Compute Cloud

Trabalhar com Instâncias spot

Para usar instâncias spot, crie uma solicitação de instância spot que inclua o número de instâncias desejado, o tipo de instância e a zona de disponibilidade. Se houver capacidade disponível, o Amazon EC2 atenderá à solicitação imediatamente. Caso contrário, o Amazon EC2 esperará até a sua solicitação puder ser atendida ou até você cancelar a solicitação.

A ilustração a seguir mostra como as solicitações de instância spot funcionam. Observe que o tipo de solicitação (única ou persistente) determina se a solicitação será exibida novamente quando o Amazon EC2 ou você interromper uma instância spot. Se a requisição for persistente, ela será aberta novamente depois que a instância spot for interrompida. Se a solicitação for persistente e você interromper a instância spot, a solicitação será exibida somente depois que você iniciar a instância spot.


				Como as requisições de instância spot funcionam.

Estados da solicitação de instância spot

Uma solicitação de instância spot pode estar em um dos seguintes estados:

  • open – A solicitação está esperando para ser atendida.

  • active – A solicitação foi atendida e tem uma instância spot associada.

  • failed – A solicitação tem um ou mais parâmetros inválidos.

  • closed – A instância spot foi interrompida ou encerrada.

  • disabled – Você interrompeu a instância spot.

  • cancelled – Você cancelou a solicitação ou ela expirou.

A ilustração a seguir representa as transições entre os estados da solicitação. Observe que as transições dependem do tipo de solicitação (única ou persistente).


					Estados de solicitação de instância spot.

Uma solicitação de instância spot única permanece ativa até o Amazon EC2 executar a instância spot, a solicitação expirar ou você cancelar a solicitação. Se não houver capacidade disponível, sua instância spot será encerrada e a solicitação de instância spot será fechada.

Uma solicitação de instância spot persistente permanecerá ativa até expirar ou até que você a cancele, mesmo se a solicitação tiver sido atendida. Se não houver capacidade disponível, sua instância spot será interrompida. Depois que a instância é interrompida, quando a capacidade se torna disponível novamente, a instância spot será iniciada se estiver parada ou retomada se estiver em hibernação. É possível interromper uma instância spot e iniciá-la novamente quando há capacidade disponível. Se a instância spot for encerrada (independentemente da instância spot estar interrompida ou estar em execução), a solicitação de instância spot será aberta novamente e o Amazon EC2 executará uma nova instância spot. Para obter mais informações, consulte Interromper uma instância spot, Iniciar uma instância spot e Encerrar uma instância spot.

É possível acompanhar o status das solicitações de instância spot, bem como o status das instâncias spot executadas, pelo status. Para ter mais informações, consulte Status da solicitação spot.

Especificar uma locação para suas Instâncias spot

É possível executar uma instância spot no hardware de ocupante único. As instâncias spot dedicadas são fisicamente isoladas de instâncias que pertencem a outras contas da AWS. Para obter mais informações, consulte Dedicated Instances e a página do produto Instâncias dedicadas do Amazon EC2.

Para executar uma instância spot dedicada, execute um dos seguintes procedimentos:

  • Especifique um locação dedicated ao criar a solicitação de instância spot. Para ter mais informações, consulte Criar uma solicitação de instância spot.

  • Solicite uma solicitação spot em uma VPC com uma locação de instância dedicated. Para ter mais informações, consulte Criar uma VPC com uma locação de instância dedicada. Não é possível solicitar uma instância spot com um locação default se você solicitá-la em uma VPC com uma locação de instância dedicated​.

Todas as famílias de instâncias são compatíveis com Instâncias spot dedicadas, exceto instâncias T. Para cada família de instâncias compatíveis, apenas o maior tamanho de instância ou tamanho de metal é compatível com Instâncias spot dedicadas.

Função vinculada ao serviço para solicitações de instâncias spot

O Amazon EC2 usa funções vinculadas ao serviço para as permissões necessárias para chamar outros produtos da AWS em seu nome. Uma função vinculada ao serviço é um tipo exclusivo de função do IAM vinculado diretamente a um serviço da AWS. As funções vinculadas a serviços oferecem uma maneira segura de delegar permissões a serviços da AWS, pois somente o serviço vinculado pode assumir uma função vinculada ao serviço. Para obter mais informações, consulteUso de funções vinculadas ao serviço no Guia do usuário do IAM.

O Amazon EC2 usa a função vinculada ao serviço denominada AWSServiceRoleForEC2Spot para executar e gerenciar Instâncias spot em seu nome.

Permissões concedidas pelo AWSServiceRoleForEC2Spot

O Amazon EC2 usa AWSServiceRoleForEC2Spot para concluir as ações a seguir:

  • ec2:DescribeInstances – Descrever instâncias spot

  • ec2:StopInstances – Interromper instâncias spot

  • ec2:StartInstances – Iniciar instâncias spot

Criar a função vinculada ao serviço

Na maioria das circunstâncias, você não precisa criar manualmente uma função vinculada ao serviço. O Amazon EC2 cria a função AWSServiceRoleForEC2Spot vinculada ao serviço na primeira vez que você solicita uma instância spot usando o console.

Se você tinha uma solicitação de instância spot ativa antes de outubro de 2017, quando o Amazon EC2 começou a oferecer suporte a essa função vinculada ao serviço, o Amazon EC2 criou a função AWSServiceRoleForEC2Spot em sua conta da AWS. Para obter mais informações, consulte Uma nova função apareceu na minha conta no Guia do usuário do IAM.

Se você usar a AWS CLI ou uma API para solicitar uma instância spot, deverá assegurar que essa função existe.

Para criar AWSServiceRoleForEC2Spot usando o console
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, selecione Roles.

  3. Selecione Create role.

  4. Na página Select type of trusted entity (Selecionar tipo de entidade confiável), escolha EC2, EC2 - Spot Instances (EC2 - instâncias spot), Next: Permissions (Próximo: permissões).

  5. Na próxima página, escolha Next:Review (Próximo: revisar).

  6. Na página Review (Revisar), selecione Create role (Criar função).

Para criar AWSServiceRoleForEC2Spot usando a AWS CLI

Use o comando create-service-linked-role da seguinte forma.

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

Se você não precisar mais usar Instâncias spot, é recomendável excluir a função AWSServiceRoleForEC2Spot. Depois que essa função for excluída da sua conta, o Amazon EC2 criará a função novamente se você solicitar Instâncias spot.

Conceder acesso às chaves gerenciadas pelo cliente para uso com AMIs criptografadas e snapshots do EBS

Se você especificar uma AMI criptografada ou um snapshot do Amazon EBS criptografado para suas instâncias spot e usar uma chave gerenciada pelo cliente para criptografia, deverá conceder à função AWSServiceRoleForEC2Spot permissão para usar a chave gerenciada pelo cliente de forma que o Amazon EC2 consiga executar instâncias spot em seu nome. Para isso, adicione uma concessão à chave gerenciada pelo cliente, conforme exibido no procedimento a seguir.

Durante a definição de permissões, as concessões são uma alternativa às políticas de chave. Para obter mais informações, consulte Uso de concessões e Uso de políticas de chave no AWS KMS, no Guia do desenvolvedor do AWS Key Management Service.

Para conceder as permissões para a função AWSServiceRoleForEC2Spot para usar a chave gerenciada pelo cliente
  • Use o comando create-grant para adicionar uma concessão à chave gerenciada pelo cliente e especificar a entidade principal (a função vinculada ao serviço AWSServiceRoleForEC2) que recebe permissão para executar as operações permitidas pela concessão. A chave gerenciada pelo cliente é especificada pelo parâmetro key-id e o ARN da chave gerenciada pelo cliente. A entidade principal é especificada pelo parâmetro grantee-principal e pelo ARN da função vinculada ao serviço AWSServiceRoleForEC2Spot.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Criar uma solicitação de instância spot

Você pode usar o assistente de execução de instância no console do Amazon EC2 ou no comando da AWS CLI run-instances para solicitar uma instância spot da mesma forma que você pode executar uma instância sob demanda. Este método é recomendado apenas pelos seguintes motivos:

  • Você já está usando o assistente de execução de instância ou o comando run-instances para executar instâncias sob demanda e quer mudar para a execução de instâncias spot alterando um único parâmetro.

  • Você não precisa de várias instâncias com diferentes tipos de instância.

Esse método geralmente não é recomendado para executar instâncias spot porque você não pode especificar vários tipos de instância e não é possível executar instâncias spot e instâncias sob demanda na mesma solicitação. Para os métodos preferidos de execução de instâncias spot, que incluem a execução de uma frota que inclui instâncias spot e instâncias sob demanda com vários tipos de instância, consulte Qual é o melhor método de solicitação spot para usar?

Se você solicitar várias instâncias spot ao mesmo tempo, o Amazon EC2 criará solicitações de instância spot separadas para que você possa acompanhar o status de cada uma separadamente. Para obter mais informações sobre como monitorar solicitações de instâncias spot, consulte Status da solicitação spot.

New console
Para criar uma solicitação de instância spot usando o assistente de execução de instâncias

As etapas de 1 a 9 são as mesmas que você usaria para executar uma instância sob demanda. Na Etapa 10, você configura a solicitação da instância spot.

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

  2. Na barra de navegação na parte superior da tela, selecione uma região.

  3. No painel do console do Amazon EC2, selecione Launch instance (Executar instância).

  4. (Opcional) Em Name and tags (Nome e etiquetas), é possível nomear a instância e marcar a solicitação de instância spot, a instância, os volumes e os gráficos elásticos. Para obter mais informações sobre tags, consulte Marcar com tag os recursos do Amazon EC2.

    1. Em Name (Nome), insira um nome descritivo para a instância.

      O nome da instância é uma tag em que a chave é Name (Nome) e o valor é o nome que você especificar. Se você não especificar um nome, a instância poderá ser identificada por seu ID, que é gerado automaticamente quando você inicia a instância.

    2. Para marcar a solicitação de instância spot, a instância, os volumes e os elementos gráficos elásticos, escolha Add additional tags (Adicionar outras etiquetas). Escolha Add tag (Adicionar tag), insira uma chave e um valor, e selecione o tipo de recurso a aplicar a tag. Escolha Add tag (Adicionar tag) para cada tag adicional a acrescentar.

  5. Em Application and OS Images (Amazon Machine Image), (Imagens de aplicações e sistemas operacionais (imagem de máquina da Amazon), escolha o sistema operacional da instância e selecione uma AMI. Para ter mais informações, consulte Imagens de aplicações e sistemas operacionais (imagem de máquina da Amazon).

  6. Em Instance type (Tipo de instância), selecione o tipo de instância que atende aos requisitos para a configuração do hardware e o tamanho da instância. Para ter mais informações, consulte Tipo de instância.

  7. Em Key pair (login) (Par de chaves: login) escolha um par de chaves existente ou selecione Create new key pair (Criar um novo par de chaves) para criar um novo. Para ter mais informações, consulte Pares de chaves do Amazon EC2 e instâncias do Amazon EC2.

    Importante

    Se você escolher a opção Proceed without key pair (Not recommended) (Prosseguir sem par de chaves, não recomendado), não conseguirá se conectar à instância a menos que escolha uma AMI configurada para permitir que os usuários façam login de outro modo.

  8. Em Network settings (Configurações de rede), use as configurações padrão ou escolha Edit (Editar) para definir as configurações de rede, conforme necessário.

    Os grupos de segurança fazem parte das configurações de rede e definem regras de firewall para a instância. Essas regras especificam qual tráfego de rede de entrada será fornecido para sua instância.

    Para ter mais informações, consulte Configurações de rede.

  9. A AMI que você selecionou inclui um ou mais volumes de armazenamento, incluindo o volume de dispositivo raiz. Na página Configure storage (Configurar armazenamento), especifique os volumes adicionais para anexar à instância escolhendo Add New Volume (Adicionar novo volume). Para ter mais informações, consulte Configurar armazenamento.

  10. Em Advanced details (Detalhes avançados), configure a solicitação de instância spot da seguinte maneira:

    1. Em Purchasing option (Opção de compra), selecione Request Spot Instances (Solicitar instâncias spot).

    2. Você pode manter a configuração padrão para a solicitação de instância spot ou escolher Customize (Personalizar), à direita, para especificar configurações personalizadas para a solicitação da instância spot.

      Ao escolher a opção Customize (Personalizar), os campos a seguir serão exibidos.

      1. Preço máximo: e possível solicitar instâncias spot pelo preço spot, limitado ao preço sob demanda ou especificar o valor máximo que você está disposto a pagar.

        Atenção

        Se você especificar um preço máximo, as instâncias serão interrompidas com mais frequência do que se você escolher No maximum price (Sem preço máximo).

        • Sem preço máximo: a instância spot será executada pelo preço spot atual. O preço nunca excederá o preço sob demanda. (Recomendado)

        • Defina seu preço máximo (por instância/hora): você pode especificar o valor máximo que estiver disposto a pagar.

          • Se você especificar um preço máximo inferior ao preço spot atual, a instância spot não será executada.

          • Se você especificar um preço máximo superior ao preço spot atual, a instância spot será executada e cobrada de acordo com o preço spot atual. Depois que a instância spot estiver em execução, se o preço spot subir acima do preço máximo, o Amazon EC2 interromperá a instância spot.

          • Independentemente do preço máximo especificado, você sempre será cobrado o preço Spot atual.

          Para analisar as tendências de preços spot, consulte Histórico de definição de preço da instância spot.

      2. Tipos de solicitação: o tipo de solicitação de instância spot escolhido determina o que acontece se a instância spot for interrompida.

        • Única: o Amazon EC2 faz uma solicitação única para a instância spot. Se a instância spot for interrompida, a solicitação não será reenviada.

        • Solicitação persistente: o Amazon EC2 faz uma solicitação persistente para a instância spot. Se a instância spot for interrompida, a solicitação será reenviada para reabastecer a instância spot interrompida.

        Se você não especificar um valor, o padrão é uma solicitação única.

      3. Valid to (Válido para): a data de expiração de uma solicitação de instância spot persistente.

        Esse campo não é compatível com solicitações únicas. Uma solicitação única permanece ativa até que todas as instâncias da solicitação expirem ou você cancele a solicitação.

        • Nenhuma data de expiração da solicitação: a solicitação permanecerá ativa até você cancelá-la.

        • Defina a data de validade da solicitação: a solicitação persistente permanece ativa até a data especificada ou até que você a cancele.

      4. Comportamento de interrupção: o comportamento escolhido determina o que acontece quando uma instância spot é interrompida.

        • Para solicitações persistentes, os valores válidos são Stop (Parar) e Hibernate (Hibernar). Quando uma instância é interrompida, cobranças pelo armazenamento em volume do EBS são aplicadas.

          nota

          As instâncias spot agora usam a mesma funcionalidade de hibernação que as instâncias sob demanda. Para habilitar a hibernação, você pode escolher Hibernar aqui ou Habilitar no campo Comportamento de parar - hibernar, que aparece mais abaixo no assistente de inicialização de instância. Para conhecer os pré-requisitos de hibernação, consulte Pré-requisitos para a hibernação de instâncias do Amazon EC2.

        • Para as solicitações únicas, somente Terminate (Encerrar) é válido.

        Se você não especificar um valor, o padrão é Terminate (Encerrar) que não é válido para uma solicitação de instância spot persistente. Se você mantiver o padrão e tentar executar uma solicitação de instância spot persistente, receberá um erro.

        Para ter mais informações, consulte Comportamento de interrupção.

  11. No painel Summary (Resumo), para Number of instances (Número de instâncias), insira o número de instâncias a serem executadas.

    nota

    O Amazon EC2 cria uma solicitação distinta para cada instância spot.

  12. No painel Summary (Resumo), revise os detalhes da instância e faça as alterações necessárias. Depois de enviar sua solicitação de instância spot, não é possível alterar os parâmetros da solicitação. É possível navegar diretamente para uma seção no assistente de execução de instância, escolhendo seu link no painel Summary (Resumo). Para ter mais informações, consulte Resumo.

  13. Quando estiver pronto para iniciar a instância, escolha Launch instance (Iniciar instância).

    Se a instância não executar ou o estado passar imediatamente para terminated, em vez de running, consulte Solucionar problemas de execução de instâncias.

Old console
Para criar uma solicitação de instância spot usando o assistente de execução de instâncias
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Na barra de navegação na parte superior da tela, selecione uma região.

  3. No painel do console do Amazon EC2, selecione Launch Instance (Executar instância).

  4. Na página Escolher imagem de máquina da Amazon (AMI), escolha uma AMI. Para ter mais informações, consulte Etapa 1: Escolher uma imagem de máquina da Amazon (AMI).

  5. Na página Choose an Instance Type (Escolher um tipo de instância), selecione a configuração de hardware e o tamanho da instância a ser executada e Next: Configure Instance Details (Próximo: configurar detalhes da instância). Para ter mais informações, consulte Etapa 2: escolher um tipo de instância.

  6. Na página Configure Instance Details (Configurar os detalhes da instância) configure a solicitação de instância spot da seguinte maneira:

    • Number of instances (Número de instâncias): Digite o número de instâncias para executar.

      nota

      O Amazon EC2 cria uma solicitação distinta para cada instância spot.

    • (Opcional) Para ajudar a assegurar que você mantenha o número de instâncias para lidar com a demanda da aplicação, escolha Launch into Auto Scaling Group (Executar no grupo de Auto Scaling) para criar uma configuração de execução e um grupo de Auto Scaling. O Auto Scaling escala o número de instâncias no grupo de acordo com suas especificações. Para mais informações, consulte o Guia do usuário do Amazon EC2 Auto Scaling.

    • Purchasing option (Opção de compra): escolha Request Spot instances (Solicitar instâncias spot) para executar uma instância Spot. Ao escolher essa opção, os campos a seguir são exibidos.

    • Preço atual: o preço spot atual em cada zona de disponibilidade é exibido para o tipo de instância selecionada.

    • (Opcional) Preço máximo: é possível deixar o campo vazio ou especificar o valor máximo que está disposto a pagar.

      Atenção

      Se você especificar um preço máximo, suas instâncias serão interrompidas com mais frequência do que se você deixar esse campo vazio.

      • Se você especificar um preço máximo inferior ao preço spot, a instância spot não será iniciada.

      • Se você especificar um preço máximo superior ao preço spot atual, a instância spot será executada e cobrada de acordo com o preço spot atual. Depois que a instância spot estiver em execução, se o preço spot subir acima do preço máximo, o Amazon EC2 interromperá a instância spot.

      • Independentemente do preço máximo especificado, você sempre será cobrado o preço Spot atual.

      • Se você deixar o campo vazio, pagará o preço spot atual.

    • Persistent request (Solicitação persistente): escolha Solicitação persistente para reenviar a solicitação de instância spot se a instância spot for interrompida.

    • Interruption behavior (Comportamento de interrupção): por padrão, o serviço spot encerra uma instância spot quando ela é interrompida. Se escolher Solicitação persistente, será possível especificar que o serviço spot interrompa ou hiberne a instância spot quando ela for interrompida. Para ter mais informações, consulte Comportamento de interrupção.

    • (Opcional) Request valid to (Solicitação válida até): escolha Edit (Editar) para especificar a expiração da solicitação de instância spot.

    Para obter mais informações sobre como configurar sua instância spot, consulte Etapa 3: configurar detalhes da instância.

  7. A AMI que você selecionou inclui um ou mais volumes de armazenamento, incluindo o volume de dispositivo raiz. Na página Add Storage (Adicionar armazenamento), especifique os volumes adicionais para anexar à instância escolhendo Add New Volume (Adicionar novo volume). Para obter mais informações, consulte Etapa 4: adicionar armazenamento.

  8. Na página Add Tags (Adicionar tags), especifique as tags fornecendo combinações de chave e valor. Para obter mais informações, consulte Etapa 5: Adicionar tags.

  9. Na página Configurar grupo de segurança, use um grupo de segurança para definir regras do firewall para sua instância. Essas regras especificam qual tráfego de rede de entrada será fornecido para sua instância. Todo o tráfego é ignorado. (Para mais informações sobre grupos de segurança, consulte Grupos de segurança do Amazon EC2 para instâncias do Linux.) Selecione ou crie um grupo de segurança e escolha Revisar e executar. Para ter mais informações, consulte Etapa 6: configurar o grupo de segurança.

  10. Na página Review Instance Launch (Revisar execução da instância), verifique os detalhes da sua instância e faça qualquer alteração necessária selecionando o link Edit (Editar) apropriado. Quando estiver pronto, escolha Launch (Executar). Para ter mais informações, consulte Etapa 7: Revisar a execução da instância e selecionar o par de chaves.

  11. Na caixa de diálogo Select an existing key pair or create a new key pair (Selecionar um par de chaves existente ou criar um novo par de chaves), será possível escolher um par de chaves existente ou poderá criar um novo. Por exemplo, Escolha um par de chaves existente e selecione o par de chaves que você criou para a configuração. Para ter mais informações, consulte Pares de chaves do Amazon EC2 e instâncias do Amazon EC2.

    Importante

    Se você escolher a opção Proceed without key pair (Continuar sem par de chaves), não conseguirá se conectar à instância a menos que escolha uma AMI configurada para permitir aos usuários uma maneira efetuar login.

  12. Para executar uma instância, selecione a caixa de confirmação e escolha Launch Instances (Executar instâncias).

    Se a instância não executar ou o estado passar imediatamente para terminated, em vez de running, consulte Solucionar problemas de execução de instâncias.

AWS CLI
Para criar uma solicitação de instância spot usando run-instances

Use o comando run-instances e especifique as opções da instância spot no parâmetro --instance-market-options.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

Veja a seguir a estrutura de dados a ser especificada no arquivo JSON --instance-market-options. Também é possível especificar ValidUntil e InstanceInterruptionBehavior. Se você não especificar um campo na estrutura de dados, será usado o valor padrão.

O exemplo a seguir cria uma solicitação persistent.

{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent" } }

 

Para criar uma solicitação de instância spot usando request-spot-instances

nota

Não recomendamos o uso do comando request-spot-instances por ser uma API herdada e sem investimento planejado. Para obter mais informações, consulte Qual é o melhor método de solicitação spot para usar?

Use o comando request-spot-instances para criar uma solicitação única:

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json

Use o comando request-spot-instances para criar uma requisição persistente:

aws ec2 request-spot-instances \ --instance-count 5 \ --type "persistent" \ --launch-specification file://specification.json

Para que os arquivos de especificação de execução de exemplo sejam usados com esses comandos, consulte Exemplo de especificações de execução de solicitações de instância spot. Se você baixar um arquivo de especificação de execução no console de solicitações de spot, use o comando request-spot-fleet (o console de solicitações spot especifica uma solicitação de instância spot usando uma frota spot).

Encontrar Instâncias spot em execução

O Amazon EC2 inicia uma instância spot quando há capacidade disponível. A instância spot será executada até ser interrompida ou até você a encerrar.

Para localizar Instâncias spot em execução (console)
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Solicitações spot. É possível ver solicitações de instância Spot e solicitações de frota spot. Se uma solicitação de instância spot tiver sido atendida, a Capacity (Capacidade) será o ID da instância spot. Em uma frota spot, a Capacity (Capacidade) indica quanto da capacidade solicitada foi atendida. Para visualizar os IDs das instâncias em uma frota spot, escolha a seta de expansão ou selecione a frota e escolha Instances (Instâncias).

    nota

    Para solicitações de instância spot criadas por uma frota spot, as solicitações não são marcadas instantaneamente com a tag do sistema que indica a frota spot a qual pertencem, e por um período podem parecer estarem separadas da solicitação de frota spot.

    Como alternativa, no painel de navegação, escolha Instâncias. No canto superior direito, escolha o ícone ( ) e em Attribute columns (Colunas de atributo), selecione Instance lifecycle (Ciclo de vida da instância). Para cada instância, o Instance lifecycle (Ciclo de vida da instância) é normal, spot ou scheduled.

Para encontrar instâncias spot em execução (AWS CLI)

Para enumerar as Instâncias spot, use o comando describe-spot-instance-requests com a opção --query.

aws ec2 describe-spot-instance-requests \ --query "SpotInstanceRequests[*].{ID:InstanceId}"

A seguir está um exemplo de saída:

[ { "ID": "i-1234567890abcdef0" }, { "ID": "i-0598c7d356eba48d7" } ]

Como alternativa, é possível enumerar as Instâncias spot usando o comando describe-instances com a opção --filters.

aws ec2 describe-instances \ --filters "Name=instance-lifecycle,Values=spot"

Para descrever uma instância spot única, use o comando describe-spot-instance-requests com a opção --spot-instance-request-ids.

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-08b93456

Marcar solicitações de instância spot

Para categorizar e gerenciar as solicitações de instância spot, é possível marcá-las com metadados personalizados. É possível atribuir uma tag a uma solicitação de instância spot ao criá-la ou posteriormente. É possível atribuir tags usando o console do Amazon EC2 ou uma ferramenta da linha de comando.

Quando você marca uma solicitação de instância spot, as instâncias e os volumes executados pela solicitação de instância spot não são marcados automaticamente. É necessário marcar explicitamente as instâncias e os volumes executados pela solicitação de instância spot. É possível atribuir volumes e uma tag a uma instância spot durante a execução ou posteriormente.

Para obter mais informações sobre como as tags funcionam, consulte Marcar com tag os recursos do Amazon EC2.

Pré-requisitos

Conceda ao usuário permissão para marcar recursos. Para obter mais informações sobre políticas do IAM e políticas de exemplo, consulte Exemplo: marcar recursos.

A política do IAM criada é determinada pelo método usado para criação de uma solicitação de instância spot.

Para conceder a um usuário do IAM permissão para marcar recursos ao usar o assistente de inicialização ou run-instances

Crie uma política do IAM que inclua o seguinte:

  • A ação ec2:RunInstances. Essa ação concede ao usuário permissão para iniciar uma instância.

  • Em Resource, especifique spot-instances-request. Essa ação permite que os usuários criem solicitações de instância spot, que solicitam instâncias spot.

  • A ação ec2:CreateTags. Essa ação concede ao usuário permissão para criar tags.

  • Em Resource, especifique *. Isso permite que os usuários marquem todos os recursos criados durante a execução da instância.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
nota

Ao usar a ação RunInstances para criar solicitações de instância spot e marcar as solicitações de instância spot na criação, você precisa estar ciente de como o Amazon EC2 avalia o recurso spot-instances-request na instrução RunInstances.

O recurso spot-instances-request é avaliado na política do IAM da seguinte forma:

  • Se você não marcar uma solicitação de instância spot na criação, o Amazon EC2 não avaliará o recurso spot-instances-request na instrução RunInstances.

  • Se você marcar uma solicitação de instância spot na criação, o Amazon EC2 avaliará o recurso spot-instances-request na instrução RunInstances.

Portanto, para o recurso spot-instances-request, as seguintes regras se aplicam à diretiva do IAM:

  • Caso você use RunInstances para criar uma solicitação de instância spot e não pretenda marcar a solicitação de instância spot na criação, não será necessário permitir explicitamente o recurso spot-instances-request. A chamada terá êxito.

  • Caso use RunInstances para criar uma solicitação de instância spot e pretenda marcar a solicitação de instância spot na criação, você deverá incluir o recurso spot-instances-request na instrução de permissão RunInstances, caso contrário, a chamada falhará.

  • Caso você use RunInstances para criar uma solicitação de instância spot e pretenda marcar a solicitação de instância spot na criação, especifique o recurso spot-instances-request ou inclua um curinga * na instrução de permissão CreateTags, caso contrário, a chamada falhará.

Por exemplo, políticas do IAM, incluindo políticas que não são compatíveis com solicitações de instância spot, consulte Trabalhar com Instâncias spot.

Para conceder a um usuário permissão para marcar recursos ao usar request-spot-instances

Crie uma política do IAM que inclua o seguinte:

  • A ação ec2:RequestSpotInstances. Isso concede ao usuário permissão para criar uma solicitação de instância spot.

  • A ação ec2:CreateTags. Essa ação concede ao usuário permissão para criar tags.

  • Em Resource, especifique spot-instances-request. Isso permite que os usuários marquem somente a solicitação de instância spot.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" }

Marcar uma nova solicitação de instância spot

Para marcar uma nova solicitação de instância spot usando o console
  1. Siga o procedimento do Criar uma solicitação de instância spot.

  2. Para adicionar uma tag, na página Adicionar tags, escolha Adicionar tag e insira a chave e o valor da tag. Escolha Adicionar outra tag para cada tag adicional.

    Para cada tag, é possível marcar a solicitação de instância spot, as instâncias spot e os volumes com a mesma tag. Para marcar os três, verifique se as opções Instances (Instâncias), Volumes e Spot Instance Requests (Solicitações de instâncias spot) estão selecionadas. Para marcar apenas um ou dois, verifique se os recursos que deseja marcar estão selecionados e os outros recursos estão limpos.

  3. Preencha os campos obrigatórios para criar uma solicitação de instância spot e escolha Launch (Executar). Para ter mais informações, consulte Criar uma solicitação de instância spot.

Para marcar uma nova solicitação de instância spot usando a AWS CLI

Para marcar uma solicitação de instância spot ao criá-la, defina-a da seguinte maneira:

  • Especifique as tags para a solicitação de instância spot usando o parâmetro --tag-specification.

  • Para ResourceType, especifique spot-instances-request. Se você especificar outro valor, ocorrerá falha na solicitação de instância spot.

  • Em Tags, especifique o par de chave/valor. É possível especificar mais de um par de chave/valor.

No exemplo a seguir, a solicitação de instância spot é marcada com duas tags: Key=Environment e Value=Production, e Key=Cost-Center e Value=123.

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'

Marcar uma solicitação de instância spot existente

Para marcar uma solicitação de instância spot existente usando o console

Depois de criar uma solicitação de instância spot, é possível adicionar tags à solicitação de instância spot usando o console.

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

  1. No painel de navegação, selecione Solicitações spot.

  2. Selecione sua solicitação de instância spot.

  3. Escolha a guia Tags e Create Tag (Criar tag).

Para marcar uma solicitação de instância spot existente usando o console

Depois que sua solicitação de instância spot tiver executado a instância spot, será possível adicionar tags à instância usando o console. Para ter mais informações, consulte Adicionar e excluir tags em um recurso individual.

Para marcar uma solicitação de instância spot existente ou instância spot usando a AWS CLI

Use o comando create-tags para marcar os recursos existentes. No exemplo a seguir, a solicitação de instância spot e a instância spot existentes são marcadas com Key=purpose e Value=test.

aws ec2 create-tags \ --resources sir-08b93456 i-1234567890abcdef0 \ --tags Key=purpose,Value=test

Exibir tags de solicitação de instância spot

Para visualizar tags de solicitação de instância spot usando o console

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

  1. No painel de navegação, selecione Solicitações spot.

  2. Selecione sua solicitação de instância spot e escolha a guia Tags.

Para descrever as tags de solicitação de instância spot

Use o comando describe-tags para visualizar as tags para o recurso especificado. No exemplo a seguir, você descreve as tags da solicitação especificada.

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sir-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Another value" } ] }

Também é possível visualizar as tags de uma solicitação de instância spot descrevendo a solicitação de instância spot.

Use o comando describe-spot-instance-requests para visualizar a configuração da solicitação de instância spot especificada, que inclui todas as tags especificadas para a solicitação.

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotInstanceRequests": [ { "CreateTime": "2020-06-24T14:22:11+00:00", "InstanceId": "i-1234567890EXAMPLE", "LaunchSpecification": { "SecurityGroups": [ { "GroupName": "launch-wizard-6", "GroupId": "sg-1234567890EXAMPLE" } ], "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 8, "VolumeType": "gp2" } } ], "ImageId": "ami-1234567890EXAMPLE", "InstanceType": "t2.micro", "KeyName": "my-key-pair", "NetworkInterfaces": [ { "DeleteOnTermination": true, "DeviceIndex": 0, "SubnetId": "subnet-11122233" } ], "Placement": { "AvailabilityZone": "eu-west-1c", "Tenancy": "default" }, "Monitoring": { "Enabled": false } }, "LaunchedAvailabilityZone": "eu-west-1c", "ProductDescription": "Linux/UNIX", "SpotInstanceRequestId": "sir-1234567890EXAMPLE", "SpotPrice": "0.012600", "State": "active", "Status": { "Code": "fulfilled", "Message": "Your spot request is fulfilled.", "UpdateTime": "2020-06-25T18:30:21+00:00" }, "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ], "Type": "one-time", "InstanceInterruptionBehavior": "terminate" } ] }

Cancelar uma solicitação de instância spot

Se você não quiser mais sua solicitação de instância spot, poderá cancelá-la. Você só pode cancelar solicitações de instância spot que estão open, active ou disabled.

  • A solicitação de instância spot é open quando sua requisição não ainda não foi atendida e nenhuma instância foi iniciada.

  • A solicitação de instância spot é active quando ela foi atendida e as instâncias spot foram inicializadas como resultado.

  • Sua solicitação de instância spot é disabled quando você interrompe a instância spot.

Se a solicitação de instância spot estiver active e tiver uma instância spot associada em execução, o cancelamento da solicitação não encerrará a instância. Para obter mais informações sobre como encerrar uma instância spot, consulte Encerrar uma instância spot.

Para cancelar uma solicitação de instância spot (console)
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Spot Requests (Solicitações spot) e selecione a solicitação da instância spot.

  3. Escolha Ações, Cancelar solicitação.

  4. (Opcional) Ao terminar de trabalhar com as Instâncias spot associadas, será possível encerrá-las. Na caixa de diálogo Cancelar solicitação spot, selecione Encerrar instâncias e escolha Confirmar.

Para cancelar uma solicitação de instância spot (AWS CLI)
  • Use o comando cancel-spot-instance-requests para cancelar a solicitação de instância spot especificada.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456

Interromper uma instância spot

Caso você não precise da Instâncias spot agora, mas quiser reiniciá-las posteriormente sem perder os dados persistentes no volume do Amazon EBS, é possível interrompê-los. As etapas para interromper uma instância spot são semelhantes às etapas para interromper uma instância sob demanda.

nota

Quando uma instância spot for interrompida, será possível modificar alguns atributos da instância, mas não o tipo dela.

Não cobramos pelo uso de uma instância spot interrompida nem por taxas de transferência de dados, mas cobramos pelo armazenamento dos volumes do Amazon EBS.

Limitações
  • Será possível interromper uma instância spot somente se ela tiver sido executada por meio de uma solicitação de instância spot persistent.

  • Não será possível interromper uma instância spot se a solicitação da instância spot associada for cancelada. Quando a solicitação da instância spot for cancelada, você só poderá terminar a instância spot.

  • Não é possível interromper uma instância spot se ela for parte de uma frota ou de um grupo de inicialização ou grupo de zona de disponibilidade.

Console
Para interromper uma instância spot (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) e selecione a instância spot.

  3. Escolha Instance state (Estado da instância) e Stop instance (Interromper instância).

  4. Quando a confirmação for solicitada, escolha Parar.

AWS CLI
Para interromper uma instância Spot (AWS CLI)
  • Use o comando stop-instances para interromper manualmente uma ou mais Instâncias spot.

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0

Iniciar uma instância spot

É possível iniciar uma instância spot que você encerrou anteriormente. As etapas para iniciar uma instância spot são semelhantes às etapas para iniciar uma instância sob demanda.

Pré-requisitos

É possível iniciar uma instância spot somente se:

  • Você interrompeu manualmente a instância spot.

  • A instância spot é uma instância com EBS.

  • A capacidade da instância spot está disponível.

  • O preço spot é inferior ao preço máximo.

Limitações
  • Não é possível iniciar uma instância spot se ela fizer parte da frota ou do grupo de inicialização ou grupo de zona de disponibilidade.

Console
Para iniciar uma instância Spot (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) e selecione a instância spot.

  3. Escolha Instance state (Estado da instância) e Start instance (Iniciar instância).

AWS CLI
Para iniciar uma instância spot (AWS CLI)
  • Use o comando start-instances para iniciar uma ou mais Instâncias spot manualmente.

    aws ec2 start-instances --instance-ids i-1234567890abcdef0

Encerrar uma instância spot

Se você terminar uma instância spot em execução ou interrompida que foi executada por uma solicitação de instância spot persistente, a solicitação de instância spot fará a transição para o estado open para que a nova instância spot seja iniciada. Para garantir que nenhuma instância spot nova seja iniciada, primeiro é necessário cancelar a solicitação de instância spot.

Se você cancelar uma solicitação de instância spot active com uma instância spot em execução, a instância spot em execução não será automaticamente terminada, e você deverá terminá-la manualmente.

Se você cancelar uma solicitação de instância spot disabled com uma instância spot interrompida, a instância spot interrompida será automaticamente terminada pelo serviço spot do Amazon EC2. Pode haver um pequeno atraso entre o momento em que você cancelar a solicitação de instância spot e o momento em que o serviço spot terminar a instância spot.

Para obter informações sobre como cancelar uma solicitação de instância spot, consulte Cancelar uma solicitação de instância spot.

Console
Para encerrar manualmente uma instância spot 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. Para confirmar se a instância é uma instância spot, verifique se aparece spot na coluna Instance lifecycle (Ciclo de vida da instância).

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

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

AWS CLI
Para encerrar manualmente uma instância spot usando a AWS CLI
  • Use o comando terminate-instances para encerrar a Instâncias spot manualmente.

    aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7