

# Frota do EC2 e frota spot
<a name="Fleets"></a>

A frota do EC2 e a frota spot se destinam a constituírem uma forma útil de inicializar uma frota de dezenas, centenas ou milhares de instâncias do Amazon EC2 em uma única operação. Cada instância em uma frota é configurada por um [modelo de inicialização](ec2-launch-templates.md) ou por um conjunto de parâmetros de inicialização que você configura manualmente na inicialização.

**Topics**
+ [Recursos e benefícios](#ec2-fleet-features-and-benefits)
+ [Qual é o melhor método de frota a ser usado?](which-fleet-method-to-use.md)
+ [Opções de configuração para frota do EC2 ou frota spot](ec2-fleet-configuration-strategies.md)
+ [Trabalhar com uma frota do EC2](manage-ec2-fleet.md)
+ [Trabalhar com frotas spot](work-with-spot-fleets.md)
+ [Monitorar o EC2 Fleet ou a frota spot](fleet-monitor.md)
+ [Tutoriais para o EC2 Fleet](fleet-tutorials.md)
+ [Exemplo de configurações da CLI para frotas do EC2](ec2-fleet-examples.md)
+ [Exemplo de configurações da CLI para frotas spot](spot-fleet-examples.md)
+ [Cotas para frotas do EC2 e frotas spot](fleet-quotas.md)

## Recursos e benefícios
<a name="ec2-fleet-features-and-benefits"></a>

As frotas proporcionam os recursos e benefícios a seguir, permitindo que você maximize a economia de custos e otimize a disponibilidade e a performance quando executar aplicações em várias instâncias do EC2.

**Vários tipos de instâncias**  
Uma frota pode inicializar vários tipos de instâncias, garantindo que não dependa da disponibilidade de um único tipo de instância. Isso aumenta a disponibilidade geral das instâncias na frota.

**Distribuição de instâncias entre zonas de disponibilidade**  
Uma frota pode ser inicializada em várias zonas de disponibilidade, permitindo que você reduza custos e melhore a disponibilidade. Se sua frota incluir instâncias spot, ela selecionará automaticamente as zonas de disponibilidade com base em suas preferências em relação a preços e interrupções.

**Várias opções de compra**  
Uma frota pode inicializar várias opções de compra (instâncias spot e instâncias sob demanda), permitindo que você otimize os custos por meio do uso da instância spot. Você também pode aproveitar os descontos da instância reservada e dos Savings Plans usando-os com as instâncias sob demanda na frota. 

**Substituição automatizada de instâncias spot**  
Se a frota incluir instâncias spot, ela poderá solicitar automaticamente a reposição da capacidade spot se as instâncias spot forem interrompidas. Por meio do [Rebalanceamento de capacidade](ec2-fleet-capacity-rebalance.md), uma frota também pode monitorar e substituir proativamente as instâncias spot que apresentem risco elevado de interrupção.

**Reservar capacidade sob demanda**  
Uma frota pode usar uma [Reserva de capacidade sob demanda](ec2-fleet-on-demand-capacity-reservations.md) para reservar capacidade sob demanda. Uma frota também pode incluir [Blocos de capacidade para ML](ec2-capacity-blocks.md), permitindo que você reserve instâncias de GPU para uma data futura a fim de viabilizar workloads de machine learning (ML) de curta duração.

# Qual é o melhor método de frota a ser usado?
<a name="which-fleet-method-to-use"></a>

Como prática recomendada geral, recomendamos executar as frotas de instâncias spot e sob demanda com o Amazon EC2 Auto Scaling, pois ele fornece recursos adicionais que você pode usar para gerenciar sua frota. A lista de recursos adicionais inclui substituições automáticas da verificação de integridade para instâncias spot e sob demanda, verificações de integridade baseadas em aplicações e uma integração com o Elastic Load Balancing para garantir uma distribuição uniforme do tráfego de aplicações para as suas instâncias íntegras. Você também pode usar os grupos do Auto Scaling ao utilizar serviços da AWS, como o Amazon ECS, o Amazon EKS (grupos de nós autogerenciados) e o Amazon VPC Lattice. Para mais informações, consulte o [Guia do usuário do Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/).

Caso não possa usar o Amazon EC2 Auto Scaling, considere usar o EC2 Fleet ou a frota spot. A frota do EC2 e a frota spot oferecem a mesma funcionalidade principal. No entanto, a frota do EC2 só está disponível por meio de uma linha de comando e não fornece suporte a console. A frota spot fornece suporte a console, mas ela se baseia em uma API herdada e sem investimento planejado.

Use a tabela a seguir para determinar o método de frota que será usado.


****  

| Método de frota | Quando usar? | Caso de uso | 
| --- | --- | --- | 
|  [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  Crie um grupo do Auto Scaling que gerencie o ciclo de vida de suas instâncias enquanto mantém o número desejado de instâncias. Compatível com dimensionamento horizontal da escala (adição de mais instâncias) entre os limites mínimo e máximo especificados.  | 
|  [Frota do EC](manage-ec2-fleet.md)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  Crie uma frota `instant` de instâncias sob demanda e instâncias spot em uma única operação, com várias especificações de inicialização, que variem de acordo com o tipo de instância, com a AMI, com a zona de disponibilidade ou com a sub-rede. Por padrão, a estratégia de alocação da instância spot usa `lowest-price` por unidade, mas recomendamos alterá-la para `price-capacity-optimized`.  | 
|  [Frota spot](work-with-spot-fleets.md)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  Use a frota spot somente se precisar de suporte ao console para um caso de uso em que você usaria a frota do EC2.  | 

# Opções de configuração para frota do EC2 ou frota spot
<a name="ec2-fleet-configuration-strategies"></a>

Quando você planejar uma frota do EC2 ou frota spot, recomendamos que você considere as opções a seguir quando decidir como configurar a frota.


****  

| Opção de configuração | Pergunta | Documentação | 
| --- | --- | --- | 
| Tipo de solicitação de frota |  Você deseja criar uma frota spot que envie uma solicitação única para a capacidade de destino desejada ou uma frota spot que mantenha uma capacidade de destino ao longo do tempo?  | [Tipos de solicitação de frota do EC2 e de frota spot](ec2-fleet-request-type.md) | 
| Instâncias spot | Você planeja incluir instâncias spot na frota? Analise as práticas recomendadas de spot e use-as ao planejar a frota para poder provisionar as instâncias com o menor preço possível. | [Práticas recomendadas para instâncias spot do Amazon EC2](spot-best-practices.md) | 
| Limite de gastos da frota | Você quer limitar o valor a ser pago pela frota por hora? | [Definir um limite de gastos para a frota do EC2 ou a frota spot](ec2-fleet-control-spending.md) | 
| Tipos de instância e seleção de tipo de instância baseada em atributos |  Você quer especificar os tipos de instância na frota ou permitir que o Amazon EC2 selecione os tipos de instância que atendam aos requisitos da sua aplicação?  | [Especificar atributos para seleção de tipo de instância para frota do EC2 ou frota spot](ec2-fleet-attribute-based-instance-type-selection.md) | 
| Ponderação de instâncias | Você quer atribuir pesos a cada tipo de instância para representar sua capacidade computacional e sua performance para que o Amazon EC2 possa selecionar qualquer combinação de tipos de instância disponíveis para atender à capacidade de destino? | [Usar ponderação de instâncias para gerenciar o custo e a performance da frota do EC2 ou da frota spot](ec2-fleet-instance-weighting.md) | 
| Estratégias de alocação | Você quer decidir se deseja otimizar a capacidade disponível, o preço ou os tipos de instância para usar nas instâncias spot e nas instâncias sob demanda da frota? | [Usar estratégias de alocação para determinar como a frota do EC2 ou a frota spot atende à capacidade spot e sob demanda](ec2-fleet-allocation-strategy.md) | 
| Rebalanceamento de capacidade | Você quer que a frota substitua automaticamente as instâncias spot em risco? | [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md) | 
| Reserva de capacidade sob demanda | Você quer reservar capacidade para as instâncias sob demanda da frota? | [Use reservas de capacidade para reservar capacidade sob demanda na frota do EC2](ec2-fleet-on-demand-capacity-reservations.md) | 

# Tipos de solicitação de frota do EC2 e de frota spot
<a name="ec2-fleet-request-type"></a>

O tipo de solicitação de uma frota do EC2 ou de frota spot determina se a solicitação é síncrona ou assíncrona e se é uma solicitação única da capacidade de destino desejada ou um esforço contínuo para manter a capacidade ao longo do tempo. Ao configurar a frota, você deve especificar o tipo de solicitação.

Tanto a frota do EC2 quanto a frota spot oferecem dois tipos de solicitação: `request` e `maintain`. Além disso, a frota do EC2 oferece um terceiro tipo de solicitação, denominado `instant`.Tipos de solicitação de frota

`instant` (Somente para frota do EC2)  
Se você configurar o tipo de solicitação como `instant`, a Frota do EC2 incluirá uma solicitação síncrona única da capacidade desejada. A resposta da API retorna as instâncias que foram iniciadas e fornece os erros das instâncias que não puderam ser iniciadas. Para obter mais informações, consulte [Configurar um EC2 Fleet do tipo instant](instant-fleet.md).

`request`  
Se você configurar o tipo de solicitação como `request`, a frota fará uma solicitação assíncrona única da capacidade desejada. Se a capacidade diminuir devido a interrupções de spot, a frota não tentará reabastecer as instâncias spot nem enviará solicitações em grupos de capacidade spot alternativos se a capacidade estiver indisponível. Quando você criar uma frota spot do tipo `request` usando o console, desmarque a caixa de seleção **Manter a capacidade de destino**.

`maintain` (padrão)  
Se você configurar o tipo de solicitação como `maintain`, a frota fará uma solicitação assíncrona única da capacidade desejada e manterá a capacidade ao reabastecer automaticamente as instâncias spot interrompidas. Quando você criar uma frota spot do tipo `maintain` usando o console, marque a caixa de seleção **Manter a capacidade de destino**

# Configurar um EC2 Fleet do tipo instant
<a name="instant-fleet"></a>

A EC2 Fleet do tipo *instantâneo* é uma solicitação síncrona única que faz apenas uma tentativa de iniciar a capacidade desejada. A resposta da API lista as instâncias que foram iniciadas juntamente com os erros das instâncias que não puderam ser iniciadas. Há vários benefícios de se usar uma EC2 Fleet do tipo *Instantâneo*, e eles são descritos neste artigo. Exemplos de configurações são fornecidos no fim do artigo.

Para workloads que precisam de uma API somente de inicialização para iniciar instâncias do EC2, você pode usar a API RunInstances. No entanto, com RunInstances, você só pode iniciar Instâncias sob demanda ou instâncias spot, mas não ambas na mesma solicitação. Além disso, quando você usa RunInstances para iniciar Instâncias spot, sua solicitação de Instância spot é limitada a um tipo de instância e a uma zona de disponibilidade. Isso visa um único grupo de capacidade spot (um conjunto de instâncias com o mesmo tipo de instância e zona de disponibilidade). Se o grupo de capacidade spot não tiver capacidade de instância spot suficiente para sua solicitação, a chamada RunInstances não tem sucesso.

Em vez de usar RunInstances para iniciar Instâncias spot, é recomendável usar a API CreateFleet com o parâmetro `type` definido como `instant` para obter os seguintes benefícios: 
+ **Iniciar Instâncias sob demanda e instâncias spot em uma única solicitação.** Uma EC2 Fleet pode iniciar Instâncias sob demanda, instâncias spot ou ambas. A solicitação das Instâncias spot é atendida se houver capacidade disponível e o preço máximo por hora para sua solicitação excede o preço Spot.
+ **Aumente a disponibilidade das instâncias spot.** Usando uma EC2 Fleet do tipo `instant`, você pode iniciar instâncias spot seguindo as [Práticas recomendadas para spot](spot-best-practices.md) com os benefícios decorrentes disso:
  + **Prática recomendada para spot: seja flexível sobre tipos de instância e zonas de disponibilidade.**

    Benefício: especificando vários tipos de instância e zonas de disponibilidade, você aumenta o número de grupos de capacidade spot. Isso dá ao serviço de spot uma chance maior de encontrar e alocar sua capacidade computacional spot desejada. Uma boa regra geral é ser flexível em pelo menos 10 tipos de instância para cada workload e garantir que todas as zonas de disponibilidade estejam configuradas para uso na sua VPC.
  + **Prática recomendada para spot: use a estratégia de alocação de price-capacity-optimized.**

    Benefício: a estratégia de alocação de `price-capacity-optimized` identifica instâncias nos grupos de capacidade spot com maior disponibilidade e provisiona as instâncias de menor preço desses grupos. Como a capacidade de instâncias spot é proveniente de grupos com capacidade ideal, isso diminui a possibilidade de que as instâncias spot sejam interrompidas quando o Amazon EC2 precisar recuperar capacidade.
+ **Tenha acesso a um conjunto mais amplo de recursos.** Para workloads que precisam de uma API somente de lançamento e em que você prefere gerenciar o ciclo de vida de sua instância em vez de deixar a frota EC2 gerenciá-lo para você, use a EC2 Fleet do tipo `instant` em vez da API [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html). A EC2 Fleet fornece um conjunto mais amplo de recursos do que o RunInstances, conforme demonstrado nos exemplos a seguir. Para todas as outras workloads, você deve usar o Amazon EC2 Auto Scaling, porque ele fornece um conjunto de recursos mais abrangente para uma grande variedade de workloads, como aplicativos apoiados pelo ELB, workloads em contêineres e trabalhos de processamento de fila.

Você pode usar a Frota do EC2 do tipo *instantânea* para iniciar instâncias em blocos de capacidade. Para obter mais informações, consulte [Tutorial: configurar o EC2 Fleet para executar instâncias em blocos de capacidade](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md).

Os serviços da AWS, como o Amazon EC2 Auto Scaling e o Amazon EMR, usam o tipo de EC2 Fleet *instantâneo* para iniciar instâncias do EC2.

## Pré-requisitos para a EC2 Fleet do tipo instantâneo
<a name="instant-fleet-prerequisites"></a>

Para obter os pré-requisitos para criar uma EC2 Fleet, consulte [Pré-requisitos da Frota do EC2](ec2-fleet-prerequisites.md).

## Como uma EC2 Fleet instantânea funciona
<a name="how-instant-fleet-works"></a>

Ao trabalhar com uma EC2 Fleet do tipo `instant`, a sequência de eventos é a seguinte:

1. **Configuração:** configure o tipo de solicitação [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) como `instant`. Para obter mais informações, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md). Observe que, após fazer a chamada de API, você não pode modificá-la.

1. **Solicitação:** ao efetuar a chamada de API, o Amazon EC2 realizará uma solicitação síncrona única para a capacidade desejada.

1. **Resposta:** a resposta da API lista as instâncias que foram iniciadas, juntamente com os erros das instâncias que não puderam ser iniciadas.

1. **Descrição:** é possível descrever a frota do EC2, listar as instâncias associadas à sua frota do EC2 e visualizar o histórico da frota do EC2.

1. **Encerramento de instâncias:** é possível encerrar as instâncias a qualquer momento.

1. **Solicitação de exclusão de frota:** a solicitação de frota pode ser excluída manual ou automaticamente:
   + Manual: é possível [excluir a solicitação de frota](delete-fleet.md) após a inicialização das instâncias.

     Observe que não há suporte para a exclusão de uma frota `instant` com instâncias em execução. Ao excluir uma frota `instant`, o Amazon EC2 encerra automaticamente todas as suas instâncias. Para frotas com mais de mil instâncias, a solicitação de exclusão pode não ser bem-sucedida. Caso sua frota contenha mais de mil instâncias, encerre manualmente a maioria delas, deixando mil ou menos. Em seguida, exclua a frota, e as instâncias restantes serão encerradas automaticamente.
   + Automático: o Amazon EC2 exclui a solicitação de frota após algum tempo, caso ocorra um dos seguintes eventos: 
     + Todas as instâncias estão encerradas.
     + A frota não consegue iniciar nenhuma instância.

## Exemplos
<a name="instant-fleet-examples"></a>

Os exemplos a seguir mostram como usar a EC2 Fleet do tipo `instant` para diferentes casos de uso. Para obter mais informações sobre como usar os parâmetros da APICreateFleet do EC2, consulte [Criar frota](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) na *Referência de API do Amazon EC2*.

**Topics**
+ [Exemplo 1: Iniciar instâncias spot com a estratégia de alocação otimizada para capacidade](#instant-fleet-example-1)
+ [Exemplo 2: iniciar uma única instância spot com a estratégia de alocação otimizada para capacidade](#instant-fleet-example-2)
+ [Exemplo 3: iniciar uma frota spot usando pesos de instâncias](#instant-fleet-example-3)
+ [Exemplo 4: executar instâncias spot dentro de uma única zona de disponibilidade](#instant-fleet-example-4)
+ [Exemplo 5: iniciar instâncias spot de um tipo de instância único dentro de uma única zona de disponibilidade](#instant-fleet-example-5)
+ [Exemplo 6: iniciar instâncias spot somente se a capacidade mínima pretendida puder ser iniciada](#instant-fleet-example-6)
+ [Exemplo 7: iniciar instâncias spot apenas se a capacidade mínima pretendida puder ser iniciada do mesmo tipo de instância em uma única zona de disponibilidade](#instant-fleet-example-7)
+ [Exemplo 8: iniciar instâncias com vários modelos de lançamento](#instant-fleet-example-8)
+ [Exemplo 9: iniciar instância spot com uma base de Instâncias sob demanda](#instant-fleet-example-9)
+ [Exemplo 10: iniciar Instâncias spot usando uma estratégia de alocação otimizada para capacidade com uma base de Instâncias sob demanda usando Reservas de Capacidade e a estratégia de alocação priorizada](#instant-fleet-example-10)
+ [Exemplo 11: iniciar Instâncias spot usando a estratégia de alocação capacity-optimized-prioritized](#instant-fleet-example-11)
+ [Exemplo 12: especifique um parâmetro do Systems Manager em vez de um ID de AMI](#instant-fleet-example-12)

### Exemplo 1: Iniciar instâncias spot com a estratégia de alocação otimizada para capacidade
<a name="instant-fleet-example-1"></a>

O exemplo a seguir especifica os parâmetros mínimos necessários em uma EC2 Fleet do tipo `instant`: um modelo de lançamento, a capacidade pretendida, a opção de compra padrão e as substituições do modelo de lançamento.
+ O modelo de lançamento é identificado por nome e número de versão do modelo de lançamento.
+ As 12 substituições do modelo de lançamento especificam 4 tipos de instância diferentes e 3 sub-redes diferentes, cada uma em uma zona de disponibilidade separada. Cada combinação de tipo de instância e sub-rede define um grupo de capacidade spot, resultando em 12 pools de capacidade spot.
+ A capacidade mínima pretendida para a frota é de 20 instâncias.
+ A opção de compra padrão é `spot`, o que resulta na tentativa da frota de iniciar 20 instâncias spot no grupo de capacidade spot com a capacidade ideal para o número de instâncias que estão sendo iniciadas.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 2: iniciar uma única instância spot com a estratégia de alocação otimizada para capacidade
<a name="instant-fleet-example-2"></a>

Você pode iniciar de forma ideal uma instância spot de cada vez fazendo várias chamadas de API da EC2 Fleet do tipo `instant`, definindo o TotalTargetCapacity como 1.

O exemplo a seguir especifica os parâmetros mínimos necessários em uma EC2 Fleet do tipo instantâneo: um modelo de lançamento, a capacidade pretendida, a opção de compra padrão e as substituições do modelo de lançamento. O modelo de lançamento é identificado por nome e número de versão do modelo de lançamento. As 12 substituições do modelo de lançamento têm 4 tipos de instância diferentes e 3 sub-redes diferentes, cada uma em uma zona de disponibilidade separada. A capacidade pretendida da frota é 1 instância, e a opção de compra padrão é spot, o que resulta na tentativa da frota de iniciar uma instância spot a partir de um dos 12 grupos de capacidade spot com base na estratégia de alocação otimizada para capacidade, para iniciar uma instância spot a partir do grupo de capacidade mais disponível.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 3: iniciar uma frota spot usando pesos de instâncias
<a name="instant-fleet-example-3"></a>

Os exemplos a seguir usam o peso da instância, o que significa que o preço é por hora em vez de ser por hora de instância. Cada configuração de execução lista um tipo de instância diferente e um peso diferente com base em quantas unidades da workload podem ser executadas na instância, pressupondo que uma unidade da workload requeira 15 GB de memória e 4 vCPUs. Por exemplo, m5.xlarge (4 vCPUs e 16 GB de memória) pode executar uma unidade e tem peso 1, m5.2xlarge (8 vCPUs e 32 GB de memória) pode executar 2 unidades e tem peso 2, e assim por diante. A capacidade total pretendida é definida como 40 unidades. A opção de compra padrão é spot, e a estratégia de alocação é otimizada para capacidade, o que resulta em 40 m5.xlarge (40 dividido por 1), 20 m5.2xlarge (40 dividido por 2), 10 m5.4xlarge (40 dividido por 4), 5 m5.8xlarge (40 dividido por 8) ou uma combinação de tipos de instância com pesos que somam a capacidade desejada com base na estratégia de alocação otimizada para capacidade.

Para obter mais informações, consulte [Usar ponderação de instâncias para gerenciar o custo e a performance da frota do EC2 ou da frota spot](ec2-fleet-instance-weighting.md).

```
{
   "SpotOptions":{
      "AllocationStrategy":"capacity-optimized"
   },
   "LaunchTemplateConfigs":[
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":8
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":8
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":8
            }
         ]
      }
   ],
   "TargetCapacitySpecification":{
      "TotalTargetCapacity":40,
      "DefaultTargetCapacityType":"spot"
   },
   "Type":"instant"
}
```

### Exemplo 4: executar instâncias spot dentro de uma única zona de disponibilidade
<a name="instant-fleet-example-4"></a>

Você pode configurar uma frota para iniciar todas as instâncias em uma única zona de disponibilidade definindo as opções de spot SingleAvailabilityZone como true.

As 12 substituições do modelo de lançamento têm tipos de instância e sub-redes diferentes (cada uma em uma zona de disponibilidade separada), mas a mesma capacidade ponderada. A capacidade total pretendida é de 20 instâncias, a opção de compra padrão é spot e a estratégia de alocação spot é otimizada para capacidade. A EC2 Fleet inicia 20 instâncias spot, todas em uma única AZ, a partir dos grupos de capacidade spot com capacidade ideal usando as especificações de lançamento.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleAvailabilityZone": true
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 5: iniciar instâncias spot de um tipo de instância único dentro de uma única zona de disponibilidade
<a name="instant-fleet-example-5"></a>

Você pode configurar uma frota para iniciar todas as instâncias do mesmo tipo de instância em uma única zona de disponibilidade definindo SpotOptions SingleInstanceType como true e SingleAvailabilityZone como true.

As 12 substituições do modelo de lançamento têm tipos de instância e sub-redes diferentes (cada uma em uma zona de disponibilidade separada), mas a mesma capacidade ponderada. A capacidade total pretendida é de 20 instâncias, a opção de compra padrão é spot e a estratégia de alocação spot é otimizada para capacidade. A EC2 Fleet inicia 20 instâncias spot do mesmo tipo de instância, todas em uma única AZ, a partir do grupo de capacidade spot com capacidade ideal usando as especificações de lançamento.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 6: iniciar instâncias spot somente se a capacidade mínima pretendida puder ser iniciada
<a name="instant-fleet-example-6"></a>

Você pode configurar uma frota para iniciar as instâncias somente se a capacidade mínima pretendida puder ser iniciada, definindo as opções de spot MinTargetCapacity como a capacidade pretendida que você deseja iniciar em conjunto.

Ao especificar a MinTargetCapacity, você deve especificar, pelo menos, um destes parâmetros: SingleInstanceType ou SingleAvailabilityZone. Nesse exemplo, SingleInstanceType é especificado para que todas as 20 instâncias devam usar o mesmo tipo de instância.

As 12 substituições do modelo de lançamento têm tipos de instância e sub-redes diferentes (cada uma em uma zona de disponibilidade separada), mas a mesma capacidade ponderada. A capacidade total pretendida e a capacidade mínima pretendida são ambas definidas como 20 instâncias, a opção de compra padrão é spot e a estratégia de alocação de spot é otimizada para capacidade. A Frota do EC2 inicia 20 instâncias spot a partir do grupo de capacidade spot com capacidade ideal usando as substituições do modelo de lançamento, apenas se puder iniciar todas as 20 instâncias ao mesmo tempo.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "MinTargetCapacity": 20
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 7: iniciar instâncias spot apenas se a capacidade mínima pretendida puder ser iniciada do mesmo tipo de instância em uma única zona de disponibilidade
<a name="instant-fleet-example-7"></a>

Você pode configurar uma frota para iniciar as instâncias apenas se a capacidade mínima pretendida puder ser iniciada com um único tipo de instância em uma única zona de disponibilidade, definindo as opções de spot MinTargetCapacity como a capacidade mínima pretendida que você deseja iniciar ao mesmo tempo, juntamente com as opções SingleInstanceType e SingleAvailabilityZone.

As 12 especificações que substituem o modelo de lançamento têm diferentes tipos de instância e sub-redes (cada uma em uma zona de disponibilidade separada), mas a mesma capacidade ponderada. A capacidade total pretendida e a capacidade mínima pretendida são ambas definidas como 20 instâncias, a opção de compra padrão é spot, a estratégia de alocação spot é otimizada para capacidade, SingleInstanceType é true e SingleAvailabilityZone é true. A EC2 Fleet inicia 20 instâncias spot, todas do mesmo tipo de instância e todas em uma única AZ, a partir do grupo de capacidade spot com capacidade ideal usando as especificações de lançamento, apenas se puder iniciar todas as 20 instâncias ao mesmo tempo.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 20
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 8: iniciar instâncias com vários modelos de lançamento
<a name="instant-fleet-example-8"></a>

Você pode configurar uma frota para iniciar instâncias com diferentes especificações de lançamento para diferentes tipos de instância ou um grupo de tipos de instância, especificando vários modelos de lançamento. Neste exemplo, queremos ter diferentes tamanhos de volume do EBS para diferentes tipos de instância e temos isso configurado nos modelos de lançamento ec2-fleet-lt-4xl, ec2-fleet-lt-9xl e ec2-fleet-lt-18xl.

Neste exemplo, usaremos 3 modelos de lançamento diferentes para os 3 tipos de instância, com base em seu tamanho. As especificação de lançamento faz a substituição em todos os modelos de lançamento que usam pesos de instância com base nas vCPUs no tipo de instância. A capacidade total pretendida é de 144 instâncias, a opção de compra padrão é spot e a estratégia de alocação de spot é otimizada para capacidade. A EC2 Fleet pode iniciar 9 c5n.4xlarge (144 dividido por 16) usando o modelo de lançamento ec2-fleet-4xl, ou 4 c5n.9xlarge (144 dividido por 36), usando o modelo de lançamento ec2-fleet-9xl, ou 2 c5n.18xlarge (144 dividido por 72), usando o modelo de lançamento ec2-fleet-18xl, ou uma combinação dos tipos de instância com pesos que somam a capacidade desejada com base na estratégia de alocação otimizada para capacidade.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-18xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":72
            },
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":72
            },
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":72
            }
         ]
      },
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-9xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":36
            },
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":36
            },
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":36
            }
         ]
      },
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-4xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":16
            },
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":16
            },
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":16
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 144,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 9: iniciar instância spot com uma base de Instâncias sob demanda
<a name="instant-fleet-example-9"></a>

O exemplo a seguir especifica a capacidade total pretendida de 20 instâncias para a frota e uma capacidade pretendida de 5 Instâncias sob demanda. A opção de compra padrão é spot. A frota inicia 5 Instâncias sob demanda, conforme especificado, mas precisa iniciar mais 15 instâncias para atender à capacidade total pretendida. A opção de compra para a diferença é calculada como TotalTargetCapacity – OnDemandTargetCapacity = DefaultTargetCapacityType, que resulta no lançamento pela frota de 15 Instâncias spot a partir de um dos 12 grupos de capacidade de spot com base na estratégia de alocação otimizada para capacidade.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity": 5,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 10: iniciar Instâncias spot usando uma estratégia de alocação otimizada para capacidade com uma base de Instâncias sob demanda usando Reservas de Capacidade e a estratégia de alocação priorizada
<a name="instant-fleet-example-10"></a>

É possível configurar uma frota para usar Reservas de Capacidade sob demanda primeiro ao iniciar Instâncias sob demanda com o tipo de capacidade pretendida padrão como spot, definindo a estratégia de uso para Reservas de Capacidade como use-capacity-reservations-first. E se vários grupos de instâncias tiverem Reservas de Capacidade não utilizadas, a estratégia de alocação sob demanda escolhida será aplicada. Neste exemplo, a estratégia de alocação sob demanda é priorizada.

Neste exemplo, há 6 Reservas de Capacidade não utilizadas disponíveis. Isso é menos que a capacidade sob demanda pretendida da frota de 10 Instâncias sob demanda.

A conta tem as seguintes 6 Reservas de Capacidade não utilizadas em 2 grupos diferentes. O número de Reservas de Capacidade em cada grupo é indicado por AvailableInstanceCount.

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
 
{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "c5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

A configuração de frota a seguir mostra somente as configurações pertinentes a este exemplo. A estratégia de alocação sob demanda é priorizada, e a estratégia de uso para Reservas de Capacidade é use-capacity-reservations-first. A estratégia de alocação spot é otimizada para capacidade. A capacidade total pretendida é de 20, a capacidade sob demanda pretendida é de 10 e o tipo de capacidade pretendida padrão é spot.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "OnDemandOptions":{
       "CapacityReservationOptions": {
         "UsageStrategy": "use-capacity-reservations-first"
       },
       "AllocationStrategy":"prioritized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 3.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 4.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 5.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 6.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 7.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 8.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 9.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 10.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 11.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 12.0
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity": 10,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

Depois de criar a frota instantânea usando a configuração anterior, as 20 instâncias a seguir serão iniciadas para atender à capacidade pretendida:
+ 7 Instâncias sob demanda c5.large em us-east-1a – c5.large em us-east-1a é priorizada, e há 3 Reservas de Capacidade c5.large não utilizadas disponíveis. As Reservas de Capacidade são usadas primeiro para iniciar 3 Instâncias sob demanda, e 4 Instâncias sob demanda adicionais são iniciadas de acordo com a estratégia de alocação sob demanda, que é priorizada neste exemplo.
+ 3 Instâncias sob demanda m5.large em us-east-1a: m5.large em us-east-1a é priorizada em segundo lugar, e há 3 reservas de capacidade m5.large não usadas disponíveis
+ 10 instâncias spot a partir de um dos 12 grupos de capacidade spot que tem a capacidade ideal, de acordo com a estratégia de alocação otimizada para capacidade.

Depois que a frota for lançada, você poderá executar [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) para ver quantas Reservas de Capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de Capacidade de c5.large e m5.large foram usadas.

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}
 
{
    "CapacityReservationId": "cr-222",
    "InstanceType": "c5.large", 
    "AvailableInstanceCount": 0
}
```

### Exemplo 11: iniciar Instâncias spot usando a estratégia de alocação capacity-optimized-prioritized
<a name="instant-fleet-example-11"></a>

O exemplo a seguir especifica os parâmetros mínimos necessários em uma EC2 Fleet do tipo instantâneo: um modelo de lançamento, a capacidade pretendida, a opção de compra padrão e as substituições do modelo de lançamento. O modelo de lançamento é identificado por nome e número de versão do modelo de lançamento. As 12 especificações que substituem o modelo de lançamento têm 4 tipos de instância diferentes com uma prioridade atribuída e 3 sub-redes diferentes, cada uma em uma zona de disponibilidade separada. A capacidade pretendida para a frota é de 20 instâncias, e a opção de compra padrão é spot, o que resulta na tentativa da frota de iniciar 20 instâncias spot a partir de um dos 12 grupos de capacidade spot com base na estratégia de alocação capacity-optimized-prioritized, que tenta ao máximo implementar as prioridades, mas otimiza a capacidade em primeiro lugar.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 2.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 4.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 4.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 4.0
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### Exemplo 12: especifique um parâmetro do Systems Manager em vez de um ID de AMI
<a name="instant-fleet-example-12"></a>

O exemplo a seguir usa um modelo de inicialização que especifica a configuração das instâncias na frota. Neste exemplo, em `ImageId`, em vez de especificar um ID da AMI, a AMI é referenciada com um parâmetro do System Manager. Na inicialização da instância, o parâmetro do Systems Manager resolverá para um ID da AMI.

Neste exemplo, o parâmetro do Systems Manager é especificado em um formato válido: `resolve:ssm:golden-ami`. Há outros formatos válidos para o parâmetro do Systems Manager. Para obter mais informações, consulte [Use um parâmetro de Systems Manager em vez de um ID de AMI](create-launch-template.md#use-an-ssm-parameter-instead-of-an-ami-id).

**nota**  
O tipo da frota deve ser do tipo `instant`. Outros tipos de frota não são compatíveis com a especificação de um parâmetro do System Manager em vez de um ID da AMI.

```
{
    "LaunchTemplateData": {
        "ImageId": "resolve:ssm:golden-ami",
        "InstanceType": "m5.4xlarge",
        "TagSpecifications": [{
            "ResourceType": "instance",
            "Tags": [{
                "Key": "Name",
                "Value": "webserver"
            }]
        }]
    }
}
```

# Definir um limite de gastos para a frota do EC2 ou a frota spot
<a name="ec2-fleet-control-spending"></a>

É possível definir um limite de quanto quer gastar por hora na frota do EC2 ou na frota spot. Quando seu limite de gastos for atingido, a frota interromperá a inicialização de instâncias, mesmo que a capacidade de destino não tenha sido atingida.

Existem limites separados de gastos para instâncias sob demanda e instâncias spot.

**Configurar um limite de gastos para instâncias sob demanda e instâncias spot na frota do EC2**  
Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) e os parâmetros a seguir:
+ Em instâncias sob demanda: na estrutura `OnDemandOptions`, especifique seu limite de gastos no campo `MaxTotalPrice`.
+ Em instâncias spot: na estrutura `SpotOptions`, especifique seu limite de gastos no campo `MaxTotalPrice`.

**Configurar um limite de gastos para instâncias sob demanda e instâncias spot na frota spot**  
É possível usar o console do Amazon EC2 ou a AWS CLI para configurar seu limite de gastos.

(Console) Quando criar a frota spot, marque a caixa de seleção **Definir custo máximo para instâncias spot** e, em seguida, insira um valor para **Definir seu custo máximo (por hora)**. Para obter mais informações, consulte a etapa 6.e. em [Criar uma solicitação de frota spot usando parâmetros definidos](create-spot-fleet.md#create-spot-fleet-advanced).

(AWS CLI) Use o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) e os seguintes parâmetros:
+ Em instâncias sob demanda: especifique seu limite de gastos no campo `OnDemandMaxTotalPrice`.
+ Em instâncias spot: especifique seu limite de gastos no campo `SpotMaxTotalPrice`.

## Exemplos
<a name="ec2-fleet-spending-limit-examples"></a>

Os exemplos a seguir mostram duas situações diferentes. No primeiro exemplo, a frota para de inicializar instâncias sob demanda quando atinge a capacidade de destino definida para instâncias sob demanda (`OnDemandTargetCapacity`). No segundo exemplo, a frota para de inicializar instâncias sob demanda ao atingir o valor máximo que você está disposto a pagar por hora pelas instâncias sob demanda (`MaxTotalPrice`).

**Exemplo: parar de inicializar instâncias sob demanda quando a capacidade de destino é atingida**

Dada uma solicitação de `m4.large` Instâncias on-demand, na qual:
+ Preço sob demanda: 0,10 USD por hora
+ `OnDemandTargetCapacity`: 10
+ `MaxTotalPrice`: 1,50 USD

A frota inicializa dez instâncias sob demanda, porque o total de USD 1,00 (10 instâncias x USD 0,10) não excede o `MaxTotalPrice` de USD 1,50 para instâncias sob demanda.

**Exemplo: parar de executar instâncias sob demanda quando o preço máximo total é atingido**

Dada uma solicitação de `m4.large` Instâncias on-demand, na qual:
+ Preço sob demanda: 0,10 USD por hora
+ `OnDemandTargetCapacity`: 10
+ `MaxTotalPrice`: 0,80 USD

Se a frota inicializar a capacidade de destino sob demanda (dez instâncias sob demanda), o custo total por hora será de USD 1,00. Isso é mais que a quantidade (0,80 USD) especificada para `MaxTotalPrice` para Instâncias on-demand. Para evitar gastar mais do que você pretende, a frota inicializará somente oito instâncias sob demanda (abaixo da capacidade de destino sob demanda), porque se inicializar mais, o `MaxTotalPrice` de instâncias sob demanda será excedido.

## Instâncias expansíveis
<a name="ec2-fleet-burstable-spot-instances"></a>

Se você executar as Instâncias spot usando um [tipo de instância expansível](burstable-performance-instances.md) e planeja usar as instâncias spot expansíveis imediatamente e por um breve período, sem tempo ocioso para acumular créditos de CPU, recomendamos executá-las no [modo padrão](burstable-performance-instances-standard-mode.md) para evitar pagar custos mais elevados. Se executar as Instâncias spot expansíveis no [modo ilimitado](burstable-performance-instances-unlimited-mode.md) e esgotar a CPU imediatamente, você gastará os créditos excedentes por isso. Se a instância for usada por um curto período, não haverá tempo para acumular créditos de CPU para pagamento dos créditos excedentes, e você precisará pagar os créditos excedentes ao encerrar a instância.

O modo ilimitado será adequado para instâncias spot expansíveis somente se a instância for executada por tempo suficiente para acumular créditos de CPU para expansão. Caso contrário, pagar por créditos excedentes torna a as instâncias spot expansíveis mais caras do que o uso de outras instâncias. Para obter mais informações, consulte [Quando usar o modo ilimitado versus CPU fixa](burstable-performance-instances-unlimited-mode-concepts.md#when-to-use-unlimited-mode).

Os créditos de lançamento são feitos para fornecer uma experiência de lançamento inicial produtiva para instâncias T2 fornecendo recursos computacionais suficientes para configurar a instância. Lançamentos repetidos de instâncias T2 para acessar novos créditos de lançamento não são permitidos. Se você precisar de uma CPU sustentada, poderá obter créditos (ficando inativo durante um período), usar o [modo Ilimitado](burstable-performance-instances-unlimited-mode.md) para T2 Instâncias spot ou usar um tipo de instância com CPU dedicada.

# Especificar atributos para seleção de tipo de instância para frota do EC2 ou frota spot
<a name="ec2-fleet-attribute-based-instance-type-selection"></a>

Ao criar uma frota do EC2 ou frota spot, você deve especificar um ou mais tipos de instância para configurar as instâncias sob-demanda e as instâncias spot na frota. Como alternativa à especificação manual dos tipos de instância, você pode especificar os atributos que uma instância deve ter, e o Amazon EC2 identificará todos os tipos de instância com esses atributos. Isso é conhecido como *seleção de tipo de instância baseada em atributos*. Por exemplo, você pode especificar o número mínimo e máximo de vCPUs necessárias para suas instâncias, e a frota inicializará as instâncias usando todos os tipos de instância disponíveis que atendam a esses requisitos de vCPU. 

A seleção de tipo de instância baseada em atributos é ideal para workloads e frameworks que possam ser flexíveis em relação a que tipos de instância elas usam, como ao executar contêineres ou frotas da Web, processar big data e implementar ferramentas de integração e implantação contínuas (CI/CD).

**Benefícios**

A seleção de tipo de instância baseada em atributos oferece os seguintes benefícios:
+ **Use facilmente os tipos de instâncias certos**: com tantos tipos de instância disponíveis, encontrar os tipos de instância corretos para a workload pode ser demorado. Se você especificar os atributos de instância, os tipos de instância terão automaticamente os atributos necessários para sua workload.
+ **Configuração simplificada**: para especificar manualmente vários tipos de instância para uma frota, crie uma substituição de modelo de inicialização separada para cada tipo de instância. Mas, com a seleção de tipo de instância baseada em atributos, para fornecer vários tipos de instância, você só precisa especificar os atributos das instâncias no modelo de lançamento ou em uma substituição de modelo de lançamento.
+ **Uso automático de novos tipos de instâncias**: quando atributos de instância são especificados em vez de tipos de instância, sua frota pode usar tipos de instância de gerações mais novas à medida que são lançados, tornando a configuração da frota "à prova de obsolescência". 
+ **Flexibilidade de tipo de instância**: quando você especifica atributos de instância em vez de tipos de instância, a frota pode selecionar em uma ampla variedade de tipos de instância para inicializar instâncias spot, o que atende às [Práticas recomendadas para instâncias spot da flexibilidade de tipo de instância](spot-best-practices.md#be-instance-type-flexible).

**Topics**
+ [Como funciona a seleção de tipo de instância baseada em atributos](#ec2fleet-abs-how-it-works)
+ [Proteção de preço](#ec2fleet-abs-price-protection)
+ [Proteção de performance](#ec2fleet-abis-performance-protection)
+ [Considerações](#ec2fleet-abs-considerations)
+ [Criar uma Frota do EC2 com seleção de tipo de instância baseada em atributos](#abs-create-ec2-fleet)
+ [Criar uma frota spot com seleção de tipo de instância baseada em atributos](#abs-create-spot-fleet)
+ [Exemplos de configurações de frota do EC2 que são válidas e não válidas](#ec2fleet-abs-example-configs)
+ [Exemplos de configurações de frota spot que são válidas e não válidas](#spotfleet-abs-example-configs)
+ [Previsualizar os tipos de instância com os atributos especificados](#ec2fleet-get-instance-types-from-instance-requirements)

## Como funciona a seleção de tipo de instância baseada em atributos
<a name="ec2fleet-abs-how-it-works"></a>

Para usar a seleção de tipo de instância baseada em atributos na configuração de frota, substitua a lista dos tipos de instância por uma lista dos atributos de instância que suas instâncias requerem. A frota do EC2 ou a frota spot inicializará instâncias em todos os tipos de instância disponíveis que tenham os atributos de instância especificados.

**Topics**
+ [Tipos de atributos de instância](#ef-abs-instance-attribute-types)
+ [Onde configurar a seleção de tipo de instância baseada em atributos](#ef-abs-where-to-configure)
+ [Como a frota do EC2 ou a frota spot usa a seleção de tipo de instância baseada em atributos ao provisionar uma frota](#how-ef-uses-abs)

### Tipos de atributos de instância
<a name="ef-abs-instance-attribute-types"></a>

Há vários atributos de instância que você pode especificar para expressar seus requisitos de computação, p. ex.:
+ **Contagem de vCPUs**: o número mínimo e máximo de vCPUs por instância.
+ **Memória**: o mínimo e o máximo de GiBs de memória por instância.
+ **Armazenamento local**: se o sistema deve usar o EBS ou volumes de armazenamento de instâncias para armazenamento local.
+ **Performance intermitente**: se o sistema deve usar a família de instâncias T, incluindo os tipos T4g, T3a, T3 e T2.

Para obter uma descrição de cada atributo e os valores padrão, consulte [InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html) na *Referência de API do Amazon EC2*.

### Onde configurar a seleção de tipo de instância baseada em atributos
<a name="ef-abs-where-to-configure"></a>

Dependendo de você usar o console ou a AWS CLI, é possível especificar os atributos de instância para a seleção de tipo de instância baseada em atributos da seguinte forma:

No console, você pode especificar os atributos de instância nos seguintes componentes de configuração de frota:
+ Em um modelo de inicialização, referencie o modelo de inicialização na solicitação da frota
+ (Somente frota spot) Na solicitação de frota

Na AWS CLI, você pode especificar os atributos de instância em um ou ambos os componentes de configuração de frota a seguir:
+ Em um modelo de inicialização, referencie o modelo de inicialização na solicitação da frota
+ Em uma substituição de modelo de lançamento

  Se desejar uma combinação de instâncias que usam AMIs diferentes, você pode especificar atributos de instância em várias substituições de modelo de lançamento. Por exemplo, diferentes tipos de instância podem usar processadores baseados em x86 e Arm.
+ (Somente frota spot) Em uma especificação de inicialização

### Como a frota do EC2 ou a frota spot usa a seleção de tipo de instância baseada em atributos ao provisionar uma frota
<a name="how-ef-uses-abs"></a>

A frota do EC2 ou a frota spot provisiona uma frota da seguinte maneira:
+ Ela identifica os tipos de instância que têm os atributos especificados.
+ Ela usa proteção de preço para determinar quais tipos de instância excluir.
+ Ela determina os grupos de capacidade dos quais considerará inicializar as instâncias com base nas regiões ou zonas de disponibilidade da AWS que possuem os tipos de instância correspondentes.
+ Ela aplica a estratégia de alocação especificada para determinar os grupos de capacidade dos quais as instâncias serão inicializadas.

  Observe que a seleção de tipo de instância baseada em atributos não escolhe os grupos de capacidade dos quais provisionará a frota; isso cabe às [estratégias de alocação](ec2-fleet-allocation-strategy.md).

  Se você especificar uma estratégia de alocação, a frota inicializará as instâncias de acordo com a estratégia de alocação especificada.
  + Nas instâncias spot, a seleção do tipo de instância baseada em atributos oferece suporte às estratégias de alocação **otimizada para capacidade de preço**, **capacidade otimizada** e **menor preço**. Não recomendamos a estratégia de alocação de spot **menor preço** porque ela representa o risco mais alto de interrupção para as instâncias spot.
  + Para instâncias sob demanda, a seleção de tipo de instância baseada em atributos oferece suporte à estratégia de alocação **menor preço**.
+ Se não houver capacidade para os tipos de instância com os atributos de instância especificados, nenhuma instância poderá ser iniciada e a frota retornará um erro.

## Proteção de preço
<a name="ec2fleet-abs-price-protection"></a>

A proteção de preços é um recurso que impede que a frota do EC2 ou a frota spot use tipos de instância que você consideraria muito caros, mesmo que atendessem aos atributos especificados. Para usar a proteção de preço, você define um limite de preço. Em seguida, quando o Amazon EC2 selecionar tipos de instância com seus atributos, ele excluirá os tipos de instância que tenham preços acima do limite.

A forma como o Amazon EC2 calcula o limite de preço é a seguinte:
+ Primeiro, o Amazon EC2 identifica o tipo de instância com o menor preço dentre aqueles que correspondem aos seus atributos.
+ Em seguida, o Amazon EC2 pegará o valor (expresso como uma porcentagem) que você especificou para o parâmetro de proteção de preço e o multiplicará pelo preço do tipo de instância identificado. O resultado é o preço usado como o limite de preço.

Há limites distintos de preço para instâncias sob demanda e instâncias spot.

Quando você cria uma frota com seleção de tipo de instância baseada em atributos, a proteção de preço é habilitada por padrão. É possível manter os valores padrão ou especificar seus próprios valores.

Você também pode desativar a proteção de preços. Para indicar que não há limite de proteção de preço, especifique um valor percentual alto, como `999999`.

**Topics**
+ [Identificação do tipo de instância com o menor preço](#ec2fleet-abs-price-protection-lowest-priced)
+ [Proteção de preço de instância sob demanda](#ec2fleet-abs-on-demand-price-protection)
+ [Proteção de preço de instância spot](#ec2fleet-abs-spot-price-protection)
+ [Especificar o limite de proteção de preço](#ec2fleet-abs-specify-price-protection)

### Identificação do tipo de instância com o menor preço
<a name="ec2fleet-abs-price-protection-lowest-priced"></a>

O Amazon EC2 determina o preço básico do limite de preço ao identificar o tipo de instância com o menor preço dentre aquelas que correspondem aos atributos especificados. Ele faz isso da seguinte maneira:
+ Primeiro, ele analisa os tipos de instância C, M ou R da geração atual que correspondem aos seus atributos. Se houver alguma correspondência, ele identificará o tipo de instância com o menor preço.
+ Se não houver uma correspondência, ele analisará os tipos de instância da geração atual que correspondem aos seus atributos. Se houver alguma correspondência, ele identificará o tipo de instância com o menor preço.
+ Se não houver correspondência, ele examinará todos os tipos de instância da geração anterior que correspondam aos seus atributos e identificará o tipo de instância com o menor preço.

### Proteção de preço de instância sob demanda
<a name="ec2fleet-abs-on-demand-price-protection"></a>

O limite de proteção de preço para tipos de instância sob demanda é calculado *como uma porcentagem maior* do que o tipo de instância sob demanda de menor preço identificado (`OnDemandMaxPricePercentageOverLowestPrice`). Você especifica maior a porcentagem que está disposto a pagar. Se você não especificar esse parâmetro, um valor padrão de `20` será usado para calcular um limite de proteção de preço 20% superior ao preço identificado.

Por exemplo, se o preço da instância sob demanda identificada for `0.4271`, e você especificar `25`, o limite de preço será 25% maior que `0.4271`. Isso é calculado da seguinte forma: `0.4271 * 1.25 = 0.533875`. O preço calculado é o máximo que você está disposto a pagar por instâncias sob demanda e, neste exemplo, o Amazon EC2 excluirá qualquer tipo de instância sob demanda com preço superior a `0.533875`.

### Proteção de preço de instância spot
<a name="ec2fleet-abs-spot-price-protection"></a>

Por padrão, o Amazon EC2 aplicará automaticamente a proteção de preço de instância spot ideal para selecionar de forma consistente entre uma ampla variedade de tipos de instância. Você também pode definir manualmente a proteção de preço. No entanto, deixar que o Amazon EC2 faça isso por você pode aumentar a probabilidade de que sua capacidade de spot seja atendida.

É possível especificar manualmente a proteção de preço usando uma das opções a seguir. Se você definir manualmente a proteção de preço, recomendamos usar a primeira opção.
+ **Um *percentual do* tipo de instância *sob demanda* com o menor preço identificado** [`MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`]

  Por exemplo, se o preço do tipo de instância sob demanda identificada for `0.4271`, e você especificar `60`, o limite de preço será 60% de `0.4271`. Isso é calculado da seguinte forma: `0.4271 * 0.60 = 0.25626`. O preço calculado é o máximo que você está disposto a pagar por instâncias spot e, neste exemplo, o Amazon EC2 excluirá qualquer tipo de instância spot com preço superior a `0.25626`.
+ **Um *percentual maior do que* o tipo de instância *spot* com o menor preço identificado** [`SpotMaxPricePercentageOverLowestPrice`]

  Por exemplo, se o preço do tipo de instância spot identificada for `0.1808`, e você especificar `25`, o limite de preço será 25% maior que `0.1808`. Isso é calculado da seguinte forma: `0.1808 * 1.25 = 0.226`. O preço calculado é o máximo que você está disposto a pagar por instâncias spot e, neste exemplo, o Amazon EC2 excluirá qualquer tipo de instância spot com preço superior a `0.266`. Não é recomendável usar esse parâmetro, pois os preço spot podem flutuar e, portanto, seu limite de proteção de preço também poderá flutuar.

### Especificar o limite de proteção de preço
<a name="ec2fleet-abs-specify-price-protection"></a>

**Especificar o limite de proteção de preço usando a AWS CLI**

Quando estiver criando uma frota do EC2 ou uma frota spot usando a AWS CLI, configure a frota para seleção de tipo de instância baseada em atributos e, em seguida, faça o seguinte:
+ Para especificar o limite de proteção de preço da instância sob demanda, no arquivo de configuração JSON, em estrutura `InstanceRequirements`, para `OnDemandMaxPricePercentageOverLowestPrice`, insira o limite de proteção de preço como uma porcentagem.
+ Para especificar o limite de proteção de preço da instância spot, no arquivo de configuração JSON, na estrutura `InstanceRequirements`, especifique *um* destes parâmetros:
  + Para `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`, insira o limite de proteção de preço como uma porcentagem.
  + Para `SpotMaxPricePercentageOverLowestPrice`, insira o limite de proteção de preço como uma porcentagem.

Para ter mais informações, consulte [Criar uma Frota do EC2 com seleção de tipo de instância baseada em atributos](#abs-create-ec2-fleet) ou [Criar uma frota spot com seleção de tipo de instância baseada em atributos](#abs-create-spot-fleet).

**(Somente frota spot) Para especificar o limite de proteção de preço usando o console**

Quando estiver criando uma frota spot, configure a frota para seleção de tipo de instância baseada em atributos e, em seguida, faça o seguinte:
+ Para especificar o limite de proteção de preço da instância sob demanda, em **Atributo de instância adicional**, escolha **Proteção de preços sob demanda** e **Adicionar atributo** e insira o limite de proteção de preço como uma porcentagem.
+ Para especificar o limite de proteção de preço da instância sob demanda, em **Atributo de instância adicional**, escolha **Proteção de preço spot**, **Adicionar atributo**, escolha um valor básico no qual basear o preço e, em seguida, insira o limite de proteção de preço como uma porcentagem.

**nota**  
Ao criar a frota, se você definir `TargetCapacityUnitType` para `vcpu` ou `memory-mib`, o limite de proteção de preço será aplicado com base no preço por VCPU ou no preço por memória, em vez de no preço por instância.

## Proteção de performance
<a name="ec2fleet-abis-performance-protection"></a>

A *proteção de performance* é um recurso para garantir que a frota do EC2 ou frota spot use tipos de instância que sejam semelhantes ou excedam uma linha de base de performance especificada. Para usar a proteção de performance, especifique uma família de instâncias como referência de linha de base. Os recursos da família de instâncias especificada estabelecem o nível de performance mais baixo aceitável. Quando o Amazon EC2 seleciona tipos de instância para sua frota, ele considera os atributos e a linha de base de performance especificados. Os tipos de instância que estão abaixo da linha de base de performance são automaticamente excluídos da seleção, mesmo que correspondam aos outros atributos especificados. Isso garante que todos os tipos de instância selecionados ofereçam performance semelhante ou melhor do que a linha de base estabelecida pela família de instâncias especificada. O Amazon EC2 usa essa linha de base para orientar a seleção do tipo de instância, mas não há garantia de que os tipos de instância selecionados sempre excederão a linha de base de cada aplicação.

No momento, esse recurso oferece suporte apenas à performance da CPU como fator de performance da linha de base. A performance da CPU do processador de CPU da família de instâncias especificada serve como linha de base de performance, garantindo que os tipos de instância selecionados sejam semelhantes ou excedam essa linha de base. Famílias de instâncias com os mesmos processadores de CPU levam aos mesmos resultados de filtragem, mesmo que a performance da rede ou do disco seja diferente. Por exemplo, especificar `c6in` ou `c6i` como referência de linha de base produziria resultados de filtragem idênticos com base na performance porque as duas famílias de instâncias usam o mesmo processador de CPU.

**Famílias de instâncias não compatíveis**  
As famílias de instâncias a seguir **não oferecem suporte** à proteção de performance:
+ **Uso geral**: Mac1 \$1 Mac2 \$1 Mac2-m1ultra \$1 Mac2-m2 \$1 Mac2-m2pro \$1 M1 \$1 M2 \$1 T1
+ **Otimizada para computação:** C1
+ **Otimizadas para memória:** U-3tb1 \$1 U-6tb1 \$1 U-9tb1 \$1 U-12tb1 \$1 U-18tb1 \$1 U-24tb1 \$1 U7i-12tb \$1 U7in-16tb \$1 U7in-24tb \$1 U7in-32tb
+ **Computação acelerada:** G3 \$1 G3s \$1 P3dn \$1 P4d \$1 P5
+ **Computação de alta performance:** Hpc7g

Se você habilitar a proteção de performance especificando uma família de instâncias compatível, os tipos de instância retornados excluirão as famílias de instâncias incompatíveis acima.

Se você especificar uma família de instâncias não compatível como um valor para a performance da linha de base, a API retornará uma resposta vazia para [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) e uma exceção para [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html), [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html), [ModifyFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyFleet.html) e [ModifySpotFleetRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySpotFleetRequest.html).

**Exemplo: definir uma linha de base de performance da CPU**  
No exemplo a seguir, o requisito da instância é ser iniciada com tipos de instância que tenham núcleos de CPU com a mesma performance da família de instâncias `c6i`. Isso filtrará os tipos de instância com processadores de CPU de performance inferior, mesmo que atendam aos outros requisitos de instância especificados, como o número de vCPUs. Por exemplo, se os atributos de instância especificados incluírem 4 vCPUs e 16 GB de memória, um tipo de instância com esses atributos, mas com performance de CPU inferior ao `c6i`, será excluído da seleção.

```
"BaselinePerformanceFactors": {
        "Cpu": {
            "References": [
                {
                    "InstanceFamily": "c6i"
                }
            ]
        }
```

## Considerações
<a name="ec2fleet-abs-considerations"></a>
+ É possível especificar tipos de instância ou atributos de instância em uma frota do EC2 ou frota spot, mas não ambos ao mesmo tempo.

  Ao usar a CLI, as substituições do modelo de lançamento prevalecerão sobre o modelo de lançamento. Por exemplo, se o modelo de lançamento contiver um tipo de instância e a substituição do modelo de lançamento contiver atributos de instância, as instâncias identificadas pelos atributos da instância prevalecerão sobre o tipo de instância no modelo de lançamento.
+ Ao usar a CLI, quando você especifica atributos de instância como substituições, não pode especificar também pesos ou prioridades.
+ É possível especificar, no máximo, quatro estruturas de `InstanceRequirements` em uma configuração de solicitação.

## Criar uma Frota do EC2 com seleção de tipo de instância baseada em atributos
<a name="abs-create-ec2-fleet"></a>

É possível configurar uma frota do EC2 para usar a seleção de tipo de instância baseada em atributos. Não é possível criar uma frota do EC2 usando o console do Amazon EC2.

Os parâmetros para a seleção de tipo de instância baseada nos atributos são especificados na estrutura `InstanceRequirements`. Quando `InstanceRequirements` for incluído na configuração da frota, `InstanceType` e `WeightedCapacity` deverão ser excluídos; eles não podem determinar a configuração da frota ao mesmo tempo que os atributos da instância.

Nos exemplos da AWS CLI e do PowerShell, os seguintes atributos são especificados:
+ `VCpuCount`: no mínimo 2 vCPUs e no máximo 4 vCPUs. Se você não precisar de um limite máximo, poderá omitir o valor máximo.
+ `MemoryMiB`: mínimo de 8 GiB de memória e máximo de 16 GiB. Se você não precisar de um limite máximo, poderá omitir o valor máximo.

Essa configuração identifica quaisquer tipos de instância com 2 a 4 vCPUs e 8 a 16 GiB de memória. Porém, a estratégia proteção de preços e de alocação pode excluir alguns tipos de instância quando a [Frota do EC2 provisiona a frota](#how-ef-uses-abs).

------
#### [ AWS CLI ]

**Para criar uma frota do EC2 com a seleção de tipo de instância baseada em atributos**  
Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) para criar uma frota do EC2. Especifique a configuração da frota em um arquivo JSON.

```
aws ec2 create-fleet \
    --region us-east-1 \
    --cli-input-json file://file_name.json
```

O arquivo de exemplo `file_name.json` a seguir contém os parâmetros que configuram uma frota do EC2 para usar a seleção de tipo de instância baseada em atributos.

```
{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized"
    },
    "LaunchTemplateConfigs": [{
        "LaunchTemplateSpecification": {
            "LaunchTemplateName": "my-launch-template",
            "Version": "1"
        },
        "Overrides": [{
            "InstanceRequirements": {
                "VCpuCount": {
                    "Min": 2,
                    "Max": 4
                },
                "MemoryMiB": {
                    "Min": 8192,
                    "Max": 16384
                }
            }
        }]
    }],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

------
#### [ PowerShell ]

**Para criar uma frota do EC2 com a seleção de tipo de instância baseada em atributos**  
Use o cmdlet [New-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Fleet.html).

```
$vcpuCount = New-Object Amazon.EC2.Model.VCpuCountRangeRequest
$vcpuCount.Min = 2 
$vcpuCount.Max = 4  
$memoryMiB = New-Object Amazon.EC2.Model.MemoryMiBRequest
$memoryMiB.Min = 8192  
$memoryMiB.Max = 16384  
$instanceRequirements = New-Object Amazon.EC2.Model.InstanceRequirementsRequest
$instanceRequirements.VCpuCount = $vcpuCount
$instanceRequirements.MemoryMiB = $memoryMiB

$launchTemplateSpec = New-Object Amazon.EC2.Model.FleetLaunchTemplateSpecificationRequest
$launchTemplateSpec.LaunchTemplateName = "my-launch-template" 
$launchTemplateSpec.Version = "1"
$override = New-Object Amazon.EC2.Model.FleetLaunchTemplateOverridesRequest
$override.InstanceRequirements = $instanceRequirements
$launchTemplateConfig = New-Object Amazon.EC2.Model.FleetLaunchTemplateConfigRequest
$launchTemplateConfig.LaunchTemplateSpecification = $launchTemplateSpec
$launchTemplateConfig.Overrides = @($override)

New-EC2Fleet `
    -SpotOptions_AllocationStrategy "price-capacity-optimized" `
    -LaunchTemplateConfig @($launchTemplateConfig) `
    -TargetCapacitySpecification_DefaultTargetCapacityType "spot" `
    -TargetCapacitySpecification_TotalTargetCapacity 20 `
    -Type "instant"
```

------

## Criar uma frota spot com seleção de tipo de instância baseada em atributos
<a name="abs-create-spot-fleet"></a>

É possível configurar uma frota para usar a seleção de tipo de instância baseada em atributos.

Os parâmetros para a seleção de tipo de instância baseada nos atributos são especificados na estrutura `InstanceRequirements`. Quando `InstanceRequirements` for incluído na configuração da frota, `InstanceType` e `WeightedCapacity` deverão ser excluídos; eles não podem determinar a configuração da frota ao mesmo tempo que os atributos da instância.

Nos exemplos da AWS CLI e do PowerShell, os seguintes atributos são especificados:
+ `VCpuCount`: no mínimo 2 vCPUs e no máximo 4 vCPUs. Se você não precisar de um limite máximo, poderá omitir o valor máximo.
+ `MemoryMiB`: mínimo de 8 GiB de memória e máximo de 16 GiB. Se você não precisar de um limite máximo, poderá omitir o valor máximo.

Essa configuração identifica quaisquer tipos de instância com 2 a 4 vCPUs e 8 a 16 GiB de memória. Porém, a estratégia proteção de preços e de alocação pode excluir alguns tipos de instância quando a [frota spot provisiona a frota](#how-ef-uses-abs).

------
#### [ Console ]

**Para configurar uma frota spot para seleção de tipo de instância baseada em atributos**

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

1. No painel de navegação, escolha **Spot Requests** (Solicitações de spot) e escolha **Request Spot Instances** (Solicitar instâncias spot).

1. Siga as etapas para criar um frota spot. Para obter mais informações, consulte [Criar uma solicitação de frota spot usando parâmetros definidos](create-spot-fleet.md#create-spot-fleet-advanced).

   Ao criar a frota spot, configure a frota para seleção de tipo de instância baseada em atributos da seguinte forma:

   1. Em **Instance type requirements** (Requisitos de tipo de instância), escolha **Specify instance attributes that match your compute requirements** (Especificar atributos de instância que correspondam aos requisitos de computação).

   1. Em **vCPUs**, insira o número mínimo e máximo desejado de vCPUs. Para não especificar nenhum limite, selecione **No minimum** (Sem mínimo), **No maximum** (Sem máximo) ou ambos.

   1. Em **Memory (GiB)** (Memória), insira a quantidade mínima e máxima de memória desejada. Para não especificar nenhum limite, selecione **No minimum** (Sem mínimo), **No maximum** (Sem máximo) ou ambos.

   1. (Opcional) Em **Additional instance attributes** (Atributos de instância adicionais), você pode, opcionalmente, especificar um ou mais atributos para expressar seus requisitos de computação com mais detalhes. Cada atributo adicional inclui mais restrições à solicitação.

   1. (Opcional) Expanda **Preview matching instance types** (Previsualizar os tipos de instância correspondentes) para visualizar os tipos de instância que têm os atributos especificados.

------
#### [ AWS CLI ]

**Para configurar uma frota spot para seleção de tipo de instância baseada em atributos**  
Use o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) para criar uma solicitação de frota spot. Especifique a configuração da frota em um arquivo JSON.

```
aws ec2 request-spot-fleet \
    --region us-east-1 \
    --spot-fleet-request-config file://file_name.json
```

O arquivo de exemplo `file_name.json` a seguir contém os parâmetros que configuram uma frota spot para usar a seleção de tipo de instância baseada em atributos.

```
{
    "AllocationStrategy": "priceCapacityOptimized",
    "TargetCapacity": 20,
    "Type": "request",
    "LaunchTemplateConfigs": [{
        "LaunchTemplateSpecification": {
            "LaunchTemplateName": "my-launch-template",
            "Version": "1"
        },
        "Overrides": [{
            "InstanceRequirements": {
                "VCpuCount": {
                    "Min": 2,
                    "Max": 4
                },
                "MemoryMiB": {
                    "Min": 8192,
                    "Max": 16384
                }
            }
        }]
    }]
}
```

------
#### [ PowerShell ]

**Para configurar uma frota spot para seleção de tipo de instância baseada em atributos**  
Use o cmdlet [Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html).

```
$vcpuCount = New-Object Amazon.EC2.Model.VCpuCountRange
$vcpuCount.Min = 2 
$vcpuCount.Max = 4  
$memoryMiB = New-Object Amazon.EC2.Model.MemoryMiB
$memoryMiB.Min = 8192  
$memoryMiB.Max = 16384  
$instanceRequirements = New-Object Amazon.EC2.Model.InstanceRequirements
$instanceRequirements.VCpuCount = $vcpuCount
$instanceRequirements.MemoryMiB = $memoryMiB

$launchTemplateSpec = New-Object Amazon.EC2.Model.FleetLaunchTemplateSpecification
$launchTemplateSpec.LaunchTemplateName = "my-launch-template" 
$launchTemplateSpec.Version = "1"
$override = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
$override.InstanceRequirements = $instanceRequirements
$launchTemplateConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchTemplateConfig.LaunchTemplateSpecification = $launchTemplateSpec
$launchTemplateConfig.Overrides = @($override)

Request-EC2SpotFleet `
    -SpotFleetRequestConfig_AllocationStrategy "PriceCapacityOptimized" `
    -SpotFleetRequestConfig_TargetCapacity 20 `
    -SpotFleetRequestConfig_Type "Request" `
    -SpotFleetRequestConfig_LaunchTemplateConfig $launchTemplateConfig
```

------

## Exemplos de configurações de frota do EC2 que são válidas e não válidas
<a name="ec2fleet-abs-example-configs"></a>

Se você usar a AWS CLI para criar uma Frota do EC2, deve garantir que a configuração de frota seja válida. Exemplos de configurações que são válidas e não válidas.

As configurações são consideradas não válidas quando contiverem o seguinte:
+ Uma única estrutura de `Overrides` com `InstanceRequirements` e `InstanceType`
+ Duas estruturas de `Overrides`, uma com `InstanceRequirements` e outra com `InstanceType`
+ Duas estruturas de `InstanceRequirements` com valores de atributo sobrepostos na mesma `LaunchTemplateSpecification`

**Topics**
+ [Configuração válida: modelo de lançamento único com substituições](#ef-abs-example-config1)
+ [Configuração válida: modelo de lançamento único com vários InstanceRequirements](#ef-abs-example-config2)
+ [Configuração válida: dois modelos de lançamento com substituições em cada](#ef-abs-example-config3)
+ [Configuração válida: somente `InstanceRequirements` especificados, sem valores de atributo sobrepostos](#ef-abs-example-config4)
+ [Configuração não válida: `Overrides` contém`InstanceRequirements` e `InstanceType`](#ef-abs-example-config5)
+ [Configuração não válida: duas `Overrides` contêm `InstanceRequirements` e `InstanceType`](#ef-abs-example-config6)
+ [Configuração não válida: valores de atributo sobrepostos](#ef-abs-example-config7)

### Configuração válida: modelo de lançamento único com substituições
<a name="ef-abs-example-config1"></a>

A configuração a seguir é válida. Ela contém um modelo de lançamento e uma estrutura de `Overrides` contendo uma estrutura de `InstanceRequirements`. A seguir está um texto explicativo do exemplo de configuração.

```
{
        "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "My-launch-template",
                "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 2,
                            "Max": 8
                        },
                        "MemoryMib": {
                            "Min": 0,
                            "Max": 10240
                        },
                        "MemoryGiBPerVCpu": {
                            "Max": 10000
                        },
                        "RequireHibernateSupport": true
                    }
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 5000,
        "DefaultTargetCapacityType": "spot",
        "TargetCapacityUnitType": "vcpu"
        }
    }
}
```

****`InstanceRequirements`****  
Para usar a seleção de instância baseada em atributos, você deve incluir a estrutura de `InstanceRequirements` na configuração de frota e especificar os atributos desejados para as instâncias da frota.

No exemplo anterior, os seguintes atributos de instância foram especificados:
+ `VCpuCount`: os tipos de instância devem ter no mínimo 2 e no máximo 8 vCPUs.
+ `MemoryMiB`: os tipos de instância devem ter no máximo 10.240 MiB de memória. Um mínimo de 0 indica que não há limite mínimo.
+ `MemoryGiBPerVCpu`: os tipos de instância devem ter no máximo 10.000 GiB de memória. O parâmetro `Min` é opcional. Ao omiti-lo, você indica que não há limite mínimo.

**`TargetCapacityUnitType`**  
O parâmetro `TargetCapacityUnitType` especifica a unidade da capacidade-alvo. No exemplo, a capacidade-alvo é `5000` e o tipo de unidade de capacidade-alvo é `vcpu`, que juntos especificam uma capacidade-alvo desejada de 5000 vCPUs. A Frota do EC2 iniciará instâncias suficientes para que o número total de vCPUs na frota seja 5.000 vCPUs.

### Configuração válida: modelo de lançamento único com vários InstanceRequirements
<a name="ef-abs-example-config2"></a>

A configuração a seguir é válida. Ela contém um modelo de lançamento e uma estrutura de `Overrides` contendo duas estruturas de `InstanceRequirements`. Os atributos especificados em `InstanceRequirements` são válidos porque os valores não se sobrepõem: a primeira estrutura de `InstanceRequirements` especifica um `VCpuCount` de 0 a 2 vCPUs, enquanto a segunda estrutura de `InstanceRequirements` especifica de 4 a 8 vCPUs.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### Configuração válida: dois modelos de lançamento com substituições em cada
<a name="ef-abs-example-config3"></a>

A configuração a seguir é válida. Ela contém dois modelos de lançamento, cada um deles com uma estrutura de `Overrides` contendo uma estrutura de `InstanceRequirements`. Essa configuração é útil para oferecer suporte às arquiteturas `arm` e `x86` na mesma frota.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "armLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "x86LaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### Configuração válida: somente `InstanceRequirements` especificados, sem valores de atributo sobrepostos
<a name="ef-abs-example-config4"></a>

A configuração a seguir é válida. Ela contém duas estruturas de `LaunchTemplateSpecification`, cada uma com um modelo de lançamento e uma estrutura `Overrides` contendo uma estrutura de `InstanceRequirements`. Os atributos especificados em `InstanceRequirements` são válidos porque os valores não se sobrepõem: a primeira estrutura de `InstanceRequirements` especifica um `VCpuCount` de 0 a 2 vCPUs, enquanto a segunda estrutura de `InstanceRequirements` especifica de 4 a 8 vCPUs.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### Configuração não válida: `Overrides` contém`InstanceRequirements` e `InstanceType`
<a name="ef-abs-example-config5"></a>

A configuração a seguir não é válida. A estrutura de `Overrides` contém `InstanceRequirements` e `InstanceType`. Em `Overrides`, você pode especificar `InstanceRequirements` ou `InstanceType`, mas não ambos.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### Configuração não válida: duas `Overrides` contêm `InstanceRequirements` e `InstanceType`
<a name="ef-abs-example-config6"></a>

A configuração a seguir não é válida. As estruturas `Overrides` contêm `InstanceRequirements` e `InstanceType`. É possível especificar `InstanceRequirements` ou `InstanceType`, mas não ambos, mesmo que estejam em estruturas de `Overrides` diferentes.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### Configuração não válida: valores de atributo sobrepostos
<a name="ef-abs-example-config7"></a>

A configuração a seguir não é válida. As duas estruturas de `InstanceRequirements` contêm `"VCpuCount": {"Min": 0, "Max": 2}`. Os valores desses atributos se sobrepõem, o que resultará em grupos de capacidade duplicados.

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    },
                    {
                      "InstanceRequirements": {
                          "VCpuCount": {
                              "Min": 0,
                              "Max": 2
                          },
                          "MemoryMiB": {
                              "Min": 0
                          }
                      }
                  }
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

## Exemplos de configurações de frota spot que são válidas e não válidas
<a name="spotfleet-abs-example-configs"></a>

Se você usar a AWS CLI para criar uma frota spot, deverá se certificar de que a configuração da frota seja válida. Exemplos de configurações que são válidas e não válidas.

As configurações são consideradas não válidas quando contiverem o seguinte:
+ Uma única estrutura de `Overrides` com `InstanceRequirements` e `InstanceType`
+ Duas estruturas de `Overrides`, uma com `InstanceRequirements` e outra com `InstanceType`
+ Duas estruturas de `InstanceRequirements` com valores de atributo sobrepostos na mesma `LaunchTemplateSpecification`

**Topics**
+ [Configuração válida: modelo de lançamento único com substituições](#sf-abs-example-config1)
+ [Configuração válida: modelo de lançamento único com vários InstanceRequirements](#sf-abs-example-config2)
+ [Configuração válida: dois modelos de lançamento com substituições em cada](#sf-abs-example-config3)
+ [Configuração válida: somente `InstanceRequirements` especificados, sem valores de atributo sobrepostos](#sf-abs-example-config4)
+ [Configuração não válida: `Overrides` contém`InstanceRequirements` e `InstanceType`](#sf-abs-example-config5)
+ [Configuração não válida: duas `Overrides` contêm `InstanceRequirements` e `InstanceType`](#sf-abs-example-config6)
+ [Configuração não válida: valores de atributo sobrepostos](#sf-abs-example-config7)

### Configuração válida: modelo de lançamento único com substituições
<a name="sf-abs-example-config1"></a>

A configuração a seguir é válida. Ela contém um modelo de lançamento e uma estrutura de `Overrides` contendo uma estrutura de `InstanceRequirements`. A seguir está um texto explicativo do exemplo de configuração.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "My-launch-template",
                "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 2,
                            "Max": 8
                        },
                        "MemoryMib": {
                            "Min": 0,
                            "Max": 10240
                        },
                        "MemoryGiBPerVCpu": {
                            "Max": 10000
                        },
                        "RequireHibernateSupport": true
                    }
                }
            ]
        }
    ],
        "TargetCapacity": 5000,
            "OnDemandTargetCapacity": 0,
            "TargetCapacityUnitType": "vcpu"
    }
}
```

****`InstanceRequirements`****  
Para usar a seleção de instância baseada em atributos, você deve incluir a estrutura de `InstanceRequirements` na configuração de frota e especificar os atributos desejados para as instâncias da frota.

No exemplo anterior, os seguintes atributos de instância foram especificados:
+ `VCpuCount`: os tipos de instância devem ter no mínimo 2 e no máximo 8 vCPUs.
+ `MemoryMiB`: os tipos de instância devem ter no máximo 10.240 MiB de memória. Um mínimo de 0 indica que não há limite mínimo.
+ `MemoryGiBPerVCpu`: os tipos de instância devem ter no máximo 10.000 GiB de memória. O parâmetro `Min` é opcional. Ao omiti-lo, você indica que não há limite mínimo.

**`TargetCapacityUnitType`**  
O parâmetro `TargetCapacityUnitType` especifica a unidade da capacidade-alvo. No exemplo, a capacidade-alvo é `5000` e o tipo de unidade de capacidade-alvo é `vcpu`, que juntos especificam uma capacidade-alvo desejada de 5000 vCPUs. A frota spot executará instâncias suficientes para que o número total de vCPUs na frota seja de 5.000 vCPUs.

### Configuração válida: modelo de lançamento único com vários InstanceRequirements
<a name="sf-abs-example-config2"></a>

A configuração a seguir é válida. Ela contém um modelo de lançamento e uma estrutura de `Overrides` contendo duas estruturas de `InstanceRequirements`. Os atributos especificados em `InstanceRequirements` são válidos porque os valores não se sobrepõem: a primeira estrutura de `InstanceRequirements` especifica um `VCpuCount` de 0 a 2 vCPUs, enquanto a segunda estrutura de `InstanceRequirements` especifica de 4 a 8 vCPUs.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### Configuração válida: dois modelos de lançamento com substituições em cada
<a name="sf-abs-example-config3"></a>

A configuração a seguir é válida. Ela contém dois modelos de lançamento, cada um deles com uma estrutura de `Overrides` contendo uma estrutura de `InstanceRequirements`. Essa configuração é útil para oferecer suporte às arquiteturas `arm` e `x86` na mesma frota.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "armLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "x86LaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### Configuração válida: somente `InstanceRequirements` especificados, sem valores de atributo sobrepostos
<a name="sf-abs-example-config4"></a>

A configuração a seguir é válida. Ela contém duas estruturas de `LaunchTemplateSpecification`, cada uma com um modelo de lançamento e uma estrutura `Overrides` contendo uma estrutura de `InstanceRequirements`. Os atributos especificados em `InstanceRequirements` são válidos porque os valores não se sobrepõem: a primeira estrutura de `InstanceRequirements` especifica um `VCpuCount` de 0 a 2 vCPUs, enquanto a segunda estrutura de `InstanceRequirements` especifica de 4 a 8 vCPUs.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### Configuração não válida: `Overrides` contém`InstanceRequirements` e `InstanceType`
<a name="sf-abs-example-config5"></a>

A configuração a seguir não é válida. A estrutura de `Overrides` contém `InstanceRequirements` e `InstanceType`. Em `Overrides`, você pode especificar `InstanceRequirements` ou `InstanceType`, mas não ambos.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### Configuração não válida: duas `Overrides` contêm `InstanceRequirements` e `InstanceType`
<a name="sf-abs-example-config6"></a>

A configuração a seguir não é válida. As estruturas `Overrides` contêm `InstanceRequirements` e `InstanceType`. É possível especificar `InstanceRequirements` ou `InstanceType`, mas não ambos, mesmo que estejam em estruturas de `Overrides` diferentes.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### Configuração não válida: valores de atributo sobrepostos
<a name="sf-abs-example-config7"></a>

A configuração a seguir não é válida. As duas estruturas de `InstanceRequirements` contêm `"VCpuCount": {"Min": 0, "Max": 2}`. Os valores desses atributos se sobrepõem, o que resultará em grupos de capacidade duplicados.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    },
                    {
                      "InstanceRequirements": {
                          "VCpuCount": {
                              "Min": 0,
                              "Max": 2
                          },
                          "MemoryMiB": {
                              "Min": 0
                          }
                      }
                  }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

## Previsualizar os tipos de instância com os atributos especificados
<a name="ec2fleet-get-instance-types-from-instance-requirements"></a>

É possível usar o comando [get-instance-types-de-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) para previsualizar os tipos de instância que correspondem aos atributos especificados por você. Isso é especialmente útil para determinar quais atributos especificar na configuração da solicitação sem iniciar nenhuma instância. Observe que o comando não considera a capacidade disponível.

**Para previsualizar uma lista de tipos de instância especificando atributos usando a AWS CLI**

1. (Opcional) Para gerar todos os atributos possíveis que podem ser especificados, use o comando [get-instance-types-de-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) e o parâmetro `--generate-cli-skeleton`. Opcionalmente, você pode direcionar a saída para um arquivo e salvá-lo usando `input > attributes.json`.

   ```
   aws ec2 get-instance-types-from-instance-requirements \
       --region us-east-1 \
       --generate-cli-skeleton input > attributes.json
   ```

   Saída esperada

   ```
   {
       "DryRun": true,
       "ArchitectureTypes": [
           "i386"
       ],
       "VirtualizationTypes": [
           "hvm"
       ],
       "InstanceRequirements": {
           "VCpuCount": {
               "Min": 0,
               "Max": 0
           },
           "MemoryMiB": {
               "Min": 0,
               "Max": 0
           },
           "CpuManufacturers": [
               "intel"
           ],
           "MemoryGiBPerVCpu": {
               "Min": 0.0,
               "Max": 0.0
           },
           "ExcludedInstanceTypes": [
               ""
           ],
           "InstanceGenerations": [
               "current"
           ],
           "SpotMaxPricePercentageOverLowestPrice": 0,
           "OnDemandMaxPricePercentageOverLowestPrice": 0,
           "BareMetal": "included",
           "BurstablePerformance": "included",
           "RequireHibernateSupport": true,
           "NetworkInterfaceCount": {
               "Min": 0,
               "Max": 0
           },
           "LocalStorage": "included",
           "LocalStorageTypes": [
               "hdd"
           ],
           "TotalLocalStorageGB": {
               "Min": 0.0,
               "Max": 0.0
           },
           "BaselineEbsBandwidthMbps": {
               "Min": 0,
               "Max": 0
           },
           "AcceleratorTypes": [
               "gpu"
           ],
           "AcceleratorCount": {
               "Min": 0,
               "Max": 0
           },
           "AcceleratorManufacturers": [
               "nvidia"
           ],
           "AcceleratorNames": [
               "a100"
           ],
           "AcceleratorTotalMemoryMiB": {
               "Min": 0,
               "Max": 0
           },
           "NetworkBandwidthGbps": {
               "Min": 0.0,
               "Max": 0.0
           },
           "AllowedInstanceTypes": [
               ""
           ]
       },
       "MaxResults": 0,
       "NextToken": ""
   }
   ```

1. Crie um arquivo de configuração JSON usando a saída da etapa anterior e configure-o da seguinte forma:
**nota**  
Você deve fornecer valores para `ArchitectureTypes`, `VirtualizationTypes`, `VCpuCount` e `MemoryMiB`. É possível omitir os outros atributos; quando omitidos, os valores padrão são usados.  
Para obter uma descrição de cada atributo e seus valores padrão, consulte [get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html).

   1. Em `ArchitectureTypes`, especifique um ou mais tipos de arquitetura de processador.

   1. Em `VirtualizationTypes`, especifique um ou mais tipos de virtualização.

   1. Em `VCpuCount`, especifique o número mínimo e máximo de vCPUs. Para não especificar nenhum limite mínimo, em `Min`, especifique `0`. Para não especificar nenhum limite máximo, omita o parâmetro `Max`.

   1. Em `MemoryMiB`, especifique a quantidade mínima e máxima de memória em MiB. Para não especificar nenhum limite mínimo, em `Min`, especifique `0`. Para não especificar nenhum limite máximo, omita o parâmetro `Max`.

   1. Opcionalmente, você pode especificar um ou mais dos outros atributos para restringir ainda mais a lista de tipos de instância retornados.

1. Para previsualizar os tipos de instância que têm os atributos que você especificou no arquivo JSON, use o comando [get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) e especifique o nome e o caminho para seu arquivo JSON usando o parâmetro `--cli-input-json`. Opcionalmente, você pode formatar a saída para ser exibida em formato de tabela.

   ```
   aws ec2 get-instance-types-from-instance-requirements \
       --cli-input-json file://attributes.json \
       --output table
   ```

   Exemplo de arquivo *attributes.json*

   Neste exemplo, os atributos necessários estão incluídos no arquivo JSON. Eles são `ArchitectureTypes`, `VirtualizationTypes`, `VCpuCount` e `MemoryMiB`. Além disso, o atributo opcional `InstanceGenerations` também está incluído. Observe que para `MemoryMiB`, o valor `Max` pode ser omitido para indicar que não há limite.

   ```
   {
       
       "ArchitectureTypes": [
           "x86_64"
       ],
       "VirtualizationTypes": [
           "hvm"
       ],
       "InstanceRequirements": {
           "VCpuCount": {
               "Min": 4,
               "Max": 6
           },
           "MemoryMiB": {
               "Min": 2048
           },
           "InstanceGenerations": [
               "current"
           ]
       }
   }
   ```

   Exemplo de saída

   ```
   ------------------------------------------
   |GetInstanceTypesFromInstanceRequirements|
   +----------------------------------------+
   ||             InstanceTypes            ||
   |+--------------------------------------+|
   ||             InstanceType             ||
   |+--------------------------------------+|
   ||  c4.xlarge                           ||
   ||  c5.xlarge                           ||
   ||  c5a.xlarge                          ||
   ||  c5ad.xlarge                         ||
   ||  c5d.xlarge                          ||
   ||  c5n.xlarge                          ||
   ||  d2.xlarge                           ||
   ...
   ```

1. Após identificar os tipos de instância que atendem às suas necessidades, anote os atributos de instância usados para que poder usá-los ao configurar a solicitação de frota.

# Usar ponderação de instâncias para gerenciar o custo e a performance da frota do EC2 ou da frota spot
<a name="ec2-fleet-instance-weighting"></a>

Com a ponderação de instâncias, você atribui um peso a cada tipo de instância na frota do EC2 ou na frota spot para representar sua capacidade computacional e a performance na comparação de uma com a outra. Com base nos pesos, a frota pode usar qualquer combinação dos tipos de instância especificados, desde que possa atender à capacidade de destino desejada. Isso pode ajudar você a gerenciar o custo e a performance da frota.

O peso representa as unidades de capacidade que um tipo de instância contribui para a capacidade total de destino.

**Exemplo: usar ponderação de instâncias para o gerenciamento de performance**

Suponha que a frota tenha dois tipos de instância e você atribua um peso diferente a cada tipo de instância para refletir a quantidade necessária de cada uma para atingir a mesma performance da seguinte forma:
+  `m5.large` - peso: 1
+ `m5.2xlarge` - peso: 4

Ao atribuir esses pesos, você está afirmando que precisa de quatro instâncias `m5.large` para obter a mesma performance de uma `m5.2xlarge`.

Para calcular quantas instâncias de cada tipo de instância são necessárias para uma determinada capacidade de destino, use a seguinte fórmula:

`target capacity / weight = number of instances`

Se sua capacidade de destino for de oito unidades, a frota poderá atingir a capacidade de destino com `m5.large` ou `m5.2xlarge`, ou com uma combinação de ambas, da seguinte forma:
+ 8 instâncias `m5.large` (capacidade de 8/peso de 1 = 8 instâncias)
+ 2 instâncias `m5.2xlarge` (capacidade de 8/peso de 4 = 2 instâncias)
+ 4 `m5.large` e 1 `m5.2xlarge`

**Exemplo: usar ponderação de instâncias para gerenciamento de custo**

Por padrão, o preço que você especifica é *por hora de instância*. Ao usar o recurso de peso da instância, o preço que você especifica é *por hora*. É possível calcular o preço por hora dividindo seu preço para um tipo de instância pelo número de unidades que ele representa. A frota calcula o número de instâncias a serem inicializadas dividindo a capacidade de destino pelo peso da instância. Se o resultado não for um valor inteiro, a frota o arredondará para o próximo valor inteiro, para que o tamanho de sua frota não fique abaixo de sua capacidade de destino. A frota pode selecionar qualquer grupo que você determinar na especificação de execução, mesmo que a capacidade das instâncias executadas ultrapasse a capacidade de destino solicitada.

A tabela a seguir inclui exemplos de cálculos para determinar o preço por unidade de uma frota com capacidade de destino igual a 10.


| Tipo de instância | Peso da instância | Capacidade de destino | Número de instâncias executadas | Preço por hora de instância | Preço por hora | 
| --- | --- | --- | --- | --- | --- | 
| r3.xlarge |  2  | 10 |  5 (10 dividido por 2)  |  0,05 USD  |  0,025 USD (0,05 dividido por 2)  | 
| r3.8xlarge |  8  | 10 |  2 (10 dividido por 8, resultado arredondado para cima)  |  0,10 USD  |  0,0125 USD (0,10 dividido por 8)  | 

Use a ponderação da instância da frota como abaixo para provisionar a capacidade desejada de destino nos grupos com o menor preço por unidade no momento do atendimento:

1. Defina a capacidade de destino da frota nas instâncias (o padrão) ou nas unidades de sua preferência, como vCPUs, memória, armazenamento ou throughput.

1. Defina o preço por unidade.

1. Para cada especificação de execução, defina o peso, que é o número de unidades que o tipo de instância representa em relação à capacidade de destino.

**Exemplo de peso da instância**  
Considere uma solicitação de frota com a seguinte configuração:
+ Uma capacidade de destino de 24
+ Uma especificação de execução com um tipo de instância `r3.2xlarge` e um peso de 6
+ Uma especificação de execução com um tipo de instância `c3.xlarge` e um peso de 5

Os pesos representam o número de unidades que o tipo de instância representa em relação à capacidade de destino. Se a primeira especificação de inicialização fornecer o menor preço por unidade (preço por `r3.2xlarge` por hora de instância dividido por 6), a frota inicializará quatro dessas instâncias (24 dividido por 6).

Se a segunda especificação de inicialização fornecer o menor preço por unidade (preço por `c3.xlarge` por hora de instância dividido por 5), a frota inicializará cinco dessas instâncias (24 dividido por 5, resultado arredondado para cima).

**Peso da instância e estratégia de alocação**  
Considere uma solicitação de frota com a seguinte configuração:
+ Uma capacidade de destino de 30 Instâncias spot
+ Uma especificação de execução com um tipo de instância `c3.2xlarge` e um peso de 8
+ Uma especificação de execução com um tipo de instância `m3.xlarge` e um peso de 8
+ Uma especificação de execução com um tipo de instância `r3.xlarge` e um peso de 8

A frota executaria quatro instâncias (30 dividido por 8, resultado arredondado para cima). Com a estratégia `diversified`, a frota executa uma instância em cada um dos três grupos, e a quarta instância em qualquer um dos três grupos fornece o menor preço spot por unidade.

# Usar estratégias de alocação para determinar como a frota do EC2 ou a frota spot atende à capacidade spot e sob demanda
<a name="ec2-fleet-allocation-strategy"></a>

Quando você usa vários grupos de capacidade (cada um abrangendo um tipo de instância e uma zona de disponibilidade) em uma frota do EC2 ou uma frota spot, você pode usar uma *estratégia de alocação* para gerenciar como o Amazon EC2 atende às capacidades spot e sob demanda desses grupos. As estratégias de alocação podem otimizar a capacidade disponível, o preço e os tipos de instância a serem usados. Existem diferentes estratégias de alocação para instâncias spot e instâncias sob demanda.

**Topics**
+ [Estratégias de alocação para Instâncias spot](#ec2-fleet-allocation-strategies-for-spot-instances)
+ [Estratégias de alocação para instâncias sob demanda](#ec2-fleet-allocation-strategies-for-on-demand-instances)
+ [Escolher a estratégia de alocação spot apropriada](#ec2-fleet-allocation-use-cases)
+ [Manter a capacidade de destino para instâncias spot](#ec2-fleet-maintain-fleet-capacity)
+ [Priorizar tipos de instâncias para capacidade sob demanda](#ec2-fleet-on-demand-priority)

## Estratégias de alocação para Instâncias spot
<a name="ec2-fleet-allocation-strategies-for-spot-instances"></a>

Sua configuração de inicialização determina todos os possíveis grupos de capacidade spot (tipos de instância e zonas de disponibilidade) nos quais a frota do EC2 ou a frota spot pode inicializar instâncias spot. No entanto, ao inicializar instâncias, a frota usa a estratégia de alocação que você especifica para escolher os grupos específicos de todos os seus grupos possíveis.

**nota**  
(Somente para instâncias do Linux) Se você configurar a instância spot para iniciar com o [AMD SEV-SNP](sev-snp.md) ativado, será cobrada uma taxa de utilização por hora adicional equivalente a 10% da [taxa horária sob demanda](https://aws.amazon.com/ec2/pricing/on-demand/) para o tipo de instância selecionado. Se a estratégia de alocação usar o preço como entrada, a frota não incluirá essa taxa adicional; somente o preço spot será usado.

É possível especificar uma destas estratégias de alocação para instâncias spot:

**Capacidade de preço otimizada** (recomendado)  
A frota identifica os grupos com a maior disponibilidade de capacidade para o número de instâncias que estão sendo inicializadas. Isso significa que solicitaremos instâncias spot dos grupos que acreditamos terem a menor probabilidade de interrupção a curto prazo. Em seguida, a frota solicita instâncias spot do grupo com o menor preço desses grupos.  
A estratégia de alocação **capacidade de preço otimizada** é a melhor opção para a maioria das workloads spot, como aplicações em contêiner sem estado, microsserviços, aplicações Web, trabalhos de dados e analytics e processamento em lote.  
Se você estiver usando a AWS CLI, o nome do parâmetro será `price-capacity-optimized` para frotas do EC2 e `priceCapacityOptimized` para frotas spot.

**Otimizada para capacidade**  
A frota identifica os grupos com a maior disponibilidade de capacidade para o número de instâncias que estão sendo inicializadas. Isso significa que solicitaremos instâncias spot dos grupos que acreditamos terem a menor probabilidade de interrupção a curto prazo.  
Com as Instâncias spot, a definição de preço muda lentamente ao longo do tempo com base em tendências de longo prazo na oferta e na demanda, mas a capacidade oscila em tempo real. A estratégia **capacidade otimizada** inicializa instâncias spot automaticamente nos grupos mais disponíveis observando dados de capacidade em tempo real e prevendo quais são os mais disponíveis. Isso funciona bem para workloads que podem ter um custo de interrupção maior associado ao reinício do trabalho, como workloads de integração contínua (CI) longa, de renderização de imagens e mídia, de aprendizado profundo e de computação de alta performance (HPC). Ao oferecer a possibilidade de menos interrupções, a estratégia **capacidade otimizada** pode reduzir o custo geral da workload.  
Como alternativa, você pode usar a estratégia de alocação **capacidade otimizada priorizada** com um parâmetro de prioridade para ordenar os tipos de instância, da prioridade mais alta para a mais baixa. É possível definir a mesma prioridade para diferentes tipos de instância. A frota otimizará primeiro a capacidade, mas se esforçará em honrar as prioridades de tipo de instância (por exemplo, honrar as prioridades não afetará significativamente a capacidade da frota de provisionar a capacidade ideal). Essa é uma boa opção para workloads em que a possibilidade de interrupção deve ser minimizada e a preferência por determinados tipos de instância for importante. Quando você definir a prioridade para tipos de instância para capacidade spot, a mesma prioridade também será aplicada às instâncias sob demanda se a estratégia de alocação sob demanda estiver definida como **priorizada**. Para frotas spot, o uso de prioridades só será compatível se a frota usar um modelo de inicialização.   
Se você estiver usando a AWS CLI, os nomes dos parâmetros serão `capacity-optimized` e `capacity-optimized-prioritized` para frotas do EC2 e `capacityOptimized` e `capacityOptimizedPrioritized` para frotas spot.

**Diversificada**  
Os Instâncias spot são distribuídos em todos os grupos de capacidade spot. Se você estiver usando a AWS CLI, o nome do parâmetro será `diversified` para frotas do EC2 e frotas spot.

**Preço mais baixo** (não recomendado)  
Não recomendamos a estratégia de alocação **preço mais baixo** porque ela representa o risco mais alto de interrupção para as instâncias spot.
As instâncias spot vêm do grupo com o menor preço que tem capacidade disponível. Ao ser usada a AWS CLI, essa é a estratégia padrão. Porém, recomendamos que você substitua o padrão ao especificar a estratégia de alocação **otimizada para capacidade de preço**.  
Com a estratégia de preço mais baixo, se o grupo com preço mais baixo não tiver capacidade disponível, as instâncias spot virão do próximo grupo com preço mais baixo que tiver capacidade disponível. Se um grupo esgotar a capacidade spot antes de atender à capacidade desejada, a frota continuará a atender à solicitação recorrendo ao próximo grupo de preço mais baixo. Para garantir que a capacidade desejada seja atendida, é possível receber instâncias spot de vários grupos.  
Como essa estratégia considera apenas o preço da instância e não a disponibilidade de capacidade, ela pode resultar em altas taxas de interrupção.  
A estratégia de alocação de preço mais baixo só está disponível quando é usada a AWS CLI. O nome do parâmetro é `lowest-price` para frotas do EC2 e `lowestPrice` para frotas spot.

**Número de grupos a serem usados**  
O número de grupos spot para os quais alocar sua capacidade spot de destino. Válido apenas quando a estratégia de alocação está definida como **preço mais baixo**. A frota seleciona os grupos spot de preço mais baixo e aloca uniformemente a capacidade spot de destino pelo número de grupos spot que você especifica.  
A frota tenta extrair instâncias spot do número de grupos que você especifica com base no melhor esforço. Se um grupo esgotar a capacidade spot antes de atender à capacidade de destino, a frota continuará a atender à solicitação recorrendo ao próximo grupo de preço mais baixo. Para garantir que sua capacidade de destino seja atendida, é possível receber Instâncias Spot de mais do que o número de grupos especificado. Da mesma forma, se a maioria dos pools não tiver capacidade spot, será possível receber sua capacidade de destino total de menos do que o número de pools que você especificou.  
Esse parâmetro só está disponível quando é especificada a estratégia de alocação **preço mais baixo** e somente quando é usada a AWS CLI. O nome do parâmetro é `InstancePoolsToUseCount` para frotas do EC2 e para frotas spot.

## Estratégias de alocação para instâncias sob demanda
<a name="ec2-fleet-allocation-strategies-for-on-demand-instances"></a>

A configuração de inicialização determina todos os possíveis grupos de capacidade (tipos de instância e zonas de disponibilidade) nos quais a frota do EC2 ou a frota spot pode inicializar instâncias sob demanda. No entanto, ao inicializar instâncias, a frota usa a estratégia de alocação que você especifica para escolher os grupos específicos de todos os seus grupos possíveis.

É possível especificar uma destas estratégias de alocação para instâncias sob demanda:

**Preço mais baixo**  
As instâncias sob demanda vêm do grupo com o preço mais baixo que tem capacidade disponível. Essa é a estratégia padrão.  
Se o grupo com preço mas baixo não tiver capacidade disponível, as instâncias sob demanda virão do próximo grupo com preço mais baixo que tiver capacidade disponível.  
Se um grupo esgotar a capacidade spot antes de atender à capacidade desejada, a frota continuará a atender à solicitação recorrendo ao próximo grupo de preço mais baixo. Para garantir que a capacidade desejada seja atendida, é possível receber instâncias sob demanda de vários grupos.

**Priorizada**  
A frota usa a prioridade que você atribuiu para cada substituição do modelo de inicialização ao inicializar tipos de instância começando pela prioridade mais alta. Essa estratégia não pode ser usada com a seleção de tipo de instância baseada em atributos. Para obter um exemplo de como usar essa estratégia de alocação, consulte [Priorizar tipos de instâncias para capacidade sob demanda](#ec2-fleet-on-demand-priority).

## Escolher a estratégia de alocação spot apropriada
<a name="ec2-fleet-allocation-use-cases"></a>

É possível otimizar a frota para seu caso de uso escolhendo a estratégia apropriada de alocação spot.

### Equilibrar menor preço e disponibilidade de capacidade
<a name="ec2-fleet-strategy-balance-price-and-capacity-availability"></a>

Para obter o equilíbrio entre os grupos de capacidade spot com preço mais baixo e os grupos de capacidade spot com a maior disponibilidade de capacidade, recomendamos que você use a estratégia de alocação **otimizada para capacidade de preço**. Essa estratégia toma decisões sobre quais grupos devem solicitar instâncias spot com base no preço dos grupos e na disponibilidade de capacidade de instâncias spot nesses grupos. Isso significa que solicitaremos instâncias spot dos grupos que acreditamos terem a menor probabilidade de interrupção em curto prazo, ao mesmo tempo que ainda levaremos o preço em consideração.

Se a frota executar workloads resilientes e sem estado, incluindo aplicações em contêiner, microsserviços, aplicações Web, trabalhos de dados e analytics e processamento em lote, use a estratégia de alocação **otimizada para capacidade de preço** para otimizar a economia de custos e a disponibilidade de capacidade.

Se a frota executar workloads que possam ter um custo de interrupção maior associado ao reinício do trabalho, você deverá implementar verificações para que as aplicações possam ser reiniciadas no ponto em que foram interrompidas. Ao usar pontos de verificação, você torna a estratégia de alocação **otimizada para capacidade de preço** uma boa opção para essas workloads, pois ela aloca a capacidade dos grupos com preço mais baixo que também oferecem uma baixa taxa de interrupção de instâncias spot.

Por exemplo, em configurações JSON que usam a estratégia de alocação **otimizada para capacidade de preço**, veja o seguinte:
+ Frota do EC2: [Exemplo 10: iniciar instâncias spot em uma frota otimizada para preço-capacidade](ec2-fleet-examples.md#ec2-fleet-config11)
+ Frota spot: [Exemplo 11: executar instâncias spot em uma frota priceCapacityOptimized](spot-fleet-examples.md#fleet-config11)

### Quando as workloads têm um alto custo de interrupção
<a name="ec2-fleet-strategy-capacity-optimized"></a>

Opcionalmente, você pode usar a estratégia **otimizada para capacidade** se executar workloads que usem tipos de instância com preços semelhantes ou em que o custo da interrupção seja tão significativo que qualquer economia de custos será inadequada em comparação com um aumento marginal nas interrupções. Essa estratégia aloca capacidade dos grupos com capacidade spot mais disponível que oferecem a possibilidade de menos interrupções, o que pode reduzir o custo geral da workload.

Quando a possibilidade de interrupções precisa ser minimizada mas a preferência por determinados tipos de instância é importante, é possível expressar as prioridades do grupo usando a estratégia de alocação **capacidade otimizada priorizada** e definindo a ordem dos tipos de instância a serem usados da prioridade mais alta para a mais baixa.

Observe que, quando você define as prioridades para **capacidade otimizada priorizada**, as mesmas prioridades também são aplicadas às instâncias sob demanda se a estratégia de alocação sob demanda está definida como **priorizada**. Observe também que, para frotas spot, o uso de prioridades só será compatível se a frota usar um modelo de inicialização.

Por exemplo, em configurações JSON que usam a estratégia de alocação **otimizada para capacidade**, observe o seguinte:
+ Frota do EC2: [Exemplo 8: iniciar instâncias spot em uma frota otimizada para capacidade](ec2-fleet-examples.md#ec2-fleet-config9)
+ Frota spot: [Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade](spot-fleet-examples.md#fleet-config9)

Por exemplo, em configurações JSON que usam a estratégia de alocação **capacidade otimizada priorizada**, observe o seguinte:
+ Frota do EC2: [Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades](ec2-fleet-examples.md#ec2-fleet-config10)
+ Frota spot: [Exemplo 10: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades](spot-fleet-examples.md#fleet-config10)

### Quando a workload é flexível em termos de tempo e a disponibilidade de capacidade não é um fator
<a name="ec2-fleet-strategy-time-flexible-workload"></a>

Se a frota é pequena ou é executada por um período curto, você pode usar **otimizada para capacidade de preço** para maximizar a economia de custos, ainda considerando a disponibilidade de capacidade.

### Quando sua frota é grande ou é executada por muito tempo
<a name="ec2-fleet-strategy-large-workload-long-time"></a>

Se sua frota é grande ou é executada há muito tempo, será possível aprimorar a disponibilidade dela distribuindo as instâncias spot por vários grupos, usando a estratégia **diversificada**. Por exemplo, se a frota especificar dez grupos e uma capacidade de destino de cem instâncias, a frota inicializará dez instâncias spot em cada grupo. Se o preço spot para um grupo exceder seu preço máximo para esse mesmo grupo, somente 10% de sua frota será afetada. Usar essa estratégia também torna sua frota menos sensível a aumentos que ocorram com o tempo no preço spot em qualquer grupo específico. Com a estratégia **diversificada**, a frota não inicializará instâncias spot em nenhum grupo com um preço spot igual ou maior que o [preço sob demanda](https://aws.amazon.com/ec2/pricing/).

## Manter a capacidade de destino para instâncias spot
<a name="ec2-fleet-maintain-fleet-capacity"></a>

Depois que as instâncias spot são encerradas devido a uma alteração no preço spot ou na capacidade disponível de um grupo de capacidade spot, uma frota do tipo `maintain` inicializa instâncias spot de substituição. A estratégia de alocação determina os grupos dos quais as instâncias de substituição são iniciadas, da seguinte forma:
+ Se a estratégia de alocação for **capacidade de preço otimizada**, a frota inicializará instâncias de substituição nos grupos com maior disponibilidade de capacidade de instâncias spot, ao mesmo tempo que também levará em consideração o preço e identificará os grupos de preço mais baixo com alta disponibilidade de capacidade.
+ Se a estratégia de alocação for **capacidade otimizada**, a frota inicializará instâncias de substituição nos grupos com a maior disponibilidade de capacidade de instâncias spot.
+ Se a estratégia de alocação for **diversificada**, a frota distribuirá as instâncias spot de substituição entre os grupos restantes.

## Priorizar tipos de instâncias para capacidade sob demanda
<a name="ec2-fleet-on-demand-priority"></a>

Quando uma frota do EC2 ou uma frota spot tenta atender à capacidade sob demanda, o padrão é inicializar primeiro o tipo de instância de preço mais baixo. Se a estratégia de alocação estiver definida como **priorizada**, a frota usará a prioridade para determinar que tipo de instância será usada primeiro para atender à capacidade sob demanda. A prioridade é atribuída à substituição do modelo de ativação, e a prioridade mais alta é lançada primeiro.

**Exemplo: priorizar tipos de instância**

Neste exemplo, você configura três substituições de modelo de execução, cada uma com um tipo de instância diferente.

O preço sob demanda para os tipos de instância varia no preço. Estes são os tipos de instância usados neste exemplo, listados em ordem de preço, a partir do tipo de instância mais barato:
+ `m4.large`: menor custo
+ `m5.large`
+ `m5a.large`

Se você não usar prioridade para determinar a ordem, a frota atenderá à capacidade sob demanda começando pelo tipo mais barato de instância.

No entanto, digamos que você tenha instâncias reservadas `m5.large` não utilizadas que deseja usar primeiro. É possível definir a prioridade de substituição do modelo de execução para que os tipos de instância sejam usados na ordem de prioridade, da seguinte forma:
+ `m5.large`: prioridade 1
+ `m4.large`: prioridade 2
+ `m5a.large`: prioridade 3

# Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco
<a name="ec2-fleet-capacity-rebalance"></a>

Com o rebalanceamento de capacidade, a frota do EC2 ou a frota spot pode manter a capacidade spot desejada ao substituir proativamente as instâncias spot com risco de interrupção. Quando uma instância spot apresenta risco elevado de interrupção, o Amazon EC2 envia uma [recomendação de rebalanceamento](rebalance-recommendations.md). Se o rebalanceamento de capacidade estiver habilitado, a recomendação de rebalanceamento acionará a inicialização de uma nova instância spot antes que a instância em risco seja interrompida.

O rebalanceamento de capacidade ajuda a manter a disponibilidade da workload ao aumentar proativamente a frota com uma nova instância spot antes que instâncias em execução sejam interrompidas pelo Amazon EC2.

**Configurar a frota do EC2 para usar rebalanceamento de capacidade para inicializar uma Instância spot de substituição**  
Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) e os parâmetros relevantes na estrutura `MaintenanceStrategies`. Para ver um exemplo de configuração JSON, consulte [Exemplo 7: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição](ec2-fleet-examples.md#ec2-fleet-config8).

**Configurar a frota spot para usar rebalanceamento de capacidade para inicializar uma instância spot de substituição**  
É possível usar o console do Amazon EC2 ou a AWS CLI para configurar o rebalanceamento de capacidade.

(Console) Quando criar a frota spot, marque a caixa de seleção **Rebalanceamento de capacidade**. Para obter mais informações, consulte a etapa 6.d em [Criar uma solicitação de frota spot usando parâmetros definidos](create-spot-fleet.md#create-spot-fleet-advanced).

(AWS CLI) Use o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) e os parâmetros relevantes na estrutura `SpotMaintenanceStrategies`. Para ver um exemplo de configuração JSON, consulte [Exemplo 8: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição](spot-fleet-examples.md#fleet-config8).

**Topics**
+ [Limitações](#ec2-fleet-capacity-rebalance-limitations)
+ [Opções de configuração](#ec2-fleet-capacity-rebalance-config-options)
+ [Considerações](#ec2-fleet-capacity-rebalance-considerations)

## Limitações
<a name="ec2-fleet-capacity-rebalance-limitations"></a>
+ O rebalanceamento de capacidade só está disponível para frotas do tipo `maintain`.
+ Quando a frota estiver em execução, não é possível modificar a configuração de rebalanceamento de capacidade. Para alterar a configuração de rebalanceamento de capacidade, você deve excluir a frota e criar uma nova.

## Opções de configuração
<a name="ec2-fleet-capacity-rebalance-config-options"></a>

A `ReplacementStrategy` para a frota do EC2 e a frota spot oferece suporte a estes dois valores:

`launch-before-terminate`  
O Amazon EC2 termina as Instâncias spot que recebem uma notificação de rebalanceamento após o lançamento de novas Instâncias spot de substituição. Se você especificar `launch-before-terminate`, também deverá especificar um valor para `termination-delay`. Depois que as novas instâncias de substituição são iniciadas, o Amazon EC2 aguarda o período de `termination-delay` e, em seguida, encerra as instâncias antigas. Em `termination-delay`, o mínimo é de 120 segundos (2 minutos) e o máximo é de 7.200 segundos (2 horas).  
Recomendamos o uso de `launch-before-terminate` apenas se você puder prever quanto tempo os procedimentos de desligamento da instância levarão. Isso garantirá que as instâncias antigas só sejam terminadas após a conclusão dos procedimentos de desligamento. Observe que o Amazon EC2 pode interromper as instâncias antigas com um aviso dois minutos antes do período de `termination-delay`.  
Recomendamos firmemente não usar a estratégia de alocação `lowest-price` (frota do EC2) ou `lowestPrice` (frota spot) em combinação com `launch-before-terminate` para evitar a ocorrência de instâncias spot de substituição que também apresentem risco elevado de interrupção.

`launch`  
O Amazon EC2 inicia instâncias spot de substituição quando uma notificação de rebalanceamento é emitida para as instâncias spot existentes. O Amazon EC2 não termina automaticamente as instâncias que recebem uma notificação de rebalanceamento. É possível terminar as instâncias antigas ou deixá-las em execução. Você é cobrado por todas as instâncias enquanto elas estão sendo executadas.

## Considerações
<a name="ec2-fleet-capacity-rebalance-considerations"></a>

Se você configurar uma frota do EC2 ou uma frota spot para rebalanceamento de capacidade, considere o seguinte:

**Forneça o maior número possível de grupos de capacidade spot na solicitação**  
Configure a frota para usar vários tipos de instância e zonas de disponibilidade. Isso oferece a flexibilidade para executar instâncias spot em vários grupos de capacidade spot. Para obter mais informações, consulte [Ser flexível sobre tipos de instância e zonas de disponibilidade](spot-best-practices.md#be-instance-type-flexible).

**Evitar um risco elevado de interrupção das instâncias spot substitutas**  
Para evitar um alto risco de interrupção, recomendamos fortemente a estratégia de alocação `capacity-optimized` ou `capacity-optimized-prioritized`. Essas estratégias garantem que as instâncias spot substitutas sejam iniciadas nos grupos de capacidade spot ideais e, portanto, tenham menos probabilidade de serem interrompidas em futuro próximo. Para obter mais informações, consulte [Usar a estratégia de alocação otimizada para preço e capacidade](spot-best-practices.md#use-capacity-optimized-allocation-strategy).  
Se você usar a estratégia de alocação `lowest-price`, as instâncias spot de substituição poderão apresentar risco elevado de interrupção. Isso ocorre porque o Amazon EC2 sempre iniciará instâncias no grupo de preços mais baixos que tenha capacidade disponível naquele momento, mesmo que exista a probabilidade de que as instâncias spot de substituição sejam interrompidas logo após serem iniciadas.

**O Amazon EC2 Auto Scaling só iniciará uma nova instância se a disponibilidade for igual ou superior**  
Um dos objetivos do rebalanceamento de capacidade é melhorar a disponibilidade de uma instância spot. Se uma instância spot existente receber uma recomendação de rebalanceamento, o Amazon EC2 só iniciará uma nova instância caso a nova instância forneça uma disponibilidade igual ou superior a da instância existente. Se o risco de interrupção de uma nova instância for pior do que a instância existente, o Amazon EC2 não iniciará uma nova instância. No entanto, o Amazon EC2 continuará a avaliar os grupos de capacidade spot e iniciará uma nova instância se a disponibilidade melhorar.  
Há uma chance de que a instância existente seja interrompida sem que o Amazon EC2 inicie proativamente uma nova instância. Quando isso acontecer, o Amazon EC2 tentará iniciar uma nova instância, independentemente de a nova instância ter um alto risco de interrupção.

**O Rebalanceamento da capacidade não aumenta a taxa de interrupção de instâncias Spot**  
Quando o Rebalanceamento da capacidade é habilitado, ele não aumenta a [Taxa de interrupção de instâncias Spot](spot-interruptions.md) (o número de instâncias Spot que são recuperadas quando o Amazon EC2 precisa novamente de capacidade). Porém, se o rebalanceamento da capacidade detectar que uma instância está em risco de interrupção, o Amazon EC2 tentará iniciar imediatamente uma nova instância. O resultado é que pode haver a substituição de mais instâncias do que se você esperasse que o Amazon EC2 iniciasse uma nova instância depois que a instância em risco fosse interrompida.  
Mesmo podendo substituir mais instâncias com o Rebalanceamento da capacidade habilitado, você se beneficia de ser proativo em vez de reativo, tendo mais tempo para agir antes que suas instâncias sejam interrompidas. Com um [Aviso de interrupção de instâncias Spot](spot-instance-termination-notices.md), normalmente você só tem até dois minutos para encerrar sua instância sem problemas. Com o Rebalanceamento da capacidade iniciando uma nova instância com antecedência, os processos existentes têm maiores chances de serem concluídos na instância em risco. Além disso, você pode iniciar os procedimentos de desligamento da instância e impedir que novos trabalhos sejam agendados na instância em risco. Você também pode começar a preparar a instância recém-lançada para assumir o controle da aplicação. Com a substituição proativa do Rebalanceamento da capacidade, você se beneficia com uma continuidade tranquila.  
Como exemplo teórico para demonstrar os riscos e benefícios do uso do Rebalanceamento da capacidade, considere o seguinte cenário:  
+ 14h: uma recomendação de rebalanceamento é recebida para a instância A, e o Amazon EC2 começa imediatamente a tentar iniciar uma instância B de substituição, dando a você tempo para iniciar os procedimentos de desligamento.\$1
+ 14h30: uma recomendação de rebalanceamento é recebida para a instância-B, substituída pela instância-C, dando a você tempo para iniciar os procedimentos de desligamento.\$1
+ 14h32: se o Rebalanceamento da capacidade não estivesse habilitado e um aviso de interrupção de instância Spot tivesse sido recebido às 14h32 para a instância-A, você teria apenas dois minutos para agir, mas a Instância-A estaria em execução até esse momento.
\$1 Se `launch-before-terminate` for especificado, o Amazon EC2 encerrará a instância em risco depois que a instância de substituição ficar online.

**O Amazon EC2 pode iniciar a nova Instâncias spot de substituição até que a capacidade atingida seja o dobro da capacidade visada**  
Quando uma frota é configurada para rebalanceamento de capacidade, ela tenta executar uma nova instância spot de substituição para cada instância spot que recebe uma recomendação de rebalanceamento. Depois que uma instância spot recebe uma recomendação de rebalanceamento, ela deixa de ser contada como parte da capacidade atendida. Dependendo da estratégia de substituição, o Amazon EC2 termina a instância após um período espera para término pré-configurado ou a deixa em execução. Isso dá a você a oportunidade de executar [ações de rebalanceamento](rebalance-recommendations.md#rebalancing-actions) na instância.  
Se sua frota atingir o dobro da capacidade de destino, ela interrompe a execução de novas instâncias de substituição, mesmo que as próprias instâncias de substituição recebam uma recomendação de rebalanceamento.  
Por exemplo, você cria uma frota com uma capacidade de destino de cem instâncias spot. Todas as instâncias spot recebem uma recomendação de rebalanceamento, o que faz com que o Amazon EC2 inicie 100 instâncias spot de substituição. Isso eleva o número de instâncias spot atendidas para 200, o que é o dobro da capacidade de destino. Algumas das instâncias de substituição recebem uma recomendação de rebalanceamento. Porém, nenhuma instância de substituição é inicializada porque a frota não pode exceder o dobro da sua capacidade de destino.   
Observe que você é cobrado por todas as instâncias durante a execução.

**Recomendamos que você configure a frota para encerrar as instâncias spot que receberem uma recomendação de rebalanceamento**  
Se você configurar a frota para rebalanceamento de capacidade, recomendamos que só escolha `launch-before-terminate` com um período de espera de encerramento apropriado se puder prever quanto tempo a conclusão dos procedimentos de desligamento da instância demorará. Isso garantirá que as instâncias antigas só sejam terminadas após a conclusão dos procedimentos de desligamento.  
Se escolher terminar as instâncias recomendadas para rebalanceamento você mesmo, recomendamos que monitore o aviso da recomendação de rebalanceamento recebido pelas instâncias spot na frota. Ao monitorar o sinal, você pode executar rapidamente [ações de rebalanceamento](rebalance-recommendations.md#rebalancing-actions) nas instâncias afetadas, antes que o Amazon EC2 as interrompa e, em seguida, você pode encerrá-las manualmente. Se você não encerrar as instâncias, continuará pagando por elas enquanto estiverem em execução. O Amazon EC2 não encerra automaticamente as instâncias que recebem uma recomendação de rebalanceamento.  
É possível configurar notificações usando o Amazon EventBridge ou metadados da instância. Para obter mais informações, consulte [Monitorar os sinais de recomendação de rebalanceamento](rebalance-recommendations.md#monitor-rebalance-recommendations).

**A frota não conta as instâncias que recebem uma recomendação de rebalanceamento quando calcula a capacidade atendida durante a redução ou o aumento da escala horizontalmente**  
Se a frota estiver configurada para rebalanceamento de capacidade e você alterar a capacidade de destino para redução ou aumento da escala horizontalmente, a frota não contará as instâncias marcadas para rebalanceamento como parte da capacidade atendida, como mostrado a seguir:  
+ Reduzir a escala horizontalmente - Se você diminuir a capacidade visada, o Amazon EC2 encerrará instâncias que não estiverem marcadas para rebalanceamento até que a capacidade desejada seja atingida. As instâncias marcadas para rebalanceamento não são contabilizadas para a capacidade atingida.

  Por exemplo, você cria uma frota com uma capacidade de destino de cem instâncias spot, e dez instâncias recebem uma recomendação de rebalanceamento. Portanto, o Amazon EC2 inicializa dez novas instâncias de substituição, resultando em uma capacidade atendida de 110 instâncias. Em seguida, você reduz a capacidade visada para 50 (reduzir a escala horizontalmente), mas a capacidade de atendimento é, na verdade, 60 instâncias porque as 10 instâncias marcadas para rebalanceamento não são encerradas pelo Amazon EC2. Você precisa encerrar manualmente essas instâncias ou deixá-las em execução.
+ Aumentar a escala horizontalmente - Se você aumentar a capacidade visada, o Amazon EC2 iniciará novas instâncias até que a capacidade desejada seja atingida. As instâncias marcadas para rebalanceamento não são contabilizadas para a capacidade atingida. 

  Por exemplo, você cria uma frota com uma capacidade de destino de cem instâncias spot. Dez instâncias recebem uma recomendação de rebalanceamento. Portanto, a frota inicializa dez novas instâncias de substituição, resultando em uma capacidade atendida de 110 instâncias. Em seguida, você aumenta a capacidade de destino para 200 (aumento), mas a capacidade de atendimento é, na verdade, 210 instâncias porque as 10 instâncias marcadas para rebalanceamento não são contabilizadas pela frota como parte da capacidade de destino. Você precisa encerrar manualmente essas instâncias ou deixá-las em execução.

# Use reservas de capacidade para reservar capacidade sob demanda na frota do EC2
<a name="ec2-fleet-on-demand-capacity-reservations"></a>

Com as Reservas de Capacidade sob demanda, você pode reservar capacidade computacional para suas Instâncias sob demanda em uma determinada zona de disponibilidade por qualquer duração. É possível configurar uma Frota do EC2 para usar as Reservas de Capacidade primeiro ao iniciar Instâncias sob demanda.

As reservas de capacidade sob demanda só estão disponíveis para a frota do EC2 com o tipo de solicitação definido como `instant`.

As Reservas de Capacidade são configuradas como `open` ou `targeted`. A frota EC2 pode iniciar Instâncias sob demanda nas Reservas de Capacidade `open` ou `targeted`, da seguinte forma:
+ Se uma Reserva de capacidade é `open`, as Instâncias sob demanda que tiverem atributos correspondentes serão executadas automaticamente na capacidade reservada.
+ Se uma Reserva de capacidade for `targeted`, as Instâncias sob demanda deverão usá-la como destino especificamente para executar na capacidade reservada. Isso é útil para usar Reservas de Capacidade específicas ou para controlar quando usar Reservas de Capacidade específicas. 

Se você usar Reservas de Capacidade `targeted` em sua frota EC2, deve haver Reservas de Capacidade suficientes para atender à capacidade sob demanda de destino, caso contrário, o lançamento falhará. Para evitar uma falha no lançamento, adicione as Reservas de Capacidade `targeted` a um grupo de recursos e, em seguida, direcione o grupo de recursos. O grupo de recursos não precisa ter Reservas de Capacidade suficientes; se ficar sem Reservas de Capacidade antes que a capacidade sob demanda de destino seja atendida, a frota poderá iniciar a capacidade de destino restante na capacidade sob demanda regular.

**Para usar Reservas de Capacidade com a frota EC2**

1. Configurar a frota como tipo `instant`. Não é possível usar Reservas de Capacidade para frotas de outros tipos.

1. Configure a estratégia de uso para Reservas de Capacidade como `use-capacity-reservations-first`.

1. No modelo de lançamento, para **Reserva de capacidade**, escolha **Aberto** ou **Destino por grupo**. Se escolher **Destino por grupo**, especifique o ID do grupo de recursos de Reservas de Capacidade.

Quando a frota tenta atender à capacidade sob demanda, se descobrir que vários grupos de instâncias têm Reservas de Capacidade correspondentes não utilizadas, ela determina os grupos nos quais iniciar as Instâncias sob demanda com base na estratégia de alocação sob demanda (`lowest-price` ou `prioritized`).

**Recursos relacionados**
+ Para obter exemplos da CLI de como configurar uma frota para usar reservas de capacidade para atender à capacidade sob demanda, consulte [Exemplo de configurações da CLI para frotas do EC2](ec2-fleet-examples.md), especificamente os exemplos de 5 a 7.
+ Para ver um tutorial que mostra as etapas para criar reservas de capacidade, usá-las na frota e visualizar quantas reservas de capacidade ainda restam, consulte [Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md).
+ Para obter informações sobre configuração das Reservas de Capacidade, consulte [Reservar capacidade computacional com reservas de capacidade sob demanda do EC2](ec2-capacity-reservations.md) e as [Perguntas frequentes sobre Reservas de Capacidade](https://aws.amazon.com/ec2/faqs/#On-Demand_Capacity_Reservation).

# Trabalhar com uma frota do EC2
<a name="manage-ec2-fleet"></a>

Para começar a usar uma frota do EC2, crie uma solicitação que inclua a capacidade total de destino, a capacidade sob demanda, a capacidade spot e um modelo de inicialização especificando a configuração das instâncias da frota. Como alternativa, você pode especificar parâmetros adicionais ou permitir que a frota use valores padrão. Você também pode marcar a solicitação da frota e suas instâncias e seus volumes quando criar a frota.

A frota executa instâncias sob demanda quando há capacidade disponível, e executa Instâncias spot quando o preço máximo excede o preço spot e há capacidade disponível.

Depois que a frota for inicializada, será possível descrever a solicitação, as instâncias e os eventos da frota. Você também poderá atribuir tags adicionais conforme necessário.

Caso precise alterar algum parâmetro da frota, como a capacidade total de destino, você pode modificar a frota, desde que ela tenha sido configurada para manter a capacidade. Você não pode modificar a capacidade de uma solicitação única depois que ela for enviada.

Uma solicitação de frota permanece ativa até que expire ou você a exclua. Ao excluir a solicitação da frota, você pode encerrar as instâncias ou deixá-las em execução. Caso escolha deixá-las em execução, as instâncias sob demanda serão executadas até que você as encerre, e as Instâncias spot serão executadas até que sejam interrompidas ou você as encerre.

**Topics**
+ [Estados das solicitações da Frota do EC2](EC2-fleet-states.md)
+ [Pré-requisitos da Frota do EC2](ec2-fleet-prerequisites.md)
+ [Criar uma Frota do EC2.](create-ec2-fleet.md)
+ [Marcar uma solicitação nova ou atual de frota do EC2 e as instâncias e os volumes que ela inicializa](tag-ec2-fleet.md)
+ [Descrever uma frota do EC2, suas instâncias e seus eventos](describe-ec2-fleet.md)
+ [Modificar uma Frota do EC2](modify-ec2-fleet.md)
+ [Excluir uma solicitação de frota do EC2 e as instâncias da frota](delete-fleet.md)

# Estados das solicitações da Frota do EC2
<a name="EC2-fleet-states"></a>

Uma solicitação de frota do EC2 pode ter um de vários estados, cada estado indicando um estágio diferente do ciclo de vida da solicitação e do gerenciamento das instâncias.

Uma solicitação de Frota do EC2 pode estar em um dos seguintes estados:

`submitted`  
A solicitação de Frota do EC2 está sendo avaliada, e o Amazon EC2 está se preparando para executar o número de destino de instâncias. Se uma solicitação for exceder os limites da frota, ela será excluída imediatamente.

`active`  
A solicitação de Frota do EC2 foi validada e o Amazon EC2 está tentando manter o número de destino das instâncias em execução. A solicitação permanece nesse estado até que seja alterada ou excluída.

`modifying`  
A solicitação de Frota do EC2 está sendo modificada. A solicitação permanece nesse estado até que a modificação seja totalmente processada ou que a solicitação seja excluída. Apenas um tipo `maintain` de frota pode ser modificado. Esse estado não se aplica a outros tipos de solicitação.

`deleted_running`  
A solicitação do EC2 Fleet foi excluída e não executará instâncias spot adicionais. Suas instâncias existentes continuam sendo executadas até que sejam interrompidas ou encerradas manualmente. A solicitação permanece nesse estado até que todas as instâncias sejam interrompidas ou encerradas. Apenas uma Frota do EC2 do tipo `maintain` ou `request` pode ter instâncias em execução após a solicitação de Frota do EC2 ser excluída. Não há suporte a uma frota `instant` excluída com instâncias em execução. Este estado não se aplica às frotas `instant`.

`deleted_terminating`  
A solicitação de Frota do EC2 foi excluída, e as instâncias estão sendo encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam encerradas.

`deleted`  
A solicitação de Frota do EC2 foi excluída, e não há outras instâncias em execução. A solicitação foi excluída dois dias depois que as instâncias foram encerradas.

# Pré-requisitos da Frota do EC2
<a name="ec2-fleet-prerequisites"></a>

**Topics**
+ [Modelo de execução](#ec2-fleet-prerequisites-launch-template)
+ [Função vinculada ao serviço para Frota do EC2](#ec2-fleet-service-linked-role)
+ [Conceder acesso às chaves gerenciadas pelo cliente para uso com AMIs criptografadas e snapshots do EBS](#ec2-fleet-service-linked-roles-access-to-cmks)
+ [Permissões para usuários da Frota do EC2](#ec2-fleet-iam-users)

## Modelo de execução
<a name="ec2-fleet-prerequisites-launch-template"></a>

Um modelo de inicialização especifica as informações de configuração sobre as instâncias a serem inicializadas, como o tipo de instância e a zona de disponibilidade. Para obter mais informações sobre modelos de inicialização, consulte [Armazenar os parâmetros de execução de instâncias nos modelos de execução do Amazon EC2](ec2-launch-templates.md).

## Função vinculada ao serviço para Frota do EC2
<a name="ec2-fleet-service-linked-role"></a>

O `AWSServiceRoleForEC2Fleet` concede à frota do EC2 permissão para solicitar, executar, encerrar e marcar instâncias em seu nome. O Amazon EC2 usa essa função vinculada ao serviço para concluir as seguintes ações:
+ `ec2:RunInstances` – Executar instâncias
+ `ec2:RequestSpotInstances` – Solicitação Instâncias spot.
+ `ec2:TerminateInstances` – Encerrar instâncias
+ `ec2:DescribeImages`: descrever imagens de máquina da Amazon (AMIs) para as instâncias.
+ `ec2:DescribeInstanceStatus`: descrever o status das instâncias.
+ `ec2:DescribeSubnets`: descrever as sub-redes das instâncias.
+ `ec2:CreateTags` – Adicionar tags a Frota do EC2, instâncias e volumes.

Verifique se essa função está disponível antes de usar a AWS CLI ou uma API para criar uma frota do EC2.

**nota**  
Uma Frota do EC2 `instant` não requer essa função.

Para criar a função, use o console do IAM da seguinte forma.

**Para criar a função AWSServiceRoleForEC2Fleet para Frota do EC2**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha **Criar Perfil**.

1. Na página **Selecionar entidade confiável**, faça o seguinte:

   1. Em **Tipo de entidade confiável**, escolha **Serviços da AWS**.

   1. Em **Caso de uso**, para **Serviço ou caso de uso**, escolha **EC2 - Frota**.
**dica**  
Certifique-se de escolher **EC2 - Frota**. Se você escolher **EC2**, o caso de uso **EC2 - Frota** não aparecerá na lista de **Casos de uso**. O caso de uso **EC2 - Frota** criará automaticamente uma política com as permissões necessárias do IAM e sugerirá **AWSServiceRoleForEC2Fleet** como nome do perfil.

   1. Escolha **Próximo**.

1. Na página **Adicionar permissões**, escolha **Próximo**.

1. Na página **Nomear, revisar e criar**, escolha **Criar função**.

Se você não precisar mais usar Frota do EC2, é recomendável excluir a função **AWSServiceRoleForEC2Fleet**. Depois que essa função for excluída na sua conta, será possível criar a função novamente se criar outra frota.

Para obter mais informações, consulte [Perfis vinculados ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) no *Guia do usuário do IAM*.

## Conceder acesso às chaves gerenciadas pelo cliente para uso com AMIs criptografadas e snapshots do EBS
<a name="ec2-fleet-service-linked-roles-access-to-cmks"></a>

Se você especificar uma [AMI criptografada](AMIEncryption.md) ou um snapshot criptografado do Amazon EBS na frota do EC2 e usar uma chave do AWS KMS para criptografia, será necessário conceder ao perfil **AWSServiceRoleForEC2Fleet** permissão para usar a chave gerenciada pelo cliente para que o Amazon EC2 possa iniciar instâncias 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 [Usar concessões](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) e [Usar políticas de chave no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), no *Guia do desenvolvedor do AWS Key Management Service*.

**Para conceder as permissões para a função AWSServiceRoleForEC2Fleet para usar a chave gerenciada pelo cliente**
+ Use o comando [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) para adicionar uma concessão à chave gerenciada pelo cliente e especificar a entidade principal (a função vinculada ao serviço **AWSServiceRoleForEC2Fleet**) 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. O principal é especificado pelo parâmetro `grantee-principal` e o ARN da função vinculada ao serviço **AWSServiceRoleForEC2Fleet**.

  ```
  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/AWSServiceRoleForEC2Fleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## Permissões para usuários da Frota do EC2
<a name="ec2-fleet-iam-users"></a>

Se os usuários pretenderem criar ou gerenciar uma Frota do EC2, certifique-se de conceder a eles as permissões necessárias.

**Para criar uma frota do EC2**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Policies**.

1. Escolha **Create policy (Criar política)**.

1. Na página **Create policy (Criar política)**, escolha a guia **JSON**, substitua texto pelo seguinte e escolha **Review policy (Revisar política)**.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:*"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                 "iam:ListRoles",
                 "iam:PassRole",
                 "iam:ListInstanceProfiles"
               ],
               "Resource":"arn:aws:iam::123456789012:role/DevTeam*"
           }
       ]
   }
   ```

------

   O `ec2:*` concede a um usuário permissão para chamar todas as ações de API do Amazon EC2. Para limitar o usuário a ações de API do Amazon EC2, especifique essas ações.

   O usuário deve ter permissão para chamar a ação `iam:ListRoles` para enumerar os perfis do IAM existentes, a ação `iam:PassRole` para especificar o perfil da frota do EC2 e a ação `iam:ListInstanceProfiles` para enumerar os perfis de instância existentes.

   (Opcional) Para permitir que um usuário crie perfis ou perfis de instância usando o console do IAM, também é necessário adicionar as ações a seguir à política:
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. Na página **Review policy (Revisar política)**, digite um nome e uma descrição para a política e escolha **Create policy (Criar política)**.

1. Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
   + Usuários e grupos no Centro de Identidade do AWS IAM:

     Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
   + Usuários gerenciados no IAM com provedor de identidades:

     Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
   + Usuários do IAM:
     + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
     + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

# Criar uma Frota do EC2.
<a name="create-ec2-fleet"></a>

Para criar uma frota do EC2, defina a configuração da frota em um arquivo JSON e referencie esse arquivo com o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html). No arquivo JSON, você deve especificar a capacidade total de destino da frota, as capacidades de destino separadas para instâncias spot e instâncias sob demanda e um modelo de inicialização que defina a configuração das instâncias na frota, como uma AMI, um tipo de instância, uma sub-rede ou uma zona de disponibilidade e um ou mais grupos de segurança. Como alternativa, você pode especificar configurações adicionais, como parâmetros para substituir a configuração do modelo de inicialização, estratégias de alocação para selecionar instâncias spot e instâncias sob demanda dos grupos de capacidade do EC2 e o valor máximo que você deseja pagar pela frota. Para obter mais informações, consulte [Opções de configuração para frota do EC2 ou frota spot](ec2-fleet-configuration-strategies.md).

A frota do EC2 inicializa instâncias sob demanda quando há capacidade disponível e inicializa instâncias spot quando o preço máximo excede o preço spot e há capacidade disponível.

Se a frota incluir a instâncias spot e for do tipo `maintain`, o Amazon EC2 tentará manter a capacidade de destino da frota quando as instâncias spot forem interrompidas.

## Limitações da Frota do EC2
<a name="EC2-fleet-limitations"></a>

As limitações a seguir se aplicam à Frota do EC2:
+ A criação de uma frota do EC2 só está disponível por meio da [API do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html), da [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html), dos [AWS SDKs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html#API_CreateFleet_SeeAlso) e do [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html).
+ Uma solicitação de EC2 Fleet não pode abranger regiões da AWS. Você precisa criar uma Frota do EC2 separada para cada região.
+ Uma solicitação de Frota do EC2 não pode abranger sub-redes diferentes na mesma zona de disponibilidade.

## Criar uma Frota do EC2.
<a name="create-ec2-fleet-procedure"></a>

Para inicializar uma frota de instâncias usando a frota do EC2, você só precisa especificar os seguintes parâmetros na solicitação de frota para que a frota use os valores padrão para os outros parâmetros:
+ `LaunchTemplateId` ou `LaunchTemplateName`: especifica o modelo de inicialização a ser usado (que contém os parâmetros das instâncias a serem inicializadas, como o tipo de instância e a zona de disponibilidade)
+ `TotalTargetCapacity`: especifica a capacidade-alvo total para a frota
+ `DefaultTargetCapacityType`: especifica se a opção de compra padrão é sob demanda ou spot

Para substituir os parâmetros especificados no modelo de inicialização, você pode especificar uma ou mais substituições. As especificações de execução podem variar por tipo de instância, zona de disponibilidade, sub-rede e preço máximo e podem incluir uma capacidade ponderada diferente. Como alternativa à especificação de um tipo de instância, você pode especificar os atributos que uma instância deve ter e o Amazon EC2 identificará todos os tipos de instância com esses atributos. Para obter mais informações, consulte [Especificar atributos para seleção de tipo de instância para frota do EC2 ou frota spot](ec2-fleet-attribute-based-instance-type-selection.md).

Em frotas do EC2 do tipo `instant`, você pode especificar um parâmetro do Systems Manager em vez do ID da AMI. É possível especificar o parâmetro do Systems Manager na substituição ou no modelo de inicialização. Para obter mais informações, consulte [Use um parâmetro de Systems Manager em vez de um ID de AMI](create-launch-template.md#use-an-ssm-parameter-instead-of-an-ami-id).

É possível especificar os parâmetros da frota em um arquivo JSON. Para obter informações sobre todos os parâmetros possíveis que você pode especificar, consulte [Visualizar todas as opções de configuração de frotas do EC2](#ec2-fleet-cli-skeleton). 

Para ver exemplos de configuração da frota, consulte [Exemplo de configurações da CLI para frotas do EC2](ec2-fleet-examples.md).

No momento, não há suporte de console para a criação de uma frota do EC2.

**Criar uma frota do EC2**  
Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) para criar a frota e especifique o arquivo JSON que contém os parâmetros de configuração da frota.

```
aws ec2 create-fleet --cli-input-json file://file_name.json
```

A seguir está um exemplo de saída de uma frota do tipo `request` ou `maintain`.

```
{
    "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE"
}
```

A seguir está um exemplo de saída de uma frota do tipo `instant` que executou a capacidade de destino.

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [],
  "Instances": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef9" 
      ],
      "InstanceType": "c5.large",
      "Platform": null
    },
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-5678901234abcdef0",
        "i-5432109876abcdef9" 
      ]
  ]
}
```

A seguir está um exemplo de saída de uma frota do tipo `instant` que executou parte da capacidade de destino com erros em instâncias que não foram executadas.

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.xlarge",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientInstanceCapacity",
      "ErrorMessage": ""
    },
  ],
  "Instances": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef9" 
      ]
  ]
}
```

A seguir está um exemplo de saída de uma frota do tipo `instant` que não executou nenhuma instância.

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.xlarge",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientCapacity",
      "ErrorMessage": ""
    },
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientCapacity",
      "ErrorMessage": ""
    },
  ],
  "Instances": []
}
```

## Criar uma frota do EC2 que substitua instâncias spot não íntegras
<a name="ec2-fleet-health-checks"></a>

A Frota do EC2 verifica o status de integridade das instâncias na frota a cada dois minutos. O status de integridade de uma instância é `healthy` ou `unhealthy`.

A Frota do EC2 determina o status de integridade de uma instância usando as verificações de status fornecidas pelo Amazon EC2. Uma instância é determinada como `unhealthy` quando o status da verificação de status da instância ou da verificação de status do sistema for `impaired` para três verificações de status de integridade consecutivas. Para obter mais informações, consulte [Verificações do status das instâncias do Amazon EC2](monitoring-system-instance-status-check.md).

É possível configurar a sua frota para substituir Instâncias spot não íntegras. Depois de configurar `ReplaceUnhealthyInstances` para `true`, uma instância spot é substituída ao ser reportada como `unhealthy`. A frota poderá ficar abaixo de sua capacidade de destino por alguns minutos enquanto uma instância spot não íntegra estiver sendo substituída.

**Requisitos**
+ A substituição da verificação de integridade é compatível apenas para Frotas do EC2 que mantenham uma capacidade de destino (frotas do tipo `maintain`) e não para as frotas únicas do tipo `request` ou `instant`.
+ A substituição da verificação de integridade é compatível apenas para Instâncias spot. Este recurso não é compatível para Instâncias on-demand.
+ É possível configurar a Frota do EC2 para substituir instâncias não íntegras somente durante sua criação.
+ Os usuários só poderão usar a substituição de verificação de integridade se tiverem permissão para chamar a ação `ec2:DescribeInstanceStatus`.

**Para configurar um Frota do EC2 para substituir uma Instâncias spot não íntegra**

1. Use as informações para criar uma frota do EC2 em [Criar uma Frota do EC2.](#create-ec2-fleet-procedure).

1. Para configurar a frota para substituir instâncias spot não íntegras no arquivo JSON, em `ReplaceUnhealthyInstances`, especifique `true`. 

## Visualizar todas as opções de configuração de frotas do EC2
<a name="ec2-fleet-cli-skeleton"></a>

Para visualizar a lista completa de parâmetros de configuração de frota do EC2, você pode gerar um arquivo JSON. Para obter uma descrição de cada parâmetro, consulte [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html).

**Gerar um arquivo JSON com todos os parâmetros de frotas do EC2 possíveis**  
Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) (AWS CLI) e o parâmetro `--generate-cli-skeleton` para gerar um arquivo JSON da Frota do EC2 e direcione a saída a um arquivo para salvá-la.

```
aws ec2 create-fleet \
    --generate-cli-skeleton input > ec2createfleet.json
```

O seguinte é um exemplo de saída.

```
{
    "DryRun": true,
    "ClientToken": "",
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized",
        "MaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch"
            }
        },
        "InstanceInterruptionBehavior": "hibernate",
        "InstancePoolsToUseCount": 0,
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 0,
        "MaxTotalPrice": ""
    },
    "OnDemandOptions": {
        "AllocationStrategy": "prioritized",
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        },
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 0,
        "MaxTotalPrice": ""
    },
    "ExcessCapacityTerminationPolicy": "termination",
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "",
                "LaunchTemplateName": "",
                "Version": ""
            },
            "Overrides": [
                {
                    "InstanceType": "r5.metal",
                    "MaxPrice": "",
                    "SubnetId": "",
                    "AvailabilityZone": "",
                    "WeightedCapacity": 0.0,
                    "Priority": 0.0,
                    "Placement": {
                        "AvailabilityZone": "",
                        "Affinity": "",
                        "GroupName": "",
                        "PartitionNumber": 0,
                        "HostId": "",
                        "Tenancy": "dedicated",
                        "SpreadDomain": "",
                        "HostResourceGroupArn": ""
                    },
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 0
                        },
                        "MemoryMiB": {
                            "Min": 0,
                            "Max": 0
                        },
                        "CpuManufacturers": [
                            "amd"
                        ],
                        "MemoryGiBPerVCpu": {
                            "Min": 0.0,
                            "Max": 0.0
                        },
                        "ExcludedInstanceTypes": [
                            ""
                        ],
                        "InstanceGenerations": [
                            "previous"
                        ],
                        "SpotMaxPricePercentageOverLowestPrice": 0,
                        "OnDemandMaxPricePercentageOverLowestPrice": 0,
                        "BareMetal": "included",
                        "BurstablePerformance": "required",
                        "RequireHibernateSupport": true,
                        "NetworkInterfaceCount": {
                            "Min": 0,
                            "Max": 0
                        },
                        "LocalStorage": "excluded",
                        "LocalStorageTypes": [
                            "ssd"
                        ],
                        "TotalLocalStorageGB": {
                            "Min": 0.0,
                            "Max": 0.0
                        },
                        "BaselineEbsBandwidthMbps": {
                            "Min": 0,
                            "Max": 0
                        },
                        "AcceleratorTypes": [
                            "inference"
                        ],
                        "AcceleratorCount": {
                            "Min": 0,
                            "Max": 0
                        },
                        "AcceleratorManufacturers": [
                            "amd"
                        ],
                        "AcceleratorNames": [
                            "a100"
                        ],
                        "AcceleratorTotalMemoryMiB": {
                            "Min": 0,
                            "Max": 0
                        }
                    }
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 0,
        "OnDemandTargetCapacity": 0,
        "SpotTargetCapacity": 0,
        "DefaultTargetCapacityType": "on-demand",
        "TargetCapacityUnitType": "memory-mib"
    },
    "TerminateInstancesWithExpiration": true,
    "Type": "instant",
    "ValidFrom": "1970-01-01T00:00:00",
    "ValidUntil": "1970-01-01T00:00:00",
    "ReplaceUnhealthyInstances": true,
    "TagSpecifications": [
        {
            "ResourceType": "fleet",
            "Tags": [
                {
                    "Key": "",
                    "Value": ""
                }
            ]
        }
    ],
    "Context": ""
}
```

# Marcar uma solicitação nova ou atual de frota do EC2 e as instâncias e os volumes que ela inicializa
<a name="tag-ec2-fleet"></a>

Para ajudar na categorização e no gerenciamento das solicitações de frota do EC2 e das instâncias e dos volumes que ela inicializa, você pode marcá-las com metadados personalizados. É possível atribuir uma tag a uma solicitação de Frota do EC2 ao criá-la ou posteriormente. Da mesma forma, você pode atribuir uma tag às instâncias e aos volumes quando eles são inicializados pela frota, ou posteriormente.

Quando você marca uma solicitação de frota, as instâncias e os volumes que são executados pela frota não são marcados automaticamente. É necessário marcar explicitamente as instâncias e os volumes executados pela frota. É possível optar por atribuir tags somente à solicitação de frota, somente às instâncias inicializadas pela frota, somente aos volumes anexados às instâncias inicializadas pela frota ou a todos eles.

**nota**  
Para tipos de frota `instant`, é possível marcar volumes anexados a Instâncias on-demand e Instâncias spot. Para os tipos de frota `request` ou `maintain`, só é possível marcar volumes anexados a Instâncias on-demand.

Para obter mais informações sobre como as tags funcionam, consulte [Marcar com tag os recursos do Amazon EC2](Using_Tags.md).

**Pré-requisito**

Conceda ao usuário permissão para marcar recursos. Para obter mais informações, consulte [Exemplo: marcar recursos](ExamplePolicies_EC2.md#iam-example-taggingresources).

**Para conceder a um usuário permissão para marcar recursos**  
Crie uma política do IAM que inclua o seguinte:
+ A ação `ec2:CreateTags`. Isso concede ao usuário permissão para criar tags.
+ A ação `ec2:CreateFleet`. Isso concede ao usuário permissão para criar uma solicitação de Frota do EC2.
+ Para `Resource`, recomendamos que você especifique `"*"`. Permite que os usuários marquem todos os tipos de recursos.

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos no Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

**Como marcar uma nova solicitação de Frota do EC2**  
Para marcar uma solicitação de Frota do EC2 ao criá-la, especifique o par de valor-chave no [arquivo JSON](create-ec2-fleet.md#ec2-fleet-cli-skeleton) usado para criar a frota. O valor de `ResourceType` deve ser `fleet`. Se você especificar outro valor, ocorrerá falha na frota.

**Como marcar instâncias e volumes executado por uma Frota do EC2**  
Para marcar instâncias e volumes ao serem executados pela frota, especifique as tags no [modelo de execução](create-launch-template.md) mencionado na solicitação de Frota do EC2.

**nota**  
Não é possível marcar volumes anexados a Instâncias spot que são executados por um tipo de frota `request` ou `maintain`.

**Marcar uma solicitação da frota do EC2, uma instância e um volume existentes**  
Use o comando [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) para marcar os recursos existentes.

```
aws ec2 create-tags \
    --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \
    --tags Key=purpose,Value=test
```

# Descrever uma frota do EC2, suas instâncias e seus eventos
<a name="describe-ec2-fleet"></a>

É possível descrever a frota do EC2, relacionar as instâncias associadas à frota do EC2 e visualizar o histórico da frota do EC2.

**Topics**
+ [Descrever a frota do EC2](#describe-all-ec2-fleets)
+ [Descrever todas as instâncias em sua frota do EC2](#describe-instances-in-ec2-fleet)
+ [Descrever o histórico de eventos para o EC2 Fleet](#describe-ec2-fleet-event-history)

## Descrever a frota do EC2
<a name="describe-all-ec2-fleets"></a>

------
#### [ AWS CLI ]

**Para descrever sua frota do EC2**  
Use o comando [describe-fleets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleets.html).

```
aws ec2 describe-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

O seguinte é um exemplo de saída.

```
{
    "Fleets": [
        {
            "ActivityStatus": "fulfilled",
            "CreateTime": "2022-02-09T03:35:52+00:00",
            "FleetId": "fleet-364457cd-3a7a-4ed9-83d0-7b63e51bb1b7",
            "FleetState": "active",
            "ExcessCapacityTerminationPolicy": "termination",
            "FulfilledCapacity": 2.0,
            "FulfilledOnDemandCapacity": 0.0,
            "LaunchTemplateConfigs": [
                {
                    "LaunchTemplateSpecification": {
                        "LaunchTemplateName": "my-launch-template",
                        "Version": "$Latest"
                    }
                }
            ],
            "TargetCapacitySpecification": {
                "TotalTargetCapacity": 2,
                "OnDemandTargetCapacity": 0,
                "SpotTargetCapacity": 2,
                "DefaultTargetCapacityType": "spot"
            },
            "TerminateInstancesWithExpiration": false,
            "Type": "maintain",
            "ReplaceUnhealthyInstances": false,
            "SpotOptions": {
                "AllocationStrategy": "capacity-optimized",
                "InstanceInterruptionBehavior": "terminate"
            },
            "OnDemandOptions": {
                "AllocationStrategy": "lowestPrice"
            }
        }
    ]
}
```

------
#### [ PowerShell ]

**Para descrever sua frota do EC2**  
Use o cmdlet [Get-EC2FleetList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetList.html).

```
Get-EC2FleetList `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

------

## Descrever todas as instâncias em sua frota do EC2
<a name="describe-instances-in-ec2-fleet"></a>

A lista retornada das instâncias em execução é atualizada periodicamente e pode estar desatualizada.

------
#### [ AWS CLI ]

**Para descrever as instâncias da frota do EC2 especificada**  
Use o comando [describe-fleet-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleet-instances.html).

```
aws ec2 describe-fleet-instances \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

O seguinte é um exemplo de saída.

```
{
    "ActiveInstances": [
        {
            "InstanceId": "i-09cd595998cb3765e", 
            "InstanceHealth": "healthy", 
            "InstanceType": "m4.large", 
            "SpotInstanceRequestId": "sir-86k84j6p"
        }, 
        {
            "InstanceId": "i-09cf95167ca219f17", 
            "InstanceHealth": "healthy", 
            "InstanceType": "m4.large", 
            "SpotInstanceRequestId": "sir-dvxi7fsm"
        }
    ], 
    "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
}
```

------
#### [ PowerShell ]

**Para descrever as instâncias da frota do EC2 especificada**  
Use o cmdlet [Get-EC2FleetInstanceList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetInstanceList.html).

```
Get-EC2FleetInstanceList `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

------

## Descrever o histórico de eventos para o EC2 Fleet
<a name="describe-ec2-fleet-event-history"></a>

Para obter mais informações sobre os eventos no histórico de eventos, consulte [Tipos de evento de Frota do EC2](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-event-types).

------
#### [ AWS CLI ]

**Para descrever os eventos para a frota do EC2 especificada**  
Use o comando [describe-fleet-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleet-history.html).

```
aws ec2 describe-fleet-history \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --start-time 2020-06-01T00:00:00Z
```

O seguinte é um exemplo de saída.

```
{
    "HistoryRecords": [
        {
            "EventInformation": {
                "EventSubType": "submitted"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:05.000Z"
        },
        {
            "EventInformation": {
                "EventSubType": "active"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:15.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "t2.small, ami-07c8bc5c1ce9598c3, ...",
                "EventSubType": "progress"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "{\"instanceType\":\"t2.small\", ...}",
                "EventSubType": "launched",
                "InstanceId": "i-083a1c446e66085d2"
            },
            "EventType": "instanceChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "{\"instanceType\":\"t2.small\", ...}",
                "EventSubType": "launched",
                "InstanceId": "i-090db02406cc3c2d6"
            },
            "EventType": "instanceChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        }
    ], 
    "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", 
    "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", 
    "StartTime": "2020-06-01T00:00:00.000Z"
}
```

------
#### [ PowerShell ]

**Para descrever os eventos para a frota do EC2 especificada**  
Use o cmdlet [Get-EC2FleetHistory](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetHistory.html).

```
Get-EC2FleetHistory `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE `
    -UtcStartTime 2020-06-01T00:00:00Z
```

------

# Modificar uma Frota do EC2
<a name="modify-ec2-fleet"></a>

É possível modificar a capacidade total de destino, a capacidade spot e a capacidade sob demanda de uma frota do EC2. Você também pode modificar se as instâncias em execução devem ser encerradas caso a nova capacidade total de destino fique abaixo do tamanho atual da frota.

## Considerações
<a name="modify-ec2-fleet-considerations"></a>

Considere o seguinte quando modificar uma frota do EC2:
+ **Tipo de frota**: só é possível modificar uma frota do EC2 do tipo `maintain`. Você não pode modificar uma frota do EC2 do tipo `request` ou do tipo `instant`.
+ **Parâmetros da frota**: você pode modificar os seguintes parâmetros de uma frota do EC2:
  + `target-capacity-specification`: aumentar ou diminuir a capacidade de destino de:
    + `TotalTargetCapacity`
    + `OnDemandTargetCapacity`
    + `SpotTargetCapacity`
  + `excess-capacity-termination-policy` – Se as instâncias em execução devem ser encerradas caso a capacidade total de destino da Frota do EC2 fique abaixo do tamanho atual da frota. Os valores válidos são:
    + `no-termination`
    + `termination`
+ **Comportamento da frota quando a capacidade total de destino é aumentada**: quando você aumenta a capacidade total de destino, a frota do EC2 inicializa as instâncias adicionais de acordo com a opção de compra da instância especificada para `DefaultTargetCapacityType`, ou seja, instâncias sob demanda ou instâncias spot, e de acordo com a [estratégia de alocação](ec2-fleet-allocation-strategy.md) especificada.
+ **Comportamento da frota quando a capacidade de destino spot é diminuída**: quando você diminui a capacidade de destino spot, a frota do EC2 exclui todas as solicitações abertas que excedem a nova capacidade de destino. É possível solicitar que a frota encerre as instâncias spot até que o tamanho da frota atinja a nova capacidade de destino. Quando uma EC2 Fleet encerra uma instância spot porque a capacidade pretendida foi diminuída, a instância recebe um aviso de interrupção de instância spot.

  As instâncias são selecionadas para encerramento com base na estratégia de alocação:
  + `capacity-optimized`: encerra instâncias de grupos com a menor capacidade disponível.
  + `price-capacity-optimized`: usa uma combinação de preço e capacidade disponível: encerra instâncias de grupos com a menor capacidade disponível e que têm o preço mais alto entre esses grupos.
  + `diversified`: encerra instâncias em todos os grupos.
  + `lowest-price`: encerra instâncias dos grupos com preços mais altos.

  Como alternativa, você pode solicitar que a frota do EC2 mantenha seu tamanho atual, mas não substitua nenhuma instância spot interrompida ou encerrada manualmente por você.
+ **Estado da frota**: você pode modificar uma frota do EC2 que esteja no estado `submitted` ou no estado `active`. Quando você modifica uma frota, ela entra no estado `modifying`.

## Comandos para modificar uma frota do EC2
<a name="modify-ec2-fleet-commands"></a>

------
#### [ AWS CLI ]

**Modificar a capacidade total de destino de uma frota do EC2**  
Use o comando [modify-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-fleet.html).

```
aws ec2 modify-fleet \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity-specification TotalTargetCapacity=20
```

Se você estiver diminuindo a capacidade de destino, mas quiser manter a frota com o tamanho atual, poderá modificar o exemplo anterior conforme mostrado a seguir.

```
aws ec2 modify-fleet \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity-specification TotalTargetCapacity=10 \
    --excess-capacity-termination-policy no-termination
```

------
#### [ PowerShell ]

**Modificar a capacidade total de destino de uma frota do EC2**  
Use o cmdlet [Edit-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2Fleet.html).

```
Edit-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacitySpecification_TotalTargetCapacity 20
```

Se você estiver diminuindo a capacidade de destino, mas quiser manter a frota com o tamanho atual, poderá modificar o exemplo anterior conforme mostrado a seguir.

```
Edit-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacitySpecification_TotalTargetCapacity 20 `
    -ExcessCapacityTerminationPolicy "NoTermination"
```

------

# Excluir uma solicitação de frota do EC2 e as instâncias da frota
<a name="delete-fleet"></a>

Se você não precisar mais de uma frota do EC2, poderá excluí-la. Depois que você exclui uma frota, todas as solicitações spot associadas à frota são canceladas para que nenhuma nova instância spot seja iniciada.

Ao excluir uma frota do EC2, você deve também especificar se deseja encerrar todas as instâncias. Isso inclui tanto instâncias sob demanda quanto instâncias spot. Para frotas `instant`, a frota do EC2 deve encerrar as instâncias quando a frota for excluída. Não há suporte a uma frota `instant` excluída com instâncias em execução.

**Atenção**  
**O encerramento de uma instância é permanente e irreversível.**  
Depois de encerrar uma instância, não será mais possível se conectar a ela e ela não poderá ser recuperada. Todos os volumes anexados do Amazon EBS configurados para serem excluídos no encerramento também serão excluídos permanentemente e não poderão ser recuperados. Todos os dados armazenados em volumes de armazenamento de instância serão perdidos permanentemente. Para obter mais informações, consulte [Como funciona o encerramento de uma instância](how-ec2-instance-termination-works.md).  
Antes de encerrar uma instância, certifique-se de ter feito backup de todos os dados que você precise reter após o encerramento no armazenamento persistente.

Se você especificar que as instâncias deverão ser encerradas quando a solicitação de frota for excluída, a solicitação da frota entrará no estado `deleted_terminating`. Caso contrário, ela entrará no estado `deleted_running` e as instâncias continuarão em execução até que sejam interrompidas ou encerradas manualmente.

**Restrições**
+ É possível excluir até 25 frotas do tipo `instant` em uma única operação.
+ É possível excluir até 100 frotas do tipo `maintain` ou `request` em uma única operação.
+ É possível excluir até 125 frotas em uma única operação, desde que não exceda a cota para cada tipo de frota, conforme especificado acima.
+ Nenhuma frota será excluída se você exceder o número especificado de frotas a serem excluídas.
+ Não há suporte a uma frota `instant` excluída com instâncias em execução. Ao excluir uma frota `instant`, o Amazon EC2 encerra automaticamente todas as suas instâncias. Para frotas `instant` com mais de mil instâncias, a solicitação de exclusão pode não ser bem-sucedida. Caso sua frota contenha mais de mil instâncias, encerre manualmente a maioria delas, deixando mil ou menos. Em seguida, exclua a frota, e as instâncias restantes serão encerradas automaticamente.

------
#### [ AWS CLI ]

**Para excluir uma solicitação de frota do EC2 e encerrar as instâncias**  
Use o comando [delete-fleets](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-fleets.html) com a opção `--terminate-instances`.

```
aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --terminate-instances
```

O seguinte é um exemplo de saída.

```
{
    "UnsuccessfulFleetDeletions": [], 
    "SuccessfulFleetDeletions": [
        {
            "CurrentFleetState": "deleted_terminating", 
            "PreviousFleetState": "active", 
            "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
        }
    ]
}
```

**Para excluir uma solicitação de frota do EC2 sem encerrar as instâncias**  
Modifique o exemplo anterior usando a opção `--no-terminate-instances`. Observe que não há suporte a `--no-terminate-instances` para frotas `instant`.

```
aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --no-terminate-instances
```

O seguinte é um exemplo de saída.

```
{
    "UnsuccessfulFleetDeletions": [], 
    "SuccessfulFleetDeletions": [
        {
            "CurrentFleetState": "deleted_running", 
            "PreviousFleetState": "active", 
            "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE"
        }
    ]
}
```

------
#### [ PowerShell ]

**Para excluir uma solicitação de frota do EC2 e encerrar as instâncias**  
Use o cmdlet [Remove-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Fleet.html) com o parâmetro `-TerminateInstance`.

```
Remove-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $true
```

**Para excluir uma solicitação de frota do EC2 sem encerrar as instâncias**  
Modifique o exemplo anterior alterando o valor do parâmetro `-TerminateInstance`.

```
Remove-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $false
```

------

## Solucionar problemas quando houver falha na exclusão da frota
<a name="troubleshoot-delete-fleet"></a>

Se a exclusão de uma solicitação de frota do EC2 falhar, `UnsuccessfulFleetDeletions` na saída mostrará o ID da solicitação de frota do EC2, um código de erro e uma mensagem de erro.

Os códigos de erro são:
+ `ExceededInstantFleetNumForDeletion`
+ `fleetIdDoesNotExist`
+ `fleetIdMalformed`
+ `fleetNotInDeletableState`
+ `NoTerminateInstancesNotSupported`
+ `UnauthorizedOperation`
+ `unexpectedError`

**Solução de problemas do `ExceededInstantFleetNumForDeletion`**  
Se você tentar excluir mais de 25 frotas `instant` em uma única solicitação, o erro `ExceededInstantFleetNumForDeletion` será retornado. Veja a seguir um exemplo de saída deste erro.

```
{
    "UnsuccessfulFleetDeletions": [
     {
          "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
          "Error": {
                  "Message": "Can’t delete more than 25 instant fleets in a single request.",
                  "Code": "ExceededInstantFleetNumForDeletion"
           }
     },
     {
           "FleetId": "fleet-9a941b23-0286-5bf4-2430-03a029a07e31",
           "Error": {
                  "Message": "Can’t delete more than 25 instant fleets in a single request.",
                  "Code": "ExceededInstantFleetNumForDeletion"
            }
     }
     .
     .
     .
     ],
     "SuccessfulFleetDeletions": []
}
```

**Solução de problemas do `NoTerminateInstancesNotSupported`**  
Se você especificar que as instâncias em uma frota `instant` não devem ser encerradas quando você excluir a frota, o erro `NoTerminateInstancesNotSupported` será retornado. Não há suporte a `--no-terminate-instances` para frotas `instant`. Veja a seguir um exemplo de saída deste erro.

```
{
      "UnsuccessfulFleetDeletions": [
            {
                  "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
                  "Error": {
                          "Message": "NoTerminateInstances option is not supported for instant fleet",
                          "Code": "NoTerminateInstancesNotSupported"
                   }
            }
       ],
       "SuccessfulFleetDeletions": []
}
```

**Solução de problemas do `UnauthorizedOperation`**  
Se você não tiver permissão para encerrar instâncias, você obterá o erro `UnauthorizedOperation` ao excluir uma frota que deve encerrar suas instâncias. A seguir está a resposta de erro.

```
<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this 
operation. Encoded authorization failure message: VvuncIxj7Z_CPGNYXWqnuFV-YjByeAU66Q9752NtQ-I3-qnDLWs6JLFd
KnSMMiq5s6cGqjjPtEDpsnGHzzyHasFHOaRYJpaDVravoW25azn6KNkUQQlFwhJyujt2dtNCdduJfrqcFYAjlEiRMkfDHt7N63SKlweKUl
BHturzDK6A560Y2nDSUiMmAB1y9UNtqaZJ9SNe5sNxKMqZaqKtjRbk02RZu5V2vn9VMk6fm2aMVHbY9JhLvGypLcMUjtJ76H9ytg2zRlje
VPiU5v2s-UgZ7h0p2yth6ysUdhlONg6dBYu8_y_HtEI54invCj4CoK0qawqzMNe6rcmCQHvtCxtXsbkgyaEbcwmrm2m01-EMhekLFZeJLr
DtYOpYcEl4_nWFX1wtQDCnNNCmxnJZAoJvb3VMDYpDTsxjQv1PxODZuqWHs23YXWVywzgnLtHeRf2o4lUhGBw17mXsS07k7XAfdPMP_brO
PT9vrHtQiILor5VVTsjSPWg7edj__1rsnXhwPSu8gI48ZLRGrPQqFq0RmKO_QIE8N8s6NWzCK4yoX-9gDcheurOGpkprPIC9YPGMLK9tug
</Message></Error></Errors><RequestID>89b1215c-7814-40ae-a8db-41761f43f2b0</RequestID></Response>
```

Para resolver o erro, você deve adicionar a ação `ec2:TerminateInstances` à política do IAM, conforme mostrado no exemplo a seguir.

# Trabalhar com frotas spot
<a name="work-with-spot-fleets"></a>

Para começar a usar uma frota spot, crie uma solicitação que inclua a capacidade total de destino para instâncias spot, uma parte opcional sob demanda, e especifique manualmente uma AMI e um par de chaves ou especifique um modelo de execução que inclua a configuração para as instâncias na frota. Como alternativa, você pode especificar parâmetros adicionais ou permitir que a frota use valores padrão. Você também pode marcar a solicitação da frota e suas instâncias e seus volumes quando criar a frota.

A frota executa instâncias sob demanda quando há capacidade disponível, e executa Instâncias spot quando o preço máximo excede o preço spot e há capacidade disponível.

Depois que a frota for inicializada, será possível descrever a solicitação, as instâncias e os eventos da frota. Você também poderá atribuir tags adicionais conforme necessário.

Caso precise alterar algum parâmetro da frota, como a capacidade total de destino, você pode modificar a frota, desde que ela tenha sido configurada para manter a capacidade. Você não pode modificar a capacidade de uma solicitação única depois que ela for enviada.

Uma solicitação de frota permanecerá ativa até que expire ou você a cancele (exclua). Ao cancelar a solicitação da frota, você pode encerrar as instâncias ou deixá-las em execução. Caso escolha deixá-las em execução, as instâncias sob demanda serão executadas até que você as encerre, e as Instâncias spot serão executadas até que sejam interrompidas ou você as encerre.

**Topics**
+ [Estados das solicitações de frota spot](spot-fleet-states.md)
+ [Permissões de frota spot](spot-fleet-prerequisites.md)
+ [Criar uma Frota spot](create-spot-fleet.md)
+ [Marcar uma solicitação nova ou existente da frota spot e as instâncias e os volumes que ela executa](tag-spot-fleet.md)
+ [Descrever uma solicitação de frota spot, suas instâncias e o histórico de eventos](manage-spot-fleet.md)
+ [Modificar uma solicitação de frota spot](modify-spot-fleet.md)
+ [Cancelar (excluir) uma solicitação de frota spot](cancel-spot-fleet.md)
+ [Saiba mais sobre escalabilidade automática para frota spot](spot-fleet-automatic-scaling.md)

# Estados das solicitações de frota spot
<a name="spot-fleet-states"></a>

Uma solicitação de frota spot pode ser uma de vários estados, cada estado indicando um estágio diferente do ciclo de vida da solicitação e do gerenciamento de instâncias.

Uma solicitação de frota spot pode estar em um dos seguintes estados:

`submitted`  
A solicitação de frota spot está sendo avaliada, e o Amazon EC2 está se preparando para executar o número de destino de instâncias. Se uma solicitação exceder as cotas da frota spot, ela será cancelada imediatamente.

`active`  
A frota spot foi validada e o Amazon EC2 está tentando manter o número de destino de instâncias spot em execução. A solicitação permanece nesse estado até que seja alterada ou cancelada.

`modifying`  
A solicitação de frota spot está sendo modificada. A solicitação permanece nesse estado até que a modificação seja totalmente processada ou até que seja cancelada. Apenas um tipo `maintain` de frota pode ser modificado. Esse estado não se aplica a um tipo de `request` única de frota.

`cancelled_running`  
A frota spot foi cancelada (excluída) e não executará instâncias spot adicionais. Suas instâncias existentes continuam sendo executadas até que sejam interrompidas ou encerradas manualmente. A solicitação permanece nesse estado até que todas as instâncias sejam interrompidas ou encerradas.

`cancelled_terminating`  
A frota spot foi cancelada (excluída) e suas instâncias estão sendo encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam encerradas.

`cancelled`  
A frota spot foi cancelada (excluída) e não há instâncias em execução. A solicitação foi excluída dois dias depois que as instâncias foram encerradas.

# Permissões de frota spot
<a name="spot-fleet-prerequisites"></a>

Se os usuários pretenderem criar ou gerenciar uma frota spot, será necessário conceder a eles as permissões necessárias.

Se você usar o console do Amazon EC2 para criar uma frota spot, ele criará duas funções vinculada ao serviço chamadas `AWSServiceRoleForEC2SpotFleet` e `AWSServiceRoleForEC2Spot`, além de uma função chamada `aws-ec2-spot-fleet-tagging-role` que concede à frota spot as permissões para solicitar, executar, encerrar e marcar recursos em seu nome. Se você usar a AWS CLI ou uma API, é necessário garantir que essas funções existam.

Use as instruções a seguir para conceder as permissões necessárias e criar as funções.

**Topics**
+ [Conceder aos usuários permissão para uma frota spot](#spot-fleet-iam-users)
+ [Função vinculada ao serviço para frota spot](#service-linked-roles-spot-fleet-requests)
+ [Função vinculada ao serviço para instâncias spot](#service-linked-roles-spot-instances)
+ [Função do IAM para marcar uma frota spot](#spot-fleet-service-linked-role)

## Conceder aos usuários permissão para uma frota spot
<a name="spot-fleet-iam-users"></a>

Se os usuários pretenderem criar ou gerenciar uma frota spot, certifique-se de conceder a eles as permissões necessárias.

**Para criar uma frota spot**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Policies**, **Create policy**.

1. Na página **Criar política**, selecione **JSON**, e substitua o texto pelo indicado a seguir.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:RunInstances",
                   "ec2:CreateTags",
                   "ec2:RequestSpotFleet",
                   "ec2:ModifySpotFleetRequest",
                   "ec2:CancelSpotFleetRequests",
                   "ec2:DescribeSpotFleetRequests",
                   "ec2:DescribeSpotFleetInstances",
                   "ec2:DescribeSpotFleetRequestHistory"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:CreateServiceLinkedRole",
                   "iam:ListRoles",
                   "iam:ListInstanceProfiles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   A política de exemplo anterior concede a um usuário as permissões necessárias para a maioria dos casos de uso de frota spot. Para limitar o usuário a ações de API específicas, especifique somente essas ações de API.

   **APIs do EC2 e do IAM necessárias**

   As seguintes APIs devem ser incluídas na política:
   + `ec2:RunInstances` – Necessária para executar instâncias em uma frota spot
   + `ec2:CreateTags` – Necessária para marcar as solicitações, instâncias ou volumes da frota spot
   + `iam:PassRole` – Necessária para especificar a função da frota spot
   + `iam:CreateServiceLinkedRole` – Necessária para criar a função vinculada ao serviço
   + `iam:ListRoles` – Necessária para enumerar funções do IAM existentes
   + `iam:ListInstanceProfiles` – Necessária para enumerar perfis da instância existente
**Importante**  
Se você especificar um perfil para o perfil de instância do IAM na especificação ou no modelo de inicialização, deverá conceder ao usuário a permissão de passar o perfil para o serviço. Para fazer isso, na política do IAM inclua `"arn:aws:iam::*:role/IamInstanceProfile-role"` como um recurso para a ação `iam:PassRole`. Para obter mais informações, consulte [Conceder permissões ao usuário para passar uma função a um produto da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) no *Guia do usuário do IAM*.

   **APIs de frota spot**

   Adicione as seguintes ações da API de frota spot à política, conforme necessário:
   + `ec2:RequestSpotFleet`
   + `ec2:ModifySpotFleetRequest`
   + `ec2:CancelSpotFleetRequests`
   + `ec2:DescribeSpotFleetRequests`
   + `ec2:DescribeSpotFleetInstances`
   + `ec2:DescribeSpotFleetRequestHistory`

   **APIs opcionais do IAM**

   (Opcional) Para permitir que um usuário crie perfis ou perfis de instância usando o console do IAM, é necessário adicionar as seguintes ações à política:
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. Escolha **Revisar política**.

1. Na página **Review policy (Revisar política)**, digite um nome e uma descrição para a política e escolha **Create policy (Criar política)**.

1. Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
   + Usuários e grupos no Centro de Identidade do AWS IAM:

     Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
   + Usuários gerenciados no IAM com provedor de identidades:

     Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
   + Usuários do IAM:
     + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
     + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

## Função vinculada ao serviço para frota spot
<a name="service-linked-roles-spot-fleet-requests"></a>

O Amazon EC2 usa funções vinculadas ao serviço para as permissões de que ela precisa 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, consulte [Perfis vinculados ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) no *Guia do usuário do IAM*.

O Amazon EC2 usa a função vinculada ao serviço chamada **AWSServiceRoleForEC2SpotFleet** para executar e gerenciar instâncias em seu nome.

**Importante**  
Se você especificar uma [AMI criptografada](AMIEncryption.md) ou um snapshot do Amazon EBS criptografado na frota spot, será necessário conceder ao perfil **AWSServiceRoleForEC2SpotFleet** permissão para usar a CMK para que o Amazon EC2 possa executar instâncias em seu nome. Para obter mais informações, consulte [Conceder acesso às CMKs para uso com AMIs criptografadas e snapshots do EBS](#spot-fleet-service-linked-roles-access-to-cmks).

### Permissões concedidas por AWSServiceRoleForEC2SpotFleet
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2SpotFleet"></a>

O perfil **AWSServiceRoleForEC2SpotFleet** concede à frota spot permissão para solicitar, executar, encerrar e marcar instâncias em seu nome. O Amazon EC2 usa essa função vinculada ao serviço para concluir as seguintes ações:
+ `ec2:RequestSpotInstances` - Solicitar Instâncias spot
+ `ec2:RunInstances` - executar instâncias
+ `ec2:TerminateInstances` - encerrar instâncias
+ `ec2:DescribeImages` - descrever imagens de máquina da Amazon (AMIs) para as instâncias
+ `ec2:DescribeInstanceStatus` - descrever o status das instâncias
+ `ec2:DescribeSubnets` – descrever as sub-redes das instâncias
+ `ec2:CreateTags` - adiciona etiquetas à solicitação, às instâncias e aos volumes da frota spot
+ `elasticloadbalancing:RegisterInstancesWithLoadBalancer` - adicionar as instâncias especificadas ao load balancer especificado.
+ `elasticloadbalancing:RegisterTargets` - registrar os destinos especificados no grupo de destino especificado.

### Criar a função vinculada ao serviço
<a name="service-linked-role-creating-for-spot-fleet"></a>

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 **AWSServiceRoleForEC2Spotleet** vinculada ao serviço na primeira vez que você criar uma frota spot usando o console. 

Se você tinha uma solicitação de frota 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 **AWSServiceRoleForEC2SpotFleet** em sua conta da AWS. Para obter mais informações, consulte [Uma nova função apareceu em minha conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) no *Guia do usuário do IAM*.

Se você usar a AWS CLI ou uma API para criar uma frota spot, verifique se essa função existe.

**Para criar o perfil AWSServiceRoleForEC2SpotFleet para a frota spot usando o console**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha **Criar Perfil**.

1. Na página **Selecionar entidade confiável**, faça o seguinte:

   1. Em **Tipo de entidade confiável**, escolha **Serviços da AWS**.

   1. Em **Caso de uso**, para **Serviço ou caso de uso**, escolha **EC2**.

   1. Em **Caso de uso**, Escolha **EC2 - Frota spot**.
**nota**  
O caso de uso **EC2: frota spot** criará automaticamente uma política com as permissões necessárias do IAM e vai sugerir **AWSEC2SpotFleetServiceRolePolicy** como nome do perfil.

   1. Escolha **Próximo**.

1. Na página **Adicionar permissões**, escolha **Próximo**.

1. Na página **Nomear, revisar e criar**, escolha **Criar função**.

**Para criar o perfil AWSServiceRoleForEC2SpotFleet para a frota spot usando a AWS CLI**  
Use o comando [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) da seguinte forma.

```
aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com
```

Se você não precisar mais usar a frota spot, é recomendável excluir a função **AWSServiceRoleForEC2SpotFleet**. Depois que a função for excluída da conta, o Amazon EC2 criará a função novamente se você solicitar uma frota spot usando o console. Para saber mais, consulte [Excluir um perfil vinculado ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr) no *Guia do usuário do IAM*.

### Conceder acesso às CMKs para uso com AMIs criptografadas e snapshots do EBS
<a name="spot-fleet-service-linked-roles-access-to-cmks"></a>

Se você especificar uma [AMI criptografada](AMIEncryption.md) ou um snapshot do Amazon EBS criptografado na solicitação de frota spot e usar uma chave gerenciada pelo cliente para criptografia, será necessário conceder ao perfil **AWSServiceRoleForEC2SpotFleet** permissão para usar a CMK para que o Amazon EC2 possa executar instâncias em seu nome. Para isso, adicione uma concessão à CMK, 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](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) e [Uso de políticas de chave no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), no *Guia do desenvolvedor do AWS Key Management Service*.

**Para conceder à função AWSServiceRoleForEC2SpotFleet permissões para usar a CMK**
+ Use o comando [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) para adicionar uma concessão à CMK e especificar a entidade principal (a função vinculada ao serviço **AWSServiceRoleForEC2SpotFleet**) que recebe permissão para executar as operações permitidas pela concessão. A CMK é especificada pelo parâmetro `key-id` e pelo ARN da CMK. A entidade principal é especificada pelo parâmetro `grantee-principal` e pelo ARN da função vinculada ao serviço **AWSServiceRoleForEC2SpotFleet**.

  ```
  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/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## Função vinculada ao serviço para instâncias spot
<a name="service-linked-roles-spot-instances"></a>

O Amazon EC2 usa a função vinculada ao serviço denominada **AWSServiceRoleForEC2Spot** para executar e gerenciar Instâncias spot em seu nome. Para obter mais informações, consulte [Função vinculada ao serviço para solicitações de instâncias spot](service-linked-roles-spot-instance-requests.md).

## Função do IAM para marcar uma frota spot
<a name="spot-fleet-service-linked-role"></a>

A função do IAM `aws-ec2-spot-fleet-tagging-role` concede à frota spot permissão para marcar a solicitação, as instâncias e os volumes de frota spot. Para obter mais informações, consulte [Marcar uma solicitação nova ou existente da frota spot e as instâncias e os volumes que ela executa](tag-spot-fleet.md).

**Importante**  
Se você optar por marcar as instâncias na frota e também por manter a capacidade visada (a solicitação de frota spot é do tipo `maintain`), as diferenças nas permissões definidas para o usuário e a `IamFleetRole` poderão levar a um comportamento inconsistente de marcação de instâncias na frota. Se o `IamFleetRole` não incluir a permissão `CreateTags`, algumas das instâncias executadas pela frota não serão marcadas. Embora estejamos trabalhando para corrigir essa inconsistência, para garantir que todas as instâncias executadas pela frota sejam marcadas, recomendamos que você use a função `aws-ec2-spot-fleet-tagging-role` para `IamFleetRole`. Outra opção é para usar uma função existente, anexe a `AmazonEC2SpotFleetTaggingRole`Política gerenciada da AWS à função existente. Caso contrário, você precisará adicionar manualmente a permissão `CreateTags` à política existente.

**Para criar uma função do IAM para marcar uma frota spot**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha **Criar Perfil**.

1. Na página **Select trusted entity** (Selecionar entidade confiável), em **Trusted entity type** (Tipo de entidade confiável), escolha **AWS service** (Serviço da ).

1. Em **Caso de uso**, em **Casos de uso para outros serviços da AWS**, escolha **EC2** e escolha **EC2 - marcação de frota Spot**.

1. Escolha **Próximo**.

1. Na página **Adicionar permissões**, escolha **Próximo**.

1. Na página **Name, review, and create** (Nomear, revisar e criar), para **Role name** (Nome da função), digite um nome para a função (por exemplo, **aws-ec2-spot-fleet-tagging-role**).

1. Revise as informações na página e escolha **Create role** (Criar função).

### Prevenção contra o ataque do “substituto confuso” em todos os serviços
<a name="cross-service-confused-deputy-prevention"></a>

O [problema “confused deputy”](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Recomendamos o uso das chaves de contexto de condição global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) na política de confiança `aws-ec2-spot-fleet-tagging-role` para limitar as permissões de acesso ao recurso que a frota spot concede a outro serviço.

**Para adicionar as chaves de condição AWS:SourceArn e AWS:SourceAccount à política de confiança `aws-ec2-spot-fleet-tagging-role`**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Encontre o `aws-ec2-spot-fleet-tagging-role` criado anteriormente e escolha o link (não a caixa de seleção).

1. Em **Summary** (Resumo), escolha a guia **Trust relationships** (Relacionamentos de confiança) e, em seguida, escolha **Edit trust policy** (Editar política de confiança).

1. Na instrução JSON, adicione um elemento `Condition` que contenha suas chaves de contexto de condição global `aws:SourceAccount` e `aws:SourceArn` para evitar o [problema confused deputy](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), como segue:

   ```
   "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "111122223333"
         }
   ```
**nota**  
Se você utilizar ambas as chaves de contexto de condição global, e o valor `aws:SourceArn` contiver o ID da conta, o valor `aws:SourceAccount` e a conta no valor `aws:SourceArn` deverão utilizar o mesmo ID de conta quando utilizados na mesma instrução de política.

   A política de confiança final será a seguinte:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Sid": "ConfusedDeputyPreventionExamplePolicy",
       "Effect": "Allow",
       "Principal": {
         "Service": "spotfleet.amazonaws.com"
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "111122223333"
         }
       }
     }
   }
   ```

------

1. Escolha **Atualizar política**.

A tabela a seguir fornece valores potenciais para `aws:SourceArn` para limitar o escopo do seu `aws-ec2-spot-fleet-tagging-role` em diferentes graus de especificidade.


****  

| Operação de API | Serviço chamado | Escopo | `aws:SourceArn` | 
| --- | --- | --- | --- | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita a capacidade de AssumeRole em aws-ec2-spot-fleet-tagging-role para solicitações de frota spot na conta especificada. | arn:aws:ec2:\$1:123456789012:spot-fleet-request/sfr-\$1 | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita a capacidade de AssumeRole em aws-ec2-spot-fleet-tagging-role para solicitações de frota spot na conta e na região especificada. Observe que essa função não será utilizável em outras regiões. | arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-\$1 | 
| RequestSpotFleet | AWS STS (AssumeRole) | Limita a capacidade de AssumeRole em aws-ec2-spot-fleet-tagging-role para apenas ações que afetam a frota sfr-11111111-1111-1111-1111-111111111111. Observe que essa função pode não ser utilizável para outras frotas spot. Além disso, essa função não pode ser usada para lançar novas frotas spot por meio de request-spot-fleet. | arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111 | 

# Criar uma Frota spot
<a name="create-spot-fleet"></a>

Usando o Console de gerenciamento da AWS, é possível criar rapidamente uma solicitação de frota spot escolhendo apenas uma AMI e a capacidade total de destino pretendida. O Amazon EC2 vai configurar uma frota que melhor atenda às suas necessidades e siga as práticas recomendadas para instâncias spot. Como alternativa, você pode modificar qualquer uma das configurações padrão.

Se quiser incluir instâncias sob demanda em sua frota, você precisa especificar um modelo de execução em sua solicitação e especificar a capacidade sob demanda pretendida.

A frota executa instâncias sob demanda quando há capacidade disponível e inicializa instâncias spot quando o preço máximo excede o preço spot e há capacidade disponível.

Se a frota incluir a instâncias spot e for do tipo `maintain`, o Amazon EC2 tentará manter a capacidade de destino da frota quando as instâncias spot forem interrompidas.

**Permissões obrigatórias**  
Para obter mais informações, consulte [Permissões de frota spot](spot-fleet-prerequisites.md).

**Topics**
+ [Criar rapidamente uma solicitação de frota spot](#create-spot-fleet-quick)
+ [Criar uma solicitação de frota spot usando parâmetros definidos](#create-spot-fleet-advanced)
+ [Criar uma frota spot que substitua instâncias spot não íntegras](#spot-fleet-health-checks)

## Criar rapidamente uma solicitação de frota spot
<a name="create-spot-fleet-quick"></a>

Siga estas etapas para criar rapidamente uma solicitação de frota spot usando o console do Amazon EC2.

**Para criar uma solicitação de frota spot usando as configurações recomendadas**

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

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

1. Se você estiver começando a usar spot, verá uma página de boas-vindas. Escolha **Comece a usar**. Caso contrário, escolha **Criar solicitação de frota spot**.

1. Em **Launch parameters** (Parâmetros de lançamento), escolha **Manually configure launch parameters** (Configurar parâmetros de lançamento manualmente).

1. Em **AMI**, escolha uma AMI.

1. Em **Target capacity** (Capacidade), especifique o número de unidades a serem solicitadas em **Total target capacity** (Capacidade-alvo total). Para o tipo de unidade, você pode escolher **Instâncias**, **vCPUs** ou **Memória (GiB)**.

1. Em **Visão rápida de sua solicitação de frota**, analise a configuração da sua frota e selecione **Iniciar**.

## Criar uma solicitação de frota spot usando parâmetros definidos
<a name="create-spot-fleet-advanced"></a>

É possível criar uma frota spot usando parâmetros definidos por você.

------
#### [ Console ]

**Para criar uma solicitação de frota spot usando parâmetros definidos**

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

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

1. Se você estiver começando a usar spot, verá uma página de boas-vindas. Escolha **Comece a usar**. Caso contrário, escolha **Criar solicitação de frota spot**.

1. Em **Parâmetros de inicialização**, você pode configurar manualmente os parâmetros de inicialização ou usar um modelo de inicialização, da seguinte forma:

   1. [Configurar manualmente] Para definir os parâmetros de inicialização no console do Amazon EC2, escolha **Configurar parâmetros de inicialização manualmente** e, então, faça o seguinte:

      1. Em **AMI**, escolha uma das AMIs básicas fornecidas pela AWS ou escolha **Search for AMI** (Pesquisar AMI) para usar uma AMI de nossa comunidade de usuários, do AWS Marketplace ou uma própria.
**nota**  
Se uma AMI especificada nos parâmetros de execução estiver descadastrada ou desabilitada, não será possível executar nenhuma instância nova com base na AMI. Para frotas configuradas para manter a capacidade de destino, a capacidade de destino não será mantida.

      1. (Opcional) Em **Key pair name (Nome do par de chaves)**, escolha um par de chaves existente ou crie uma novo.

         [Par de chaves existente] Escolha o par de chaves.

         [Novo par de chaves] Escolha **Criar novo par de chaves** para ir para a página **Pares de chaves**. Ao concluir, volte para a página **Spot Requests** (Solicitações de spot) e atualize a lista.

      1. (Opcional) Expanda **Additional launch parameters** (Parâmetros de lançamento adicionais) e faça o seguinte:

         1. (Opcional) Para habilitar a otimização para o Amazon EBS, para **EBS-optimized** (Otimizada para EBS), escolha **Launch EBS-optimized instances** (Iniciar instâncias otimizadas para EBS).

         1. (Opcional) Para adicionar armazenamento temporário em nível de blocos para suas instâncias, em **Instance store (Armazenamento de instâncias)**, escolha **Attach at launch (Anexar na execução)**.

         1. (Opcional) Para adicionar armazenamento, escolha **Add new volume** (Adicionar novo volume) e especifique volumes adicionais do armazenamento de instâncias ou do Amazon EBS, dependendo do tipo de instância.

         1. (Opcional) Por padrão, o monitoramento básico está habilitado para suas instâncias. Para habilitar monitoramento detalhado, para **Monitoring** (Monitoramento), escolha **Enable CloudWatch detailed monitoring** (Habilitar monitoramento detalhado do CloudWatch).

         1. (Opcional) Para executar uma instância spot dedicada, em **Tenancy** (Locação), selecione em **Dedicated - run a dedicated instance** (Dedicada: executar uma instância dedicada).

         1. (Opcional) Em **Security groups (Grupos de segurança)**, escolha um ou mais grupos de segurança ou crie um novo.

            [Grupo de segurança existente] Escolha um ou mais grupos de segurança.

            [Novo grupo de segurança] Escolha **Create a new security group** (Criar um novo grupo de segurança) para ir para a página **Security Groups** (Grupos de segurança). Ao concluir, volte para **Spot Requests** (Solicitações de spot) e atualize a lista.

         1. (Opcional) Para tornar as instâncias acessíveis na Internet, em **Auto-assign IPv4 Public IP (Atribuir automaticamente IP público IPv4)**, escolha **Enable (Habilitar)**.

         1. (Opcional) Para executar as Instâncias spot com uma função do IAM, em **IAM instance profile (Perfil de instância do IAM)**, escolha a função.

         1. (Opcional) Para executar um script de startup, copie-o para **User data**.

         1. (Opcional) Para adicionar uma tag, escolha **Create tag** (Criar tag), insira uma chave e valor da tag, e escolha **Create** (Criar). Repita esse procedimento para cada tag.

            Para cada tag, para marcar as instâncias e a solicitação de frota spot com a mesma tag, verifique se as opções **Instances** (Instâncias) e **Fleet** (Frota) estão selecionadas. Para marcar apenas as instâncias iniciadas pela frota, desmarque **Frota**. Para aplicar tag apenas na solicitação de frota spot, desmarque **Instances** (Instâncias).

   1. [Modelo de inicialização] Para usar uma configuração que você criou em um modelo de inicialização, escolha **Usar um modelo de inicialização** e, em **Modelo de inicialização**, escolha um modelo de inicialização.
**nota**  
Caso deseje capacidade sob demanda na frota spot, você deve especificar um modelo de execução.

1. Em **Additional request details (Detalhes de configuração adicionais)**, faça o seguinte:

   1. Revise os detalhes de solicitação adicional. Para fazer alterações, desmarque **Apply defaults (Aplicar padrões)**.

   1. (Opcional) Em **IAM fleet role (Função de frota do IAM)**, você pode usar a função padrão ou especificar uma função diferente. Para usar a função padrão depois de ter alterado a função, escolha **Use default role (Usar função padrão)**.

   1. (Opcional) Para criar uma solicitação que seja válida somente em um período específico, edite **Request valid from** e **Request valid until**.

   1. (Opcional) Por padrão, o Amazon EC2 encerra as instâncias spot quando a solicitação de frota spot expira. Para mantê-las em execução depois que sua solicitação expirar, desmarque **Terminate the instances when the request expires (Encerrar as instâncias na expiração da solicitação)**.

   1. (Opcional) Para registrar as Instâncias spot em um load balancer, escolha **Receive traffic from one or more load balancers (Receber tráfego de um ou mais load balancers)** e escolha um ou mais Classic Load Balancers ou grupos de destino.

1. Em **Modify target capacity** (Modificar capacidade-alvo), faça o seguinte:

   1. Em **Total target capacity** (Capacidade-alvo total), especifique o número de unidades a serem solicitadas. Para o tipo de unidade, você pode escolher **Instances** (Instâncias), **vCPUs** ou **Memory (MiB)** [Memória (MiB)]. Para especificar uma capacidade de destino igual a 0 para que seja possível adicionar capacidade posteriormente, primeiro escolha **Manter capacidade de destino**.

   1. (Opcional) Em **Include On-Demand base capacity** (Incluir capacidade sob demanda de base), especifique o número de unidades sob demanda a serem solicitadas. O número deve ser menor que a **Capacidade total pretendida**. O Amazon EC2 calcula e aloca a diferença às unidades spot a serem solicitadas.
**Importante**  
 Para especificar a capacidade sob demanda opcional, primeiro, escolha um modelo de lançamento.

   1. (Opcional) Por padrão, o Amazon EC2 encerra instâncias spot quando elas são interrompidas. Para manter a capacidade do destino, selecione **Maintain target capacity (Manter a capacidade de destino)**. Em seguida, será possível especificar se o Amazon EC2 vai encerrar, interromper ou hibernar as instâncias spot que forem interrompidas. Para fazer isso, escolha a opção correspondente em **Interruption behavior**.
**nota**  
Se uma AMI especificada nos parâmetros de execução estiver descadastrada ou desabilitada, não será possível executar nenhuma instância nova com base na AMI. Nesse caso, para frotas configuradas para manter a capacidade de destino, a capacidade de destino não será mantida.

   1. (Opcional) Para permitir que a frota spot inicie uma instância spot substituta quando uma notificação de rebalanceamento de instância for emitida para uma instância spot existente na frota, selecione **Capacity rebalance** (Rebalanceamento de capacidade) e escolha uma estratégia de substituição de instância. Se você escolher **Inicializar antes de encerrar**, especifique o atraso (em segundos) antes que o Amazon EC2 encerre as instâncias antigas. Para obter mais informações, consulte [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md).

   1. (Opcional) Para controlar o valor pago por hora por todas as instâncias spot da sua frota, selecione **Manter custo pretendido para instâncias spot** e insira o valor total máximo que você está disposto a pagar por hora. Quando o valor total máximo for alcançado, a frota spot interromperá a execução de instâncias spot mesmo que a capacidade do destino ainda não tenha sido atingida. Para obter mais informações, consulte [Definir um limite de gastos para a frota do EC2 ou a frota spot](ec2-fleet-control-spending.md).

1. Em **Network** (Rede), faça o seguinte:

   1. Em **Rede**, escolha uma VPC existente ou crie uma nova.

      [VPC existente] escolha a VPC.

      [VPC nova] Escolha **Create new VPC (Criar nova VPC)** para acessar o console da Amazon VPC. Quando concluir, volte para esta tela e atualize a lista.

   1. (Opcional) Em **Zonas de disponibilidade**, deixe que o Amazon EC2 escolha as zonas de disponibilidade para as instâncias spot ou especifique uma ou mais zonas de disponibilidade.

      Se houver mais de uma sub-rede em uma zona de disponibilidade, escolha a sub-rede apropriada em **Subnet (Sub-rede)**. Para adicionar sub-redes, escolha **Create new subnet (Criar nova sub-rede)** para acessar o console da Amazon VPC. Quando concluir, volte para esta tela e atualize a lista.

1. Em **Instance type requirements** (Requisitos de tipo de instância), você pode especificar atributos de instância e deixar o Amazon EC2 identificar os tipos de instância com esses atributos ou pode especificar uma lista de instâncias. Para obter mais informações, consulte [Especificar atributos para seleção de tipo de instância para frota do EC2 ou frota spot](ec2-fleet-attribute-based-instance-type-selection.md).

   1. Se escolher **Specify instance attributes that match your compute requirements** (Especificar atributos de instância que correspondam aos requisitos de computação), especifique os atributos da instância da seguinte forma:

      1. Em **vCPUs**, insira o número mínimo e máximo desejado de vCPUs. Para não especificar um limite, selecione **Sem mínimo**, **Sem máximo** ou ambos.

      1. Em **Memory (GiB)** (Memória), insira a quantidade mínima e máxima de memória desejada. Para não especificar um limite, selecione **Sem mínimo**, **Sem máximo** ou ambos.

      1. (Opcional) Em **Atributos de instância adicionais**, você pode, opcionalmente, especificar um ou mais atributos para expressar seus requisitos de computação com mais detalhes. Cada atributo adicional inclui mais uma restrição à solicitação. É possível omitir os atributos adicionais; quando omitidos, os valores padrão são usados. Para obter uma descrição de cada atributo e seus valores padrão, consulte [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html).

      1. (Opcional) Para visualizar os tipos de instância com os atributos especificados, expanda **Preview matching instance types** (Previsualizar os tipos de instância correspondentes). Para excluir tipos de instância dos tipos a serem usados na solicitação selecione as instâncias e escolha **Exclude selected instance types** (Excluir tipos de instância selecionados).

   1. Se escolher **Manually select instance types** (Selecionar manualmente os tipos de instância), a frota spot fornecerá uma lista padrão de tipos de instância. Para selecionar mais tipos de instância, escolha **Add instance types** (Adicionar tipos de instância), selecione os tipos de instância a serem usados em sua solicitação e escolha **Select** (Selecionar). Para excluir tipos de instância, selecione os tipos de instância e escolha **Delete** (Excluir).

1. Em **Estratégia de alocação**, escolha uma estratégia de alocação spot e uma estratégia de alocação sob demanda que atenda às suas necessidades. Para obter mais informações, consulte [Usar estratégias de alocação para determinar como a frota do EC2 ou a frota spot atende à capacidade spot e sob demanda](ec2-fleet-allocation-strategy.md).

1. Em **Your fleet request at a glance** (Visão rápida da sua solicitação de frota), revise a configuração de frota e faça os ajustes necessários.

1. (Opcional) Para fazer download de uma cópia da configuração de execução para uso com a AWS CLI, escolha **JSON config**.

1. Quando você estiver prestes a criar uma frota spot, escolha **Inicializar**.

   O tipo de solicitação de frota spot é `fleet`. Quando a solicitação for atendida, as solicitações do tipo `instance` serão adicionadas, onde o estado será `active` e o status será `fulfilled`.

------
#### [ AWS CLI ]

**Para criar uma solicitação de frota spot**  
Use o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html).

```
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
```

Para obter arquivos de configuração de exemplo, consulte [Exemplo de configurações da CLI para frotas spot](spot-fleet-examples.md).

------
#### [ PowerShell ]

**Para criar uma solicitação de frota spot**  
Use o cmdlet [Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html). O exemplo a seguir inicia instâncias spot em uma frota otimizada para capacidade.

```
Request-EC2SpotFleet `
    -SpotFleetRequestConfig_TargetCapacity 50 `
    -SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
    -SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012:role/my-spot-fleet-role" `
    -SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
```

Defina a configuração de execução conforme mostrado a seguir definindo o modelo de execução e substituindo as propriedades necessárias. Para obter configurações de exemplo, consulte [Exemplo de configurações da CLI para frotas spot](spot-fleet-examples.md).

```
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
```

------

## Criar uma frota spot que substitua instâncias spot não íntegras
<a name="spot-fleet-health-checks"></a>

A frota spot verifica o status de integridade das instâncias spot na frota a cada dois minutos. O status de integridade de uma instância é `healthy` ou `unhealthy`.

A frota spot determina o status de integridade de uma instância usando as verificações de status fornecidas pelo Amazon EC2. É determinado que uma instância está `unhealthy` quando o status da verificação de status da instância ou da verificação de status do sistema é `impaired` em três verificações de integridade consecutivas. Para obter mais informações, consulte [Verificações do status das instâncias do Amazon EC2](monitoring-system-instance-status-check.md).

É possível configurar a sua frota para substituir Instâncias spot não íntegras. Depois de habilitar a substituição da verificação de integridade, uma instância spot é substituída ao ser relatada como `unhealthy`. A frota pode ficar abaixo de sua capacidade de destino por até alguns minutos enquanto uma instância spot não íntegra está sendo substituída.

**Requisitos**
+ A substituição da verificação de integridade é compatível apenas para Frotas spot que mantenham uma capacidade de destino (frotas do tipo `maintain`) e não para Frotas spot únicas (frotas do tipo `request`).
+ A substituição da verificação de integridade é compatível apenas para Instâncias spot. Este recurso não é compatível para Instâncias on-demand.
+ É possível configurar a frota spot para substituir instâncias não íntegras somente durante sua criação.
+ Os usuários só poderão usar a substituição de verificação de integridade se tiverem permissão para chamar a ação `ec2:DescribeInstanceStatus`.

------
#### [ Console ]

**Para configurar uma frota spot para substituir instâncias spot não íntegras**

1. Siga as etapas para criar um frota spot em [Criar uma solicitação de frota spot usando parâmetros definidos](#create-spot-fleet-advanced).

1. Para configurar a frota para substituir instâncias spot não íntegras, expanda **Parâmetros adicionais de execução** e, em **Verificação de integridade**, selecione **Substituir instâncias não íntegras**. Para habilitar essa opção, primeiramente você deve selecionar **Maintain target capacity (Manter capacidade de destino)**.

------
#### [ AWS CLI ]

**Para configurar uma frota spot para substituir instâncias spot não íntegras**  
Use o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) com a propriedade `ReplaceUnhealthyInstances` de `SpotFleetRequestConfig`.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "lowestPrice",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "TargetCapacity": 10,
        "ReplaceUnhealthyInstances": true
    }
}
```

------
#### [ PowerShell ]

**Para configurar uma solicitação de frota spot para substituir instâncias spot não íntegras**  
Use o cmdlet [Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) com o parâmetro `-SpotFleetRequestConfig_ReplaceUnhealthyInstance`.

```
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true
```

------

# Marcar uma solicitação nova ou existente da frota spot e as instâncias e os volumes que ela executa
<a name="tag-spot-fleet"></a>

Para ajudar na categorização e no gerenciamento das solicitações de frota spot e das instâncias e dos volumes que ela executa, você pode marcá-las com metadados personalizados. É possível atribuir uma tag a uma solicitação de frota spot ao criá-la ou posteriormente. Da mesma forma, você pode atribuir uma tag às instâncias e aos volumes quando eles são inicializados pela frota, ou posteriormente.

Quando você marca uma solicitação de frota, as instâncias e os volumes que são executados pela frota não são marcados automaticamente. É necessário marcar explicitamente as instâncias e os volumes executados pela frota. É possível optar por atribuir tags somente à solicitação de frota, somente às instâncias inicializadas pela frota, somente aos volumes anexados às instâncias inicializadas pela frota ou a todos eles.

**nota**  
Você só pode marcar volumes que estão anexados a instâncias sob demanda. Não é possível marcar volumes que estão anexados a Instâncias spot.

É possível atribuir tags usando o console do Amazon EC2 ou uma ferramenta da linha de comando.

Para obter mais informações sobre como as tags funcionam, consulte [Marcar com tag os recursos do Amazon EC2](Using_Tags.md).

**Topics**
+ [Pré-requisito](#tag-spot-fleet-prereqs)
+ [Marcar uma nova frota spot e as instâncias e os volumes que ela executa](#tag-new-spot-fleet-and-resources)
+ [Marcar uma frota spot existente](#tag-existing-spot-fleet)
+ [Exibir tags de solicitações de frota spot](#view-spot-fleet-tags)

## Pré-requisito
<a name="tag-spot-fleet-prereqs"></a>

Conceda ao usuário permissão para marcar recursos. Para obter mais informações, consulte [Exemplo: marcar recursos](ExamplePolicies_EC2.md#iam-example-taggingresources).

**Para conceder a um usuário permissão para marcar recursos**  
Crie uma política do IAM que inclua o seguinte:
+ A ação `ec2:CreateTags`. Isso concede ao usuário permissão para criar tags.
+ A ação `ec2:RequestSpotFleet`. Concede ao usuário permissão para criar uma solicitação de frota spot.
+ Para `Resource`, você deve especificar `"*"`. Permite que os usuários marquem todos os tipos de recursos.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TagSpotFleetRequest",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags",
                "ec2:RequestSpotFleet"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Importante**  
No momento, não oferecemos suporte para permissões no nível do recurso para o recurso `spot-fleet-request`. Se especificar `spot-fleet-request` como um recurso, você receberá uma exceção não autorizada quando tentar marcar a frota. O exemplo a seguir ilustra como *não* definir a política.   

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateTags",
        "ec2:RequestSpotFleet"
    ],
    "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/*"
}
```

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos no Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

## Marcar uma nova frota spot e as instâncias e os volumes que ela executa
<a name="tag-new-spot-fleet-and-resources"></a>

**Para marcar uma nova solicitação de frota spot e as instâncias e os volumes que ela executa usando o console**

1. Siga o procedimento do [Criar uma solicitação de frota spot usando parâmetros definidos](create-spot-fleet.md#create-spot-fleet-advanced).

1. A forma como você adiciona uma tag depende se você configurou manualmente a frota ou se usou um modelo de execução.
   + Caso tenha configurado a frota manualmente, faça o seguinte:

     Para adicionar uma tag, expanda **Parâmetros adicionais de execução**, escolha **Criar tag** e insira a chave e o valor para a tag. Repita esse procedimento para cada tag.

     Para cada tag, você pode marcar a solicitação de frota spot e as instâncias com a mesma tag. Para marcar ambas, verifique se **Instâncias** e **Frota** estão selecionados. Para aplicar tag apenas na solicitação de frota spot, desmarque **Instances** (Instâncias). Para marcar apenas as instâncias iniciadas pela frota, desmarque **Frota**.
**nota**  
Quando você configura manualmente uma frota, não há opção para marcar volumes. As tags de volume são compatíveis apenas para volumes que estão anexados a Instâncias on-demand. Ao configurar manualmente uma frota, você não pode especificar instâncias sob demanda.
   + Caso tenha usado um modelo de execução, faça o seguinte:

     Para adicionar uma tag à solicitação de frota, em **Tags**, escolha **Criar tag** e insira a chave e o valor para a tag. Repita esse procedimento para cada tag.

     Para marcar os recursos em sua frota, você deve especificar as tags no [modelo de execução](create-launch-template.md).

**Para marcar uma nova solicitação de frota spot e as instâncias e os volumes que ela executa usando a AWS CLI**  
Para marcar uma solicitação de frota spot ao criá-la e marcar as instâncias e os volumes quando elas são executadas pela frota, defina a configuração da solicitação de frota spot da seguinte maneira:

**Tags de solicitações de frota spot:**
+ Especifique as etiquetas para a solicitação de frota spot em `SpotFleetRequestConfig`.
+ Para `ResourceType`, especifique `spot-fleet-request`. Se você especificar outro valor, ocorrerá falha na frota.
+ Em `Tags`, especifique o par de chave/valor. É possível especificar mais de um par de chave/valor.

**Tags de instância:**
+ Especifique as tags das instâncias em `LaunchSpecifications`.
+ Para `ResourceType`, especifique `instance`. Se você especificar outro valor, ocorrerá falha na frota.
+ Em `Tags`, especifique o par de chave/valor. É possível especificar mais de um par de chave/valor.

  Como alternativa, você pode especificar as tags da instância no [modelo de execução](create-launch-template.md) que é referenciado na solicitação de frota spot.

**Tags de volume:**
+ Especifique as tags para os volumes no [modelo de execução](create-launch-template.md) mencionado na solicitação de frota spot. A marcação de volume em `LaunchSpecifications` não é compatível.

No exemplo a seguir, a solicitação de frota spot é marcada com duas tags: Key=Environment e Value=Production, e Key=Cost-Center e Value=123. As instâncias executadas pela frota são marcadas com uma tag (que é a mesma que uma das tags da solicitação de frota spot): Keys=Cost-Center e Value=123.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "Cost-Center",
                                "Value": "123"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1,
        "TagSpecifications": [
            {
                "ResourceType": "spot-fleet-request",
                "Tags": [
                    {
                        "Key": "Environment",
                        "Value":"Production"
                    },
                    {
                        "Key": "Cost-Center",
                        "Value":"123"
                    }
                ]
            }
        ]
    }
}
```

**Para marcar instâncias executadas por uma frota spot usando a AWS CLI**  
Para marcar instâncias quando elas são executadas pela frota, você pode especificar as tags no [modelo de execução](create-launch-template.md) referenciado na solicitação de frota spot ou especificar as tags na configuração da solicitação de frota spot da seguinte maneira:
+ Especifique as tags das instâncias em `LaunchSpecifications`.
+ Para `ResourceType`, especifique `instance`. Se você especificar outro valor, ocorrerá falha na frota.
+ Em `Tags`, especifique o par de chave/valor. É possível especificar mais de um par de chave/valor.

No exemplo a seguir, as instâncias que são executadas pela frota são marcadas com uma tag: Key=Cost-Center e Value=123.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "Cost-Center",
                                "Value": "123"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1
    }
}
```

**Para marcar volumes anexados a instâncias sob demanda executadas por uma frota spot usando a AWS CLI**  
Para marcar volumes ao serem criados pela frota, é necessário especificar as tags no [modelo de execução](create-launch-template.md) mencionado na solicitação de frota spot.

**nota**  
As tags de volume são compatíveis apenas para volumes que estão anexados a Instâncias on-demand. Não é possível marcar volumes que estão anexados a Instâncias spot.  
A marcação de volume em `LaunchSpecifications` não é compatível.

## Marcar uma frota spot existente
<a name="tag-existing-spot-fleet"></a>

**Para marcar uma solicitação de frota spot existente usando o console**

Depois de criar uma solicitação de frota spot, você pode adicionar tags à solicitação de frota usando o console.

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

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

1. Selecione sua solicitação de frota spot.

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

**Para marcar uma solicitação de frota spot existente usando a AWS CLI**  
É possível usar o comando [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) para marcar os recursos existentes. No exemplo a seguir, a solicitação de frota spot existente é marcada com Key=purpose e Value=test.

```
aws ec2 create-tags \
    --resources sfr-11112222-3333-4444-5555-66666EXAMPLE \
    --tags Key=purpose,Value=test
```

## Exibir tags de solicitações de frota spot
<a name="view-spot-fleet-tags"></a>

**Para visualizar tags de solicitação de frota spot usando o console**

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

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

1. Selecione sua solicitação de frota spot e escolha a guia **Tags**.

**Para descrever as tags de solicitação de frota spot**  
Use o comando [describe-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html) para visualizar as tags para o recurso especificado. No exemplo a seguir, você descreve as tags da solicitação de frota spot especificada.

```
aws ec2 describe-tags \
    --filters "Name=resource-id,Values=sfr-11112222-3333-4444-5555-66666EXAMPLE"
```

```
{
    "Tags": [
        {
            "Key": "Environment",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Production"
        },
        {
            "Key": "Another key",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Another value"
        }
    ]
}
```

Você também pode visualizar as tags de uma solicitação de frota spot descrevendo a solicitação de frota spot.

Use o comando [describe-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html) para visualizar a configuração da solicitação de frota spot especificada, que inclui todas as tags especificadas para a solicitação de frota.

```
aws ec2 describe-spot-fleet-requests \
    --spot-fleet-request-ids sfr-11112222-3333-4444-5555-66666EXAMPLE
```

```
{
    "SpotFleetRequestConfigs": [
        {
            "ActivityStatus": "fulfilled",
            "CreateTime": "2020-02-13T02:49:19.709Z",
            "SpotFleetRequestConfig": {
                "AllocationStrategy": "capacityOptimized",
                "OnDemandAllocationStrategy": "lowestPrice",
                "ExcessCapacityTerminationPolicy": "Default",
                "FulfilledCapacity": 2.0,
                "OnDemandFulfilledCapacity": 0.0,
                "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
                "LaunchSpecifications": [
                    {
                        "ImageId": "ami-0123456789EXAMPLE",
                        "InstanceType": "c4.large"
                    }
                ],
                "TargetCapacity": 2,
                "OnDemandTargetCapacity": 0,
                "Type": "maintain",
                "ReplaceUnhealthyInstances": false,
                "InstanceInterruptionBehavior": "terminate"
            },
            "SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "SpotFleetRequestState": "active",
            "Tags": [
                {
                    "Key": "Environment",
                    "Value": "Production"
                },
                {
                    "Key": "Another key",
                    "Value": "Another value"
                }
            ]
        }
    ]
}
```

# Descrever uma solicitação de frota spot, suas instâncias e o histórico de eventos
<a name="manage-spot-fleet"></a>

É possível descrever a configuração, as instâncias e o histórico de eventos da frota spot.

------
#### [ Console ]

**Para descrever sua frota spot**

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

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

1. Selecione sua solicitação de frota spot. O ID começa com **sfr-**. Para ver os detalhes da configuração, escolha **Description (Descrição)**.

1. Para listar as instâncias spot para a frota spot, escolha **Instances** (Instâncias).

1. Para visualizar o histórico da frota spot, escolha a guia **History** (Histórico).

------
#### [ AWS CLI ]

**Para descrever sua solicitação de frota spot**  
Use o comando [describe-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html).

```
aws ec2 describe-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

**Para descrever as instâncias em execução da frota spot especificada**  
Use o comando [describe-spot-fleet-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-instances.html).

```
aws ec2 describe-spot-fleet-instances \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

**Para descrever o histórico de eventos da solicitação de frota spot especificada**  
Use o comando [describe-spot-fleet-request-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-request-history.html).

```
aws ec2 describe-spot-fleet-request-history \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --start-time 2024-05-18T00:00:00Z
```

------
#### [ PowerShell ]

**Para descrever sua solicitação de frota spot**  
Use o cmdlet [Get-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetRequest.html).

```
Get-EC2SpotFleetRequest
```

**Para descrever as instâncias em execução da frota spot especificada**  
Use o cmdlet [Get-EC2SpotFleetInstance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetInstance.html).

```
Get-EC2SpotFleetInstance `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
```

**Para descrever o histórico de eventos da solicitação de frota spot especificada**  
Use o cmdlet [Get-EC2SpotFleetRequestHistory](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetRequestHistory.html).

```
Get-EC2SpotFleetRequestHistory `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -UtcStartTime 2024-05-18T00:00:00Z
```

------

# Modificar uma solicitação de frota spot
<a name="modify-spot-fleet"></a>

É possível modificar uma solicitação de frota spot ativa para executar as seguintes tarefas:
+ Aumentar a capacidade total de destino e a parte sob demanda
+ Diminuir a capacidade total de destino e a parte sob demanda

Quando você aumenta a capacidade total de destino, a frota spot inicializa as instâncias spot adicionais de acordo com a [estratégia de alocação](ec2-fleet-allocation-strategy.md) da solicitação de frota spot. Quando você aumenta a parte sob demanda, a frota spot inicia Instâncias sob demanda adicionais.

Quando você diminui a capacidade total de destino, a frota spot cancela as solicitações abertas que excedem a nova capacidade de destino. É possível solicitar que a frota spot encerre instâncias spot até o tamanho da frota atingir a nova capacidade pretendida. Se a estratégia de alocação for `diversified`, a frota spot encerrará as instâncias nos grupos. Como alternativa, você pode solicitar que a frota spot mantenha seu tamanho atual, mas não substitua as instâncias spot interrompidas ou encerradas manualmente.

**Considerações**
+ Você não pode modificar uma solicitação única de frota spot. É possível modificar uma solicitação de frota spot ao selecionar a opção **Maintain target capacity** (Manter capacidade de destino) ao criar a solicitação de frota spot.
+ Quando uma frota spot encerra uma instância porque a capacidade pretendida foi diminuída, a instância recebe um aviso de interrupção de instância spot.

------
#### [ Console ]

**Para modificar uma solicitação de frota spot**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha **Actions (Ações)** e **Modify target capacity (Modificar capacidade de destino)**.

1. Em **Modify target capacity (Modificar capacidade de destino)**, faça o seguinte:

   1. Insira a nova capacidade de destino e a porção sob demanda

   1. (Opcional) Se você estiver reduzindo a capacidade de destino, mas deseja manter a frota no tamanho atual, desmarque **Terminate instances (Encerrar instâncias)**.

   1. Selecione **Enviar**.

------
#### [ AWS CLI ]

**Para modificar uma solicitação de frota spot**  
Use o comando [modify-spot-fleet- request](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-spot-fleet-request.html) para atualizar a capacidade pretendida da solicitação de frota spot especificada.

```
aws ec2 modify-spot-fleet-request \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity 20
```

É possível modificar o comando anterior da seguinte forma para diminuir a capacidade de destino da frota spot especificada sem encerrar instâncias spot como resultado.

```
aws ec2 modify-spot-fleet-request \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity 10 \
    --excess-capacity-termination-policy NoTermination
```

------
#### [ PowerShell ]

**Para modificar uma solicitação de frota spot**  
Use o cmdlet [Edit-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SpotFleetRequest.html) para atualizar a capacidade de destino da solicitação de frota spot especificada.

```
Edit-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacity 20
```

É possível modificar o comando anterior da seguinte forma para diminuir a capacidade de destino da frota spot especificada sem encerrar instâncias spot como resultado.

```
Edit-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacity 20 `
    -ExcessCapacityTerminationPolicy "NoTermination"
```

------

# Cancelar (excluir) uma solicitação de frota spot
<a name="cancel-spot-fleet"></a>

Caso não precise mais de uma frota spot, você cancelar a solicitação da frota spot, o que exclui a solicitação. Depois que você cancela uma solicitação de frota spot todas as solicitações spot associadas à frota são canceladas, para que nenhuma nova instância spot seja iniciada.

Ao canelar uma frota spot, você deve especificar se deseja encerrar todas as suas instâncias. Isso inclui tanto instâncias sob demanda quanto instâncias spot.

**Atenção**  
**O encerramento de uma instância é permanente e irreversível.**  
Depois de encerrar uma instância, não será mais possível se conectar a ela e ela não poderá ser recuperada. Todos os volumes anexados do Amazon EBS configurados para serem excluídos no encerramento também serão excluídos permanentemente e não poderão ser recuperados. Todos os dados armazenados em volumes de armazenamento de instância serão perdidos permanentemente. Para obter mais informações, consulte [Como funciona o encerramento de uma instância](how-ec2-instance-termination-works.md).  
Antes de encerrar uma instância, certifique-se de ter feito backup de todos os dados que você precise reter após o encerramento no armazenamento persistente.

Se você especificar que as instâncias deverão ser encerradas quando a frota for cancelada, a frota entrará no estado `cancelled_terminating`. Caso contrário, ela entrará no estado `cancelled_running` e as instâncias continuarão em execução até que sejam interrompidas ou encerradas manualmente.

**Restrições**
+ É possível cancelar até cem frotas com uma única solicitação. Se você exceder o número especificado, nenhuma frota será cancelada.

------
#### [ Console ]

**Para cancelar (excluir) uma solicitação de frota spot**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha **Ações**, **Cancelar solicitação**.

1. Na caixa de diálogo **Adicionar regiões para replicação**, faça o seguinte:

   1. Para encerrar as instâncias associadas ao mesmo tempo que cancela a solicitação de frota spot, deixe a caixa de seleção **Encerrar instâncias** marcada. Para cancelar a solicitação de frota spot sem encerar as instâncias associadas, desmarque a caixa de seleção **Encerrar instâncias**.

   1. Escolha **Confirmar**.

------
#### [ AWS CLI ]

**Para cancelar (excluir) uma solicitação de frota spot e encerrar suas instâncias**  
Use o comando [cancel-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-fleet-requests.html) com a opção `--terminate-instances`.

```
aws ec2 cancel-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --terminate-instances
```

O seguinte é um exemplo de saída.

```
{
    "SuccessfulFleetRequests": [
        {
            "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
            "CurrentSpotFleetRequestState": "cancelled_terminating",
            "PreviousSpotFleetRequestState": "active"
        }
    ],
    "UnsuccessfulFleetRequests": []
}
```

**Para cancelar (excluir) uma solicitação de frota spot sem encerrar suas instâncias**  
Modifique o exemplo anterior usando a opção `--no-terminate-instances`.

```
aws ec2 cancel-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --no-terminate-instances
```

O seguinte é um exemplo de saída.

```
{
    "SuccessfulFleetRequests": [
        {
            "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
            "CurrentSpotFleetRequestState": "cancelled_running",
            "PreviousSpotFleetRequestState": "active"
        }
    ],
    "UnsuccessfulFleetRequests": []
}
```

------
#### [ PowerShell ]

**Para cancelar (excluir) uma solicitação de frota spot e encerrar suas instâncias**  
Use o cmdlet [Stop-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2SpotFleetRequest.html) com o parâmetro `-TerminateInstance`.

```
Stop-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $true
```

**Para cancelar (excluir) uma solicitação de frota spot sem encerrar suas instâncias**  
Modifique o exemplo anterior alterando o valor do parâmetro `-TerminateInstance`.

```
Stop-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $false
```

------

# Saiba mais sobre escalabilidade automática para frota spot
<a name="spot-fleet-automatic-scaling"></a>

A *escalabilidade automática* permite que a frota spot aumente ou diminua sua capacidade com base na demanda. Com escalabilidade automática, uma frota spot pode executar instâncias (aumentar a escala horizontalmente) ou encerrar instâncias (reduzir a escala horizontalmente) no intervalo especificado, em resposta a uma ou mais políticas de escalabilidade.

A escalabilidade automática para frota spot é possível por uma combinação das APIs do Amazon EC2, do Amazon CloudWatch e do Application Auto Scaling. As solicitações de frota spot são criadas com o Amazon EC2, os alarmes são criados com o CloudWatch e as políticas de escalabilidade são criadas com o Application Auto Scaling.

**Tipos de escalabilidade automática**

A frota spot oferece suporte aos seguintes tipos de escalabilidade automática:
+ [Escalabilidade de rastreamento de destino](spot-fleet-target-tracking.md): aumenta ou reduz a capacidade atual da frota com base em um valor pretendido para uma métrica específica. Isso é semelhante à forma como o termostato mantém a temperatura da sua casa, ou seja, você seleciona a temperatura desejada e o termostato faz o resto.
+ [Escalabilidade em etapas](spot-fleet-step-scaling.md): aumenta ou diminui a capacidade atual da frota com base em um conjunto de ajustes de escalabilidade, conhecidos como ajustes em etapas, que variam com base no tamanho da ruptura do alarme.
+ [Escalabilidade programado](spot-fleet-scheduled-scaling.md): aumenta ou diminui a capacidade atual da frota com base em data e hora.

## Considerações
<a name="considerations-for-spot-fleet-automatic-scaling"></a>

Ao usar a escalabilidade automática para sua frota spot, considere o seguinte:
+ **Ponderação de instância**: se estiver usando [ponderação de instância](ec2-fleet-instance-weighting.md), lembre-se de que a frota spot pode exceder a capacidade de destino, conforme necessário. A capacidade atendida pode ser um número de ponto flutuante, mas a capacidade de destino deve ser um inteiro, portanto, a frota spot é arredondada para o próximo inteiro. Você deve levar em conta esses comportamentos ao ver o resultado de uma política de escalabilidade quando um alarme é acionado. Por exemplo, suponha que a capacidade de destino seja 30, a capacidade atendida seja 30,1 e a política de escalabilidade subtraia 1. Quando o alarme é acionado, o processo de escalabilidade automática subtrairá 1 de 30,1 para obter 29,1 e o arredondará para 30, portanto, nenhuma ação de escalabilidade é executada. Suponhamos também que você selecione os pesos de instância 2, 4 e 8 e uma capacidade de destino igual a 10, mas nenhuma instância de peso 2 esteja disponível. Sendo assim, a frota spot provisionou instâncias de pesos 4 e 8 para uma capacidade atendida igual a 12. Se a política de escalabilidade reduzir a capacidade de destino em 20% e um alarme for acionado, o processo de escalabilidade automática subtrairá 12\$10,2 de 12 para obter 9,6 e o arredondará para 10, portanto, nenhuma ação de escalabilidade será executada.
+ **Período de espera**: as políticas de escalabilidade que você cria para a frota spot são compatíveis com um período de espera. Esse é o número de segundos após o encerramento de uma ação de escalabilidade em que as atividades de escalabilidade anteriores, relacionadas ao acionamento, podem influenciar eventos futuros de escalabilidade. Para expandir as políticas enquanto o período do desaquecimento estiver em vigor, a capacidade que foi adicionada pelo evento de expansão anterior que iniciou o desaquecimento é calculada como parte da capacidade desejada para a expansão seguinte. A intenção é expandir de forma contínua (mas não excessivamente). Para políticas de redução, o período do desaquecimento é utilizado para bloquear a escala subsequente nas solicitações até que expire. A intenção é reduzir de forma conservadora para proteger a disponibilidade de sua aplicação. Contudo, se outro alarme acionar uma política de expansão durante o período do desaquecimento após uma redução, a escalabilidade automática expandirá seu destino dimensionável imediatamente.
+ **Usar monitoramento detalhado**: recomendamos que você escale com base nas métricas da instância com intervalos de um minuto, pois isso garante uma resposta mais rápida às mudanças de utilização. Aumentar a escalabilidade com base em métricas com intervalos de cinco minutos pode resultar em tempo de resposta mais lento e na escalabilidade com base em dados de métricas obsoletos. Para enviar dados de métrica das instâncias ao CloudWatch em períodos de 1 minuto, você deve habilitar especificamente o monitoramento detalhado. Para obter mais informações, consulte [Gerenciar o monitoramento detalhado das instâncias do Amazon EC2](manage-detailed-monitoring.md) e [Criar uma solicitação de frota spot usando parâmetros definidos](create-spot-fleet.md#create-spot-fleet-advanced).
+ **AWS CLI**: caso use a AWS CLI para configurar o escalabilidade da frota spot, você usará o [application-autoscaling](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling).

# Permissões do IAM obrigatórias para escalabilidade automática de frota spot
<a name="spot-fleet-auto-scaling-IAM"></a>

A escalabilidade automática para frota spot é possível por uma combinação das APIs do Amazon EC2, do Amazon CloudWatch e do Application Auto Scaling. As solicitações de frota spot são criadas com o Amazon EC2, os alarmes são criados com o CloudWatch e as políticas de escalabilidade são criadas com o Application Auto Scaling. Além das [permissões do IAM obrigatórias para usar a frota spot](spot-fleet-prerequisites.md#spot-fleet-iam-users) e do Amazon EC2, o usuário que acessa as configurações de escalabilidade de frota deve ter as permissões adequadas para os serviços compatíveis com escalabilidade automática.

Para usar escalabilidade automática para frota spot, os usuários também precisam ter permissões para usar as ações na política de exemplo a seguir. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "application-autoscaling:*",
                "ec2:DescribeSpotFleetRequests",
                "ec2:ModifySpotFleetRequest",
                "cloudwatch:DeleteAlarms",
                "cloudwatch:DescribeAlarmHistory",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:DescribeAlarmsForMetric",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DisableAlarmActions",
                "cloudwatch:EnableAlarmActions",
                "iam:CreateServiceLinkedRole",
                "sns:CreateTopic",
                "sns:Subscribe",
                "sns:Get*",
                "sns:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Também é possível criar suas próprias políticas do IAM que permitem permissões mais refinadas para chamadas à API do Application Auto Scaling. Para obter mais informações, consulte [Identity and Access Management for Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/auth-and-access-control.html) no *Guia do usuário do Application Auto Scaling*.

O serviço do Application Auto Scaling também precisa de permissão para descrever a frota spot e os alarmes do CloudWatch, além de permissões para modificar a capacidade de destino da frota spot em seu nome. Se você habilitar a escalabilidade automática para a frota spot, ela criará uma função vinculada ao serviço chamada `AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest`. Essa função vinculada ao serviço concede ao Application Auto Scaling permissão para descrever os alarmes das políticas, monitorar a capacidade atual da frota e modificar a capacidade da frota. A função de frota spot gerenciada original para o Application Auto Scaling era `aws-ec2-spot-fleet-autoscale-role`, mas ela não é mais necessária. Essa função vinculada ao serviço é a função padrão do Application Auto Scaling. Para ter mais informações, consulte [Funções vinculadas a serviço do Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html), no *Guia do usuário do Application Auto Scaling*.

# Escalabilidade de rastreamento de destino: escalar a frota spot definindo um valor para uma métrica específica
<a name="spot-fleet-target-tracking"></a>

Com a escalabilidade de rastreamento de destino, você cria uma política de escalabilidade de rastreamento de destino ao selecionar uma métrica e definir um valor pretendido. A frota spot cria e gerencia os alarmes do CloudWatch que acionam a política de escalabilidade e calcula o ajuste de escalabilidade com base na métrica escolhida e no valor de destino. A política de escalabilidade ajusta a capacidade ao adicionar ou remover instâncias conforme necessário para manter a métrica no valor de destino especificado ou próxima a ele. Uma política de escalabilidade de rastreamento de destino não apenas mantém a métrica próxima do valor de destino, mas também se ajusta às flutuações na métrica devido a um padrão de carga de flutuação e minimiza as flutuações rápidas na capacidade.

É possível criar várias políticas de escalabilidade de rastreamento de destino para uma frota spot, desde que cada uma delas use uma métrica diferente. A frota escala com base na política que especifica a maior capacidade da frota. Isso permite que você inclua vários cenários para garantir capacidade suficiente para suas workloads de aplicações.

Para garantir a disponibilidade da aplicação, a frota se expande proporcionalmente à métrica o mais rápido possível, mas se retrai gradualmente.

Quando uma frota spot encerra uma instância spot porque a capacidade pretendida foi reduzida, a instância recebe um aviso de interrupção de instância spot.

**nota**  
Não edite ou exclua os alarmes do CloudWatch que a frota spot gerencia para uma política de dimensionamento com monitoramento do objetivo. A frota spot exclui os alarmes automaticamente quando você exclui a política de dimensionamento com monitoramento do objetivo.

**Pré-requisitos**
+ A solicitação de frota spot deve ter o tipo de solicitação `maintain`. A escalação automática não é compatível com solicitações do tipo `request`.
+ Configurar a [Permissões do IAM obrigatórias para escalabilidade automática de frota spot](spot-fleet-auto-scaling-IAM.md).
+ Revise as [Considerações](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling).

**Para configurar uma política de rastreamento de destino**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Ajuste de escala automático** próxima à parte inferior da tela. Se você selecionou o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Ajuste de escala automático**.

1. Se a escalabilidade automática não estiver configurada, escolha **Configurar**.

1. Use **Escalar capacidade entre** para definir a capacidade mínima e máxima para sua frota. A escalabilidade automática não dimensiona a frota abaixo da capacidade mínima ou acima da capacidade máxima.

1. Em **Policy Name (Nome da política)**, digite um nome para a política.

1. Escolha uma **Target metric**.

1. Digite um **Target value (Valor de destino)** para a métrica.

1. Em **Período de esfriamento**, especifique um novo valor (em segundos) ou mantenha o padrão.

1. (Opcional) Para omitir a criação de uma política de redução de escala na horizontal baseada na configuração atual, selecione **Desabilitar redução de escala na horizontal**. É possível criar uma política de redução de escala na horizontal usando uma configuração diferente.

1. Escolha **Save (Salvar)**.

**Para configurar uma política de rastreamento de destino usando a AWS CLI**

1. Registre a solicitação de frota spot como um destino escalável usando o comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html).

1. Crie uma política de escalabilidade usando o comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html).

# Escalabilidade em etapas: escalar a frota spot usando políticas de escalabilidade em etapas
<a name="spot-fleet-step-scaling"></a>

Com as políticas de escalabilidade em etapas, você especifica os alarmes do CloudWatch para acionamento do processo de escalabilidade. Por exemplo, se você deseja aumentar a escala quando a utilização de CPU atinge um determinado nível, crie um alarme usando a métrica `CPUUtilization` fornecida pelo Amazon EC2.

Ao criar uma política de escalabilidade em etapas, você deve especificar um dos seguintes tipos de ajuste de escalabilidade:
+ **Add** (Adicionar): aumente a capacidade de destino da frota por um número específico de unidades de capacidade ou por uma porcentagem especificada da capacidade atual.
+ **Remove** (Remover): reduza a capacidade de destino da frota por um número específico de unidades de capacidade ou por uma porcentagem especificada da capacidade atual.
+ **Set to** (Definir como): defina a capacidade de destino da frota como o número especificado de unidades de capacidade.

Quando um alarme é acionado, o processo de escalabilidade automática calcula a nova capacidade de destino usando a capacidade atendida e as políticas de escalabilidade e, em seguida, atualiza a capacidade de destino corretamente. Por exemplo, suponha que a capacidade de destino e a capacidade atendida sejam 10 e a política de escalabilidade seja 1. Quando o alarme é acionado, o processo de escalabilidade automática adiciona 1 a 10 para obter 11, para que a frota spot execute uma instância.

Quando uma frota spot encerra uma instância spot porque a capacidade pretendida foi reduzida, a instância recebe um aviso de interrupção de instância spot.

**Pré-requisitos**
+ A solicitação de frota spot deve ter o tipo de solicitação `maintain`. A escalação automática não é compatível com solicitações do tipo `request`.
+ Configurar a [Permissões do IAM obrigatórias para escalabilidade automática de frota spot](spot-fleet-auto-scaling-IAM.md).
+ Considere quais métricas do CloudWatch são importantes para sua aplicação. É possível criar alarmes do CloudWatch com base nas métricas fornecidas pela AWS ou nas suas próprias métricas personalizadas.
+ Para as métricas da AWS que você usará em suas políticas de escalabilidade, habilite a coleta das métricas do CloudWatch se o serviço que fornece as métricas não for habilitado por padrão.
+ Revise as [Considerações](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling).

**Criar um alarme do CloudWatch**

1. Abra o console do CloudWatch em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, expanda **Alarmes** e escolha **Todos os alarmes**.

1. Selecione **Create alarm (Criar alarme)**.

1. Na página **Specify metric and conditions (Especificar métrica e condições)**, selecione **Select metric (Selecionar métrica)**. 

1. Escolha **Spot do EC2**, **Métricas de solicitação de frota** e então uma métrica (por exemplo, **TargetCapacity**). Depois escolha **Selecionar métrica**.

   A página **Specify metric and conditions (Especificar métrica e condições)** será exibida, mostrando um gráfico e outras informações sobre a métrica selecionada. 

1. Em **Período**, escolha o período de avaliação para o alarme, por exemplo, **1 minuto**. Ao avaliar o alarme, todos os períodos são agregados em um único ponto de dados. 
**nota**  
Um período mais curto cria um alarme mais sensível. 

1. Em **Conditions (Condições)**, defina o alarme definindo a condição do limite. Por exemplo, é possível definir um limite para acionar o alarme sempre que o valor da métrica for maior que ou igual a 80%.

1. Em **Additional configuration (Configuração adicional)**, para **Datapoints to alarm (Pontos de dados para alarme)**, especifique quantos pontos de dados (períodos de avaliação) devem estar no estado ALARM para acionar o alarme, por exemplo, 1 período de avaliação para 2 de 3 períodos de avaliação. Isso cria um alarme que passará para o estado ALARM se houver violação de muitos períodos consecutivos. Para obter mais informações, consulte [Avaliar um alarme](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation) no *Guia do usuário do Amazon CloudWatch*.

1. Para **Missing data treatment (Tratamento de dados ausentes)**, selecione uma das opções (ou mantenha o padrão como **Treat missing data as missing (Tratar dados ausentes como ausentes)**). Para obter mais informações, consulte [Configuração da forma como os alarmes do CloudWatch tratam dados ausentes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data) no *Manual do usuário do Amazon CloudWatch*.

1. Escolha **Next (Próximo)**.

1. (Opcional) Para receber notificações de um evento de dimensionamento, para **Notification (Notificação)**, é possível escolher ou criar o tópico do Amazon SNS que você deseja usar para receber notificações. Caso contrário, será possível excluir a notificação agora e adicionar uma posteriormente, quando necessário.

1. Escolha **Próximo**.

1. Em **Adicionar nome e descrição**, insira um nome e uma descrição para o alarme e selecione **Próximo**.

1. Selecione **Criar alarme**.

**Para configurar uma política de escalabilidade para a frota spot**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Ajuste de escala automático** próxima à parte inferior da tela. Se você selecionou o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Ajuste de escala automático**.

1. Se a escalabilidade automática não estiver configurada, escolha **Configurar**.

1. Use **Escalar capacidade entre** para definir a capacidade mínima e máxima para sua frota. As políticas de ajuste de escala não escalam a frota abaixo da capacidade mínima ou acima da capacidade máxima.

1. Em **Políticas de escalabilidade**, para **Tipo de política**, escolha **Política escalabilidade em etapas**.

1. Inicialmente, a opção **Políticas de escalação** contêm políticas de escalação gradual denominadas **ScaleUp** e **ScaleDown**. É possível completar essas políticas ou escolher **Remover política** para excluí-las. Você também pode escolher **Add policy (Adicionar política)**.

1. Para definir a política, faça o seguinte:

   1. Em **Policy Name (Nome da política)**, digite um nome para a política.

   1. Em **Gatilho de política**, selecione um alarme existente ou escolha **Criar alarme** para abrir o console do Amazon CloudWatch e criar um.

   1. Em **Modificar capacidade**, defina a quantidade do ajuste de escala e os limites inferior e superior do ajuste da etapa. É possível adicionar ou remover um número específico de instâncias ou uma porcentagem do tamanho da frota atual ou definir a frota para um tamanho exato. 

      Por exemplo, para criar uma política de escalabilidade em etapas que aumente a capacidade da frota em 30%, escolha **Adicionar**, insira **30** no próximo campo e escolha **porcento**. Por padrão, o limite inferior de uma política de adição é o limite do alarme e o limite superior é mais (\$1) infinito. Por padrão, o limite superior de uma política de remoção é o limite do alarme e o limite inferior é menos (-) infinito.

   1. (Opcional) Para adicionar outra etapa, escolha **Adicionar etapa**.

   1. Em **Período de esfriamento**, especifique um novo valor (em segundos) ou mantenha o padrão.

1. Escolha **Salvar**.

**Para configurar políticas de escalabilidade em etapas para sua frota spot usando a AWS CLI**

1. Registre a solicitação de frota spot como um destino escalável usando o comando [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html).

1. Crie uma política de escalabilidade usando o comando [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html).

1. Crie um alarme que acione as políticas de escalabilidade usando o comando [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html).

# Escalabilidade programada: escalar a frota spot de acordo com uma programação
<a name="spot-fleet-scheduled-scaling"></a>

A escalabilidade da frota com base em uma programação permite que você escale sua aplicação em resposta a alterações previsíveis na demanda. Ao criar *ações programadas*, você pode instruir a frota spot a executar atividades de escalabilidade em momentos específicos. Ao criar uma ação programada, você deve especificar uma frota spot existente, a hora em que a atividade de escalabilidade deve ocorrer e a capacidade mínima e máxima desejada. As ações agendadas podem ser configuradas para escalar uma vez ou em uma programação recorrente. Caso precise fazer alterações, você pode editar ou excluir ações programadas.

**Pré-requisitos**
+ As ações programadas somente podem ser criadas para as frotas spot existentes. Você não pode criar uma ação programada ao criar uma frota spot.
+ A solicitação de frota spot deve ter o tipo de solicitação `maintain`. A escalação automática não é compatível com solicitações do tipo `request`.
+ Configurar a [Permissões do IAM obrigatórias para escalabilidade automática de frota spot](spot-fleet-auto-scaling-IAM.md).
+ Revise as [Considerações](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling).

**Para criar uma única ação programada**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Escalabilidade programada** próxima à parte inferior da tela. Caso tenha selecionado o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Escalabilidade programada**.

1. Escolha **Criar ação programada**.

1. Em **Name (Nome)**, especifique um nome para a ação programada.

1. Insira um valor para **Minimum capacity (Capacidade mínima)**, **Maximum capacity (Capacidade máxima)**, ou ambos.

1. Em **Recurrence (Recorrência)**, escolha **Once (Uma vez)**.

1. (Opcional) Escolha uma data e hora para **Start time (Hora de início)**, **End time (Hora de término)**, ou ambos.

1. Escolha **Criar**.

**Para criar uma ação programada recorrente**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Escalabilidade programada** próxima à parte inferior da tela. Caso tenha selecionado o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Escalabilidade programada**.

1. Em **Name (Nome)**, especifique um nome para a ação programada.

1. Insira um valor para **Minimum capacity (Capacidade mínima)**, **Maximum capacity (Capacidade máxima)**, ou ambos.

1. Em **Recurrence (Recorrência)**, escolha uma das programações predefinidas (por exemplo, **Every day (Todos os dias)**) ou escolha **Custom (Personalizado)** e digite uma expressão cron. Para obter mais informações sobre as expressões cron compatíveis com a escalabilidade programada, consulte [Cron expressions](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html#eb-cron-expressions) no *Guia do usuário do Amazon EventBridge*.

1. (Opcional) Escolha uma data e hora para **Start time (Hora de início)**, **End time (Hora de término)**, ou ambos.

1. Selecione **Enviar**.

**Para editar uma ação programada**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Escalabilidade programada** próxima à parte inferior da tela. Caso tenha selecionado o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Escalabilidade programada**.

1. Selecione a ação programada e escolha **Actions (Ações)**, **Edit (Editar)**.

1. Faça as alterações necessárias e escolha **Submit (Enviar)**.

**Para excluir uma ação programada**

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

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

1. Selecione sua solicitação de frota spot.

1. Escolha a guia **Escalabilidade programada** próxima à parte inferior da tela. Caso tenha selecionado o link para sua frota spot, não há guia; em vez disso, role para baixo até a seção **Escalabilidade programada**.

1. Selecione a ação programada e escolha **Actions (Ações)**, **Delete (Excluir)**.

1. Quando a confirmação for solicitada, escolha **Excluir**.

**Para gerenciar a escalabilidade programada usando o AWS CLI**

Use os seguintes comandos:
+ [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html)
+ [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html)
+ [delete-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html)

# Monitorar o EC2 Fleet ou a frota spot
<a name="fleet-monitor"></a>

O monitoramento eficaz do EC2 Fleet ou da frota spot é essencial para manter a performance ideal e garantir a confiabilidade. Há várias ferramentas para ajudar você a conseguir isso, incluindo o Amazon CloudWatch e o Amazon EventBridge, que são abordados neste tópico.

Com o CloudWatch, você pode coletar e rastrear métricas, definir alarmes e reagir automaticamente a alterações no status da frota.

Com o EventBridge, você pode monitorar e responder de forma programática aos eventos emitidos pela sua frota. Ao definir regras no EventBridge, você pode automatizar respostas a eventos específicos da frota, como encerramento de instâncias ou mudanças no estado da frota, melhorando sua eficiência operacional.

**Topics**
+ [Monitorar a frota do EC2 ou frota spot usando o CloudWatch](ec2-fleet-cloudwatch-metrics.md)
+ [Monitorar e responder de forma programática aos eventos emitidos pelo EC2 Fleet ou pela frota spot usando o Amazon EventBridge](monitor-ec2-fleet-using-eventbridge.md)

# Monitorar a frota do EC2 ou frota spot usando o CloudWatch
<a name="ec2-fleet-cloudwatch-metrics"></a>

É possível monitorar a frota do EC2 ou a frota spot usando as métricas do Amazon CloudWatch descritas nesta seção.

**Importante**  
Para garantir uma precisão, recomendamos que você habilite o monitoramento detalhado para usar essas métricas. Para obter mais informações, consulte [Gerenciar o monitoramento detalhado das instâncias do Amazon EC2](manage-detailed-monitoring.md).

Para obter mais informações sobre o uso de CloudWatch, consulte [Monitorar instâncias usando o CloudWatch](using-cloudwatch.md).

## Métricas da frota do EC2 e da frota spot
<a name="ec2-fleet-metrics"></a>

O namespace `AWS/EC2Spot` inclui as métricas a seguir para a frota, além das métricas do CloudWatch para as instâncias spot na frota. Para obter mais informações, consulte [Métricas de instância](viewing_metrics_with_cloudwatch.md#ec2-cloudwatch-metrics).


| Métrica | Descrição | 
| --- | --- | 
| AvailableInstancePoolsCount |  Os grupos de capacidade spot especificados na solicitação de frota. Unidades: contagem  | 
| BidsSubmittedForCapacity |  A capacidade para a qual o Amazon EC2 enviou solicitações de frota. Unidades: contagem  | 
| EligibleInstancePoolCount |  Os grupos de capacidade spot especificados na solicitação de frota em que o Amazon EC2 pode atender às solicitações. O Amazon EC2 não atende a solicitações em grupos nos quais o preço máximo que você está disposto a pagar por instâncias spot é menor que o preço spot ou o preço spot é maior que o preço das instâncias sob demanda. Unidades: contagem  | 
| FulfilledCapacity |  A capacidade preenchida pelo Amazon EC2. Unidades: contagem  | 
| MaxPercentCapacityAllocation |  O valor máximo de `PercentCapacityAllocation` em todos os grupos de frota spot especificados na solicitação de frota. Unidades: percentual  | 
| PendingCapacity |  A diferença entre `TargetCapacity` e `FulfilledCapacity`. Unidades: contagem  | 
| PercentCapacityAllocation |  A capacidade alocada para o grupo de capacidade spot para as dimensões especificadas. Para obter o valor máximo registrado em todos os grupos de capacidade spot, use `MaxPercentCapacityAllocation`. Unidades: percentual  | 
| TargetCapacity |  A capacidade de destino da solicitação de frota. Unidades: contagem  | 
| TerminatingCapacity |  A capacidade que está sendo encerrada, pois a capacidade provisionada é maior que a capacidade de destino. Unidades: contagem  | 

Se a unidade de medida para uma métrica é `Count`, a estatística mais útil é `Average`.

## Dimensões da frota do EC2 e da frota spot
<a name="ec2-fleet-dimensions"></a>

Para filtrar os dados da frota, use as dimensões a seguir.


| Dimensões | Descrição | 
| --- | --- | 
| AvailabilityZone |  Filtre os dados por zona de disponibilidade.  | 
| FleetRequestId |  Filtre os dados por solicitação de frota.  | 
| InstanceType |  Filtre os dados por tipo de instância.  | 

## Visualizar as métricas do CloudWatch para a frota do EC2 ou a frota spot
<a name="view-ec2-fleet-metrics"></a>

É possível visualizar as métricas do CloudWatch para a frota spot usando o console do Amazon CloudWatch. Essas métricas são exibidas como gráficos de monitoramento. Esses gráficos mostrarão pontos de dados se a frota estiver ativa.

As métricas são agrupadas primeiro pelo namespace e, em seguida, por várias combinações de dimensões dentro de cada namespace. Por exemplo, você pode visualizar todas as métricas da frota ou grupos de métricas da frota pelo ID de solicitação da frota, tipo de instância ou zona de disponibilidade.

**Visualizar métricas da frota**

1. Abra o console do CloudWatch, em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, expanda **Métricas** e escolha **Todas as métricas**.

1. Escolha o namespace do **EC2 Spot**.
**nota**  
Se o namespace do **EC2 Spot** não for exibido, há dois motivos para isso. Você nunca usou a frota do EC2 ou a frota spot na região. Somente os serviços da AWS em uso enviam métricas para o Amazon CloudWatch. Ou então, se você tiver usado a frota do EC2 ou a frota spot na região, mas não nas últimas duas semanas, o namespace não será exibido.

1. Para filtrar as métricas por dimensão, selecione uma das seguintes opções:
   + **Métricas de solicitação da frota**: agrupar por solicitação de frota
   + **Por zona de disponibilidade**: agrupar por solicitação de frota e zona de disponibilidade
   + **Por tipo de instância**: agrupar por solicitação de frota e tipo de instância
   + **Por zona de disponibilidade/tipo de instância**: agrupar por solicitação de frota, zona de disponibilidade e tipo de instância

1. Para visualizar os dados de uma métrica, marque a caixa de seleção ao lado da métrica.

# Monitorar e responder de forma programática aos eventos emitidos pelo EC2 Fleet ou pela frota spot usando o Amazon EventBridge
<a name="monitor-ec2-fleet-using-eventbridge"></a>

Quando o estado de um EC2 Fleet ou frota spot é alterado, é emitida uma notificação. A notificação é disponibilizada como um evento que é enviado para Amazon EventBridge (anteriormente conhecido como Amazon CloudWatch Events). Os eventos são emitidos com base no melhor esforço.

É possível usar o Amazon EventBridge para criar regras que acionem ações programáticas em resposta a um evento. Por exemplo, você pode criar duas regras do EventBridge: uma acionada quando um estado da frota muda e outra acionada quando uma instância na frota é encerrada. Neste exemplo, você pode configurar a primeira regra para que, se o estado da frota for alterado, a regra invoque um tópico do SNS, enviando uma notificação por e-mail para você. É possível configurar a segunda regra para que, se uma instância na frota for encerrada, a regra invoque uma função do Lambda para executar uma nova instância.

**nota**  
Apenas frotas do tipo `maintain` e `request` emitem eventos. As frotas do tipo `instant` não emitem eventos porque enviam solicitações únicas síncronas e o estado da frota é conhecido imediatamente na resposta. Para usar o Amazon EventBridge para monitorar eventos da frota, o tipo de solicitação deve ser `maintain` ou `request`.

Para obter instruções sobre como descrever o histórico de eventos de uma frota, consulte [Descrever o histórico de eventos para o EC2 Fleet](describe-ec2-fleet.md#describe-ec2-fleet-event-history).

**Topics**
+ [Criar regras do Amazon EventBridge para monitorar eventos do EC2 Fleet ou da frota spot](#fleet_create-eventbridge-rules)
+ [Tipos de evento de Frota do EC2](#ec2-fleet-event-types)
+ [Tipos de evento de frota spot](#spot-fleet-event-types)

## Criar regras do Amazon EventBridge para monitorar eventos do EC2 Fleet ou da frota spot
<a name="fleet_create-eventbridge-rules"></a>

Quando uma notificação de alteração de estado é emitida para um EC2 Fleet ou frota spot, ela é enviada como um evento para o Amazon EventBridge como um arquivo JSON. Se o EventBridge detectar um padrão de evento que corresponda a um padrão definido em uma regra, o EventBridge invocará um destino (ou destinos) especificado(s) na regra.

É possível escrever regras do EventBridge para automatizar ações com base em padrões de eventos correspondentes. 

Os seguintes campos no evento formam o padrão de evento que está definido na regra:

`"source": "aws.ec2fleet"`  
Identifica que o evento é de Frota do EC2.

`"detail-type": "EC2 Fleet State Change"`  
Identifica o tipo de evento.

`"detail": { "sub-type": "submitted" }`  
Identifica o subtipo de evento.

Para obter a lista de eventos do EC2 Fleet e da frota spot e dados de eventos de exemplo, consulte [Tipos de evento de Frota do EC2](#ec2-fleet-event-types) e [Tipos de evento de frota spot](#spot-fleet-event-types).

**Topics**
+ [Criar uma regra de EventBridge para enviar uma notificação](#eventbridge-send-notification)
+ [Criar uma regra de EventBridge para acionar uma função do Lambda](#eventbridge-trigger-lambda)

### Criar uma regra de EventBridge para enviar uma notificação
<a name="eventbridge-send-notification"></a>

O exemplo a seguir cria uma regra de EventBridge para enviar um e-mail, mensagem de texto ou notificação por push móvel sempre que o Amazon EC2 emite uma notificação de Frota do EC2. O sinal neste exemplo é emitido como um evento de `EC2 Fleet State Change`, que aciona a ação definida pela regra.

**Pré-requisito**  
Antes de criar a regra EventBridge, você deve criar o tópico do Amazon SNS para e-mail, mensagem de texto ou notificação por push móvel.

**Para criar uma regra de EventBridge para enviar uma notificação quando um estado de Frota do EC2 muda**

1. Abra o console do Amazon EventBridge em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Selecione **Criar regra**.

1. Em **Define rule detail** (Definir detalhe da regra), faça o seguinte:

   1. Informe um **Name (Nome)** para a regra e, opcionalmente, uma descrição.

      Uma regra não pode ter o mesmo nome que outra regra na mesma região e no mesmo barramento de eventos.

   1. Em **Event Bus** (Barramento de eventos), escolha **default** (padrão). Quando um serviço da AWS em sua conta gerar um evento, ele sempre irá para o barramento de eventos padrão da sua conta.

   1. Em **Rule type** (Tipo de regra), escolha **Rule with an event pattern** (Regra com um padrão de evento).

   1. Escolha **Próximo**.

1. Em **Build event pattern** (Criar padrão de evento), faça o seguinte:

   1. Em **Event source** (Origem do evento), escolha **Eventos da AWS ou eventos de parceiro do EventBridge**.

   1. Em **Event pattern** (Padrão de evento), nesse exemplo, você especificará o seguinte padrão de evento para corresponder ao evento `EC2 Fleet Instance Change`.

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"]
      }
      ```

      Para adicionar o padrão de evento, é possível usar um modelo escolhendo **Event pattern form** (Formulário de padrão de evento), ou especifique seu próprio padrão escolhendo **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)), como segue:

      1. Para usar um modelo para criar o padrão de evento, faça o seguinte:

         1. Escolha **Event pattern form** (Formulário de evento).

         1. Em **Event source** (Origem do evento), escolha **AWS services** (Serviços da ).

         1. Para ** Service** (Serviço da AWS), escolha **EC2 Fleet** (Frota do EC2).

         1. Em **Event type** (Tipo de evento), escolha **EC2 Fleet Instance Change** (Alteração da instância da frota do EC2).

         1. Para personalizar o modelo, escolha **Edit pattern** (Editar padrão) e faça as alterações para corresponder ao padrão de evento de exemplo.

      1. (Alternativa) Para especificar um padrão de evento personalizado, faça o seguinte:

         1. Escolha **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)).

         1. Na caixa **Event pattern** (Padrão de evento), adicione o padrão de evento para este exemplo.

   1. Escolha **Próximo**.

1. Em **Select target(s)** (Selecionar destino(s)), faça o seguinte:

   1. Em **Tipos de destino**, escolha **Serviço da AWS**.

   1. Em **Select a target** (Selecione um destino), escolha **SNS topic** (Tópico do SNS) para enviar um email, mensagem de texto ou notificação por push móvel quando o evento ocorrer.

   1. Em **Topic** (Tópico), escolha um tópico existente. Para fazer isso, você precisa criar um tópico do Amazon SNS usando o console do Amazon SNS. Para obter mais informações, consulte [Usar o Amazon SNS para mensagens de aplicação para pessoa (A2P)](https://docs.aws.amazon.com//sns/latest/dg/sns-user-notifications.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.

   1. (Opcional) Em **Additional settings** (Configurações adicionais), é possível, opcionalmente, definir configurações adicionais. Para obter mais informações, consulte [Criar regras do Amazon EventBridge que reajam a eventos](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-create-rule.html) (etapa 16) no *Guia do usuário do Amazon EventBridge*.

   1. Escolha **Próximo**.

1. (Opcional) Em **Tags** (Etiquetas), é possível atribuir, opcionalmente, uma ou mais etiquetas à sua regra e, em seguida, escolher **Next** (Próximo).

1. Em **Review and create** (Revisar e criar), faça o seguinte:

   1. Revise os detalhes da regra e modifique-os conforme necessário.

   1. Escolha **Criar regra**.

Para obter mais informações, consulte [Amazon EventBridge rules](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html) (Regras do Amazon EventBridge) e [Amazon EventBridge event patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) (Padrões de eventos do Amazon EventBridge) no *Amazon EventBridge User Guide* (Manual do usuário do Amazon EventBridge).

### Criar uma regra de EventBridge para acionar uma função do Lambda
<a name="eventbridge-trigger-lambda"></a>

O exemplo a seguir cria uma regra de EventBridge para acionar uma função do Lambda toda vez que Amazon EC2 emite uma notificação de Frota do EC2. O sinal neste exemplo é emitido como um evento de `EC2 Fleet Instance Change`, subtipo `launched`, que aciona a ação definida pela regra.

Antes de criar a regra de EventBridge, você deve criar a função do Lambda.

**Como criar a função do Lambda a ser usada na regra EventBridge**

1. Abra o console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Escolha **Create function**.

1. Digite um nome para sua função, configure o código e escolha **Create function** (Criar função).

   Para ter mais informações, consulte [Criar sua primeira função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) no *Guia do desenvolvedor do AWS Lambda*.

**Para criar uma regra de EventBridge para acionar uma função do Lambda quando uma instância em um estado de Frota do EC2 muda**

1. Abra o console do Amazon EventBridge em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Selecione **Criar regra**.

1. Em **Define rule detail** (Definir detalhe da regra), faça o seguinte:

   1. Informe um **Name (Nome)** para a regra e, opcionalmente, uma descrição.

      Uma regra não pode ter o mesmo nome que outra regra na mesma região e no mesmo barramento de eventos.

   1. Em **Event Bus** (Barramento de eventos), escolha **default** (padrão). Quando um serviço da AWS em sua conta gerar um evento, ele sempre irá para o barramento de eventos padrão da sua conta.

   1. Em **Rule type** (Tipo de regra), escolha **Rule with an event pattern** (Regra com um padrão de evento).

   1. Escolha **Próximo**.

1. Em **Build event pattern** (Criar padrão de evento), faça o seguinte:

   1. Em **Event source** (Origem do evento), escolha **Eventos da AWS ou eventos de parceiro do EventBridge**.

   1. Em **Event pattern** (Padrão de evento) nesse exemplo, você especificará o seguinte padrão de evento para corresponder ao evento `EC2 Fleet Instance Change` e ao subtipo `launched`.

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"],
       "detail": {
         "sub-type": ["launched"]
      }
      ```

      Para adicionar o padrão de evento, é possível usar um modelo escolhendo **Event pattern form** (Formulário de padrão de evento), ou especifique seu próprio padrão escolhendo **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)), como segue:

      1. Para usar um modelo para criar o padrão de evento, faça o seguinte:

         1. Escolha **Event pattern form** (Formulário de evento).

         1. Em **Event source** (Origem do evento), escolha **AWS services** (Serviços da ).

         1. Para ** Service** (Serviço da AWS), escolha **EC2 Fleet** (Frota do EC2).

         1. Em **Event type** (Tipo de evento), escolha **EC2 Fleet Instance Change** (Alteração da instância da frota do EC2).

         1. Selecione **Edit pattern** (Editar padrão) e adicione `"detail": {"sub-type": ["launched"]` para corresponder ao padrão do evento de exemplo. Para o formato JSON adequado, insira uma vírgula (`,`) após o colchete anterior (`]`).

      1. (Alternativa) Para especificar um padrão de evento personalizado, faça o seguinte:

         1. Escolha **Custom pattern (JSON editor)** (Padrão personalizado (editor JSON)).

         1. Na caixa **Event pattern** (Padrão de evento), adicione o padrão de evento para este exemplo.

   1. Escolha **Próximo**.

1. Em **Select target(s)** (Selecionar destino(s)), faça o seguinte:

   1. Em **Tipos de destino**, escolha **Serviço da AWS**.

   1. Em **Select a target** (Selecione um destino), escolha **SNS topic** (Tópico do SNS) para enviar um email, mensagem de texto ou notificação por push móvel quando o evento ocorrer.

   1. Para **Topic** (Tópico), escolha a **Lambda function** (função Lambda) e, para **Function** (Função), escolha a função que você criou para responder quando o evento ocorrer.

   1. (Opcional) Em **Additional settings** (Configurações adicionais), é possível, opcionalmente, definir configurações adicionais. Para obter mais informações, consulte [Criar regras do Amazon EventBridge que reajam a eventos](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-create-rule.html) (etapa 16) no *Guia do usuário do Amazon EventBridge*.

   1. Escolha **Próximo**.

1. (Opcional) Em **Tags** (Etiquetas), é possível atribuir, opcionalmente, uma ou mais etiquetas à sua regra e, em seguida, escolher **Next** (Próximo).

1. Em **Review and create** (Revisar e criar), faça o seguinte:

   1. Revise os detalhes da regra e modifique-os conforme necessário.

   1. Escolha **Criar regra**.

Para obter um tutorial sobre como criar uma função do Lambda e uma EventBridge regra que executa a função do Lambda, consulte [Tutorial: Log the State of an Amazon EC2 Instance Using EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-log-ec2-instance-state.html) (Tutorial: Registrar em log o estado de uma instância do Amazon EC2 usando o EventBridge) no *AWS Lambda User Guide* (Guia do usuário do Amazon EventBridge).

## Tipos de evento de Frota do EC2
<a name="ec2-fleet-event-types"></a>

Existem cinco tipos de eventos de Frota do EC2. Para cada tipo de evento, existem vários subtipos.

**Topics**
+ [Alteração do estado da EC2 Fleet](#ec2-fleet-state-change)
+ [Alteração da solicitação de instância spot da EC2 Fleet](#ec2-fleet-spot-instance-request-change)
+ [Alteração da instância da EC2 Fleet](#ec2-fleet-instance-change)
+ [Informações da EC2 Fleet](#ec2-fleet-info)
+ [Erro de EC2 Fleet](#ec2-fleet-config-not-valid)

### Alteração do estado da EC2 Fleet
<a name="ec2-fleet-state-change"></a>

A Frota do EC2 envia um evento `EC2 Fleet State Change` para Amazon EventBridge quando um estado Frota do EC2 mudar.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "715ed6b3-b8fc-27fe-fad6-528c7b8bf8a2",
    "detail-type": "EC2 Fleet State Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:20Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "sub-type": "active"
    }
}
```

Os possíveis valores para `sub-type` são:

`active`  
A solicitação de Frota do EC2 foi validada e o Amazon EC2 está tentando manter o número de destino das instâncias em execução.

`deleted`  
A solicitação de Frota do EC2 foi excluída, e não há outras instâncias em execução. A solicitação de Frota do EC2 foi excluída dois dias depois que as instâncias foram encerradas.

`deleted_running`  
A solicitação de Frota do EC2 foi excluída e não executará instâncias adicionais. Suas instâncias existentes continuam sendo executadas até que sejam interrompidas ou encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam interrompidas ou encerradas. 

`deleted_terminating`  
A solicitação de Frota do EC2 foi excluída, e as instâncias estão sendo encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam encerradas. 

`expired`  
A solicitação de Frota do EC2 expirou. Se a solicitação tiver sido criada com conjunto `TerminateInstancesWithExpiration`, um evento `terminated` subsequente indicará que as instâncias estão encerradas.

`modify_in_progress`  
A solicitação de Frota do EC2 está sendo modificada. A solicitação permanece nesse estado até que a modificação seja totalmente processada.

`modify_succeeded`  
A solicitação de Frota do EC2 foi modificada.

`submitted`  
A solicitação de Frota do EC2 está sendo avaliada, e o Amazon EC2 está se preparando para executar o número de destino de instâncias. 

`progress`  
A solicitação de Frota do EC2 está em processo de ser atendida.

### Alteração da solicitação de instância spot da EC2 Fleet
<a name="ec2-fleet-spot-instance-request-change"></a>

A Frota do EC2 envia um evento de `EC2 Fleet Spot Instance Request Change` para Amazon EventBridge quando uma solicitação de Instância spot na frota muda de estado.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "19331f74-bf4b-a3dd-0f1b-ddb1422032b9",
    "detail-type": "EC2 Fleet Spot Instance Request Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:05Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-83fd4e48-552a-40ef-9532-82a3acca5f10"
    ],
    "detail": {
        "spot-instance-request-id": "sir-rmqske6h",
        "description": "SpotInstanceRequestId sir-rmqske6h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

Os possíveis valores para `sub-type` são:

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

`cancelled`  
Você cancelou a solicitação de instância spot ou a solicitação de instância spot expirou.

`disabled`  
Você interrompeu a instância spot.

`submitted`  
A solicitação de instância spot foi enviada.

### Alteração da instância da EC2 Fleet
<a name="ec2-fleet-instance-change"></a>

O Frota do EC2 envia um evento de `EC2 Fleet Instance Change` para Amazon EventBridge quando uma instância na frota muda de estado.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "542ce428-c8f1-0608-c015-e8ed6522c5bc",
    "detail-type": "EC2 Fleet Instance Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:23Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "instance-id": "i-0c594155dd5ff1829",
        "description": "{\"instanceType\":\"c5.large\",\"image\":\"ami-6057e21a\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1d\"}",
        "sub-type": "launched"
    }
}
```

Os possíveis valores para `sub-type` são:

`launched`  
Uma nova instância foi executada.

`terminated`  
A instância foi encerrada.

`termination_notified`  
Uma notificação de encerramento de instância foi enviada quando uma instância spot foi encerrada pelo Amazon EC2 durante a redução da escala na vertical, quando a capacidade de destino da frota foi modificada para baixo, p. ex., de uma capacidade de destino de 4 para uma capacidade de destino de 3.

### Informações da EC2 Fleet
<a name="ec2-fleet-info"></a>

A Frota do EC2 envia um evento de `EC2 Fleet Information` para Amazon EventBridge quando há um erro durante a execução. O evento informativo não impede a frota de tentar atender à sua capacidade de destino.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "76529817-d605-4571-7224-d36cc1b2c0c4",
    "detail-type": "EC2 Fleet Information",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T08:17:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-8becf5fe-bb9e-415d-8f54-3fa5a8628b91"
    ],
    "detail": {
        "description": "c4.xlarge, ami-0947d2ba12ee1ff75, Linux/UNIX, us-east-1a, Spot price in either SpotFleetRequestConfigData or SpotFleetLaunchSpecification or LaunchTemplate or LaunchTemplateOverrides is less than Spot market price $0.0619",
        "sub-type": "launchSpecUnusable"
    }
}
```

Os possíveis valores para `sub-type` são:

`fleetProgressHalted`  
O preço em cada especificação de execução não é válido porque está abaixo do preço spot (todas as especificações de execução produziram `launchSpecUnusable` eventos). Uma especificação de execução pode se tornar válida se o preço spot mudar.

`launchSpecTemporarilyBlacklisted`  
A configuração não é válida e várias tentativas de executar instâncias falharam. Para obter mais informações, consulte a descrição do evento.

`launchSpecUnusable`  
O preço em uma especificação de execução não é válido porque está abaixo do preço spot.

`registerWithLoadBalancersFailed`  
Falha na tentativa de registrar instâncias com balanceadores de carga. Para obter mais informações, consulte a descrição do evento.

### Erro de EC2 Fleet
<a name="ec2-fleet-config-not-valid"></a>

A Frota do EC2 envia um evento de `EC2 Fleet Error` para Amazon EventBridge quando há um erro durante a execução. O evento de erro impede a frota de tentar atender à sua capacidade de destino.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "69849a22-6d0f-d4ce-602b-b47c1c98240e",
    "detail-type": "EC2 Fleet Error",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-10-07T01:44:24Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-9bb19bc6-60d3-4fd2-ae47-d33e68eafa08"
    ],
    "detail": {
        "description": "m3.large, ami-00068cd7555f543d5, Linux/UNIX: IPv6 is not supported for the instance type 'm3.large'. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

Os possíveis valores para `sub-type` são:

`iamFleetRoleInvalid`  
A frota do EC2 não tem as permissões necessárias para executar ou encerrar uma instância.

`allLaunchSpecsTemporarilyBlacklisted`  
Nenhuma das configurações é válida e várias tentativas de executar instâncias falharam. Para obter mais informações, consulte a descrição do evento.

`spotInstanceCountLimitExceeded`  
Você atingiu o limite do número de Instâncias spot que você pode executar.

`spotFleetRequestConfigurationInvalid`  
A configuração não é válida. Para obter mais informações, consulte a descrição do evento.

## Tipos de evento de frota spot
<a name="spot-fleet-event-types"></a>

Existem cinco tipos de eventos de frota spot. Para cada tipo de evento, existem vários subtipos.

**Topics**
+ [Alteração do estado da frota spot do EC2](#spot-fleet-state-change)
+ [Alteração da solicitação de instância spot da frota spot do EC2](#spot-fleet-spot-instance-request-change)
+ [Alteração da instância da frota spot do EC2](#spot-fleet-instance-change)
+ [Informações sobre a frota spot do EC2](#spot-fleet-info)
+ [Erro na frota spot do EC2](#spot-fleet-config-not-valid)

### Alteração do estado da frota spot do EC2
<a name="spot-fleet-state-change"></a>

A Frota spot envia um `EC2 Spot Fleet State Change` evento para Amazon EventBridge quando uma frota spot muda de estado.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "d1af1091-6cc3-2e24-203a-3b870e455d5b",
    "detail-type": "EC2 Spot Fleet State Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:57:06Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-4b6d274d-0cea-4b2c-b3be-9dc627ad1f55"
    ],
    "detail": {
        "sub-type": "submitted"
    }
}
```

Os possíveis valores para `sub-type` são:

`active`  
A solicitação de frota spot foi validada e o Amazon EC2 está tentando manter o número de destino das instâncias em execução.

`cancelled`  
A solicitação de frota spot foi cancelada e não há instâncias em execução. A frota spot será excluída dois dias após o encerramento das instâncias.

`cancelled_running`  
A solicitação de frota spot foi cancelada e não executará instâncias adicionais. Suas instâncias existentes continuam sendo executadas até que sejam interrompidas ou encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam interrompidas ou encerradas. 

`cancelled_terminating`  
A solicitação de frota spot foi cancelada e as instâncias estão sendo encerradas. A solicitação permanece nesse estado até que todas as instâncias sejam encerradas. 

`expired`  
A solicitação de frota spot expirou. Se a solicitação tiver sido criada com conjunto `TerminateInstancesWithExpiration`, um evento `terminated` subsequente indicará que as instâncias estão encerradas.

`modify_in_progress`  
A solicitação de frota spot está sendo modificada. A solicitação permanece nesse estado até que a modificação seja totalmente processada.

`modify_succeeded`  
A solicitação de frota spot foi modificada.

`submitted`  
A solicitação de frota spot está sendo avaliada, e o Amazon EC2 está se preparando para executar o número de destino de instâncias. 

`progress`  
A solicitação de frota spot está em processo de atendimento.

### Alteração da solicitação de instância spot da frota spot do EC2
<a name="spot-fleet-spot-instance-request-change"></a>

A Frota spot envia um evento de `EC2 Spot Fleet Spot Instance Request Change` para Amazon EventBridge quando uma solicitação de Instância spot da frota muda de estado.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "cd141ef0-14af-d670-a71d-fe46e9971bd2",
    "detail-type": "EC2 Spot Fleet Spot Instance Request Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:53:21Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-a98d2133-941a-47dc-8b03-0f94c6852ad1"
    ],
    "detail": {
        "spot-instance-request-id": "sir-a2w9gc5h",
        "description": "SpotInstanceRequestId sir-a2w9gc5h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

Os possíveis valores para `sub-type` são:

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

`cancelled`  
Você cancelou a solicitação de instância spot ou a solicitação de instância spot expirou.

`disabled`  
Você interrompeu a instância spot.

`submitted`  
A solicitação de instância spot foi enviada.

### Alteração da instância da frota spot do EC2
<a name="spot-fleet-instance-change"></a>

A frota spot envia um evento de `EC2 Spot Fleet Instance Change` para Amazon EventBridge quando uma instância na frota muda de estado.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "11591686-5bd7-bbaa-eb40-d46529c2710f",
    "detail-type": "EC2 Spot Fleet Instance Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T07:25:02Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-c8a764a4-bedc-4b62-af9c-0095e6e3ba61"
    ],
    "detail": {
        "instance-id": "i-08b90df1e09c30c9b",
        "description": "{\"instanceType\":\"r4.2xlarge\",\"image\":\"ami-032930428bf1abbff\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1a\"}",
        "sub-type": "launched"
    }
}
```

Os possíveis valores para `sub-type` são:

`launched`  
Uma nova instância foi executada.

`terminated`  
A instância foi encerrada.

`termination_notified`  
Uma notificação de encerramento de instância foi enviada quando uma instância spot foi encerrada pelo Amazon EC2 durante a redução da escala na vertical, quando a capacidade de destino da frota foi modificada para baixo, p. ex., de uma capacidade de destino de 4 para uma capacidade de destino de 3.

### Informações sobre a frota spot do EC2
<a name="spot-fleet-info"></a>

A frota spot envia um evento do `EC2 Spot Fleet Information` para Amazon EventBridge quando há um erro durante o atendimento. O evento informativo não impede a frota de tentar atender à sua capacidade de destino.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "73a60f70-3409-a66c-635c-7f66c5f5b669",
    "detail-type": "EC2 Spot Fleet Information",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-08T20:56:12Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-2531ea06-af18-4647-8757-7d69c94971b1"
    ],
    "detail": {
        "description": "r3.8xlarge, ami-032930428bf1abbff, Linux/UNIX, us-east-1a, Spot bid price is less than Spot market price $0.5291",
        "sub-type": "launchSpecUnusable"
    }
}
```

Os possíveis valores para `sub-type` são:

`fleetProgressHalted`  
O preço em cada especificação de execução não é válido porque está abaixo do preço spot (todas as especificações de execução produziram `launchSpecUnusable` eventos). Uma especificação de execução pode se tornar válida se o preço spot mudar.

`launchSpecTemporarilyBlacklisted`  
A configuração não é válida e várias tentativas de executar instâncias falharam. Para obter mais informações, consulte a descrição do evento.

`launchSpecUnusable`  
O preço em uma especificação de execução não é válido porque está abaixo do preço spot.

`registerWithLoadBalancersFailed`  
Falha na tentativa de registrar instâncias com balanceadores de carga. Para obter mais informações, consulte a descrição do evento.

### Erro na frota spot do EC2
<a name="spot-fleet-config-not-valid"></a>

A frota spot envia um evento do `EC2 Spot Fleet Error` para Amazon EventBridge quando há um erro durante o atendimento. O evento de erro impede a frota de tentar atender à sua capacidade de destino.

A seguir estão dados de exemplo para esse evento. 

```
{
    "version": "0",
    "id": "10adc4e7-675c-643e-125c-5bfa1b1ba5d2",
    "detail-type": "EC2 Spot Fleet Error",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T06:56:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-38725d30-25f1-4f30-83ce-2907c56dba17"
    ],
    "detail": {
        "description": "r4.2xlarge, ami-032930428bf1abbff, Linux/UNIX: The associatePublicIPAddress parameter can only be specified for the network interface with DeviceIndex 0. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

Os possíveis valores para `sub-type` são:

`iamFleetRoleInvalid`  
A frota spot não tem as permissões necessárias para executar ou encerrar uma instância.

`allLaunchSpecsTemporarilyBlacklisted`  
Nenhuma das configurações é válida e várias tentativas de executar instâncias falharam. Para obter mais informações, consulte a descrição do evento.

`spotInstanceCountLimitExceeded`  
Você atingiu o limite do número de Instâncias spot que você pode executar.

`spotFleetRequestConfigurationInvalid`  
A configuração não é válida. Para obter mais informações, consulte a descrição do evento.

# Tutoriais para o EC2 Fleet
<a name="fleet-tutorials"></a>

Há diferentes maneiras de configurar um EC2 Fleet. A configuração a escolher depende do seu caso de uso específico.

Os tutoriais a seguir abordam alguns dos possíveis casos de uso e fornecem as tarefas necessárias para implementá-los.


| Caso de uso | Link para o tutorial | 
| --- | --- | 
|  **Use a ponderação de instâncias para gerenciar a disponibilidade e performance do EC2 Fleet.** Com a ponderação de instâncias, você atribui um peso a cada tipo de instância no EC2 Fleet para representar sua capacidade computacional e a performance relativa entre elas. Com base nos pesos, a frota pode usar qualquer combinação dos tipos de instância especificados, desde que possa atender à capacidade de destino desejada.  | [Tutorial: configurar o EC2 Fleet para usar ponderação de instâncias](ec2-fleet-instance-weighting-walkthrough.md) | 
|  **Use a capacidade sob demanda para garantir a disponibilidade durante os períodos de pico, mas se beneficie da capacidade spot adicional a um custo menor.** Configure o EC2 Fleet para usar instâncias sob demanda como capacidade principal para garantir a capacidade disponível durante os períodos de pico. Além disso, aloque alguma capacidade para as instâncias spot para se beneficiar de preços reduzidos, tendo em mente que as instâncias spot poderão ser interrompidas caso o Amazon EC2 precise da capacidade de volta.  | [Tutorial: configurar o EC2 Fleet para usar instâncias sob demanda como a capacidade principal](ec2-fleet-on-demand-walkthrough.md) | 
|  **Use as reservas de capacidade para reservar capacidade computacional para as instâncias sob demanda.** Configure o EC2 Fleet para usar primeiro reservas de capacidade `targeted` ao executar instâncias sob demanda. Se você tem requisitos rígidos de capacidade e está executando workloads essenciais para os negócios que exigem um certo nível de garantia de capacidade a longo ou curto prazo, recomendamos que você crie uma reserva de capacidade para garantir que sempre tenha acesso à capacidade do Amazon EC2 quando precisar, pelo tempo que precisar.  | [Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md) | 
|  **Use blocos de capacidade para reservar instâncias de GPU muito procuradas por suas workloads de ML.** Configure o EC2 Fleet para executar instâncias em blocos de capacidade.  | [Tutorial: configurar o EC2 Fleet para executar instâncias em blocos de capacidade](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md) | 
|  **Use reservas de capacidade interrompíveis para redirecionar temporariamente a capacidade ociosa em toda a sua organização da AWS e reduzir os custos.** Configure o EC2 Fleet para executar instâncias em reservas de capacidade interrompíveis, as quais representam a capacidade de reserva em sua organização da AWS. Os proprietários da capacidade podem reivindicar a capacidade a qualquer momento. Uma vez reivindicada, o EC2 encerra as instâncias após um aviso de 2 minutos.  | [Tutorial: configurar o EC2 Fleet para executar instâncias em reservas de capacidade interrompíveis](ec2-fleet-launch-instances-interruptible-cr-walkthrough.md) | 

# Tutorial: configurar o EC2 Fleet para usar ponderação de instâncias
<a name="ec2-fleet-instance-weighting-walkthrough"></a>

Este tutorial usa uma empresa fictícia chamada Example Corp para ilustrar o processo de solicitação de uma Frota do EC2 usando o peso da instância.

## Objetivo
<a name="ec2-fleet-instance-weighting-walkthrough-objective"></a>

A Exemplo Corp, uma empresa farmacêutica, quer usar a capacidade computacional do Amazon EC2 para fazer a triagem dos compostos químicos que podem ser usados para combater o câncer.

## Planejamento
<a name="ec2-fleet-instance-weighting-walkthrough-planning"></a>

Primeiro, a Exemplo Corp analisa as [Melhores práticas de spot](https://aws.amazon.com/ec2/spot/getting-started/#bestpractices). Em seguida, a Exemplo Corp determina os requisitos para a Frota do EC2.

**Tipos de instância**  
A Exemplo Corp tem uma aplicação de uso intenso de memória e recursos de computação que funciona melhor com, pelo menos, 60 GB de memória e oito CPUs virtuais (vCPUs). Eles querem maximizar esses recursos para a aplicação com o menor preço possível. A Exemplo Corp decide que qualquer um dos seguintes tipos de instância do EC2 atenderá às suas necessidades:


| Tipo de instância | Memória (GiB) | vCPUs | 
| --- | --- | --- | 
|  r3.2xlarge  |  61  |  8  | 
|  r3.4xlarge  |  122  |  16  | 
|  r3.8xlarge  |  244  |  32  | 

**Capacidade de destino em unidades**  
Com o peso da instância, a capacidade de destino pode igualar um número de instâncias (o padrão) ou uma combinação de fatores, como núcleos (vCPUs), memória (GiB) e armazenamento (GB). Considerando a base para sua aplicação (60 GB de RAM e oito vCPUs) como uma unidade, a Exemplo Corp decide que 20 vezes essa quantidade atenderá às suas necessidades. Então, a empresa define a capacidade de destino da solicitação do EC2 Fleet como 20 unidades.

**Pesos das instâncias**  
Depois de determinar a capacidade de destino, a Exemplo Corp calcula os pesos das instâncias. Para calcular o peso para cada tipo de instância, eles determinam as unidades de cada tipo de instância que são necessárias para atingir a capacidade de destino da seguinte forma:
+ r3.2xlarge (61,0 GB, 8 vCPUs) = 1 unidade de 20
+ r3.4xlarge (122,0 GB, 16 vCPUs) = 2 unidades de 20
+ r3.8xlarge (244,0 GB, 32 vCPUs) = 4 unidades de 20

Portanto, a Exemplo Corp atribui os pesos de instância 1, 2 e 4 às respectivas configurações de execução na solicitação de Frota do EC2.

**Preço por hora**  
A Exemplo Corp usa o [Preço sob demanda](https://aws.amazon.com/ec2/pricing/) por hora de instância como o ponto inicial de preço. Eles também podem usar os preços spot recentes ou uma combinação dos dois. Para calcular o preço por hora, eles dividem o preço inicial por hora de instância pelo peso. Por exemplo:


| Tipo de instância | Preço sob demanda | Peso da instância | Preço por hora | 
| --- | --- | --- | --- | 
|  r3.2xLarge  |  0,7 USD  |  1  |  0,7 USD  | 
|  r3.4xLarge  |  1,4 USD  |  2  |  0,7 USD  | 
|  r3.8xLarge  |  \$12,8  |  4  |  0,7 USD  | 

A Exemplo Corp pode usar um preço global por hora de 0,7 USD e ser competitiva para todos os três tipos de instância. Eles também podem usar um preço global por hora de 0,7 USD e um preço específico por hora de 0,9 USD na especificação de execução `r3.8xlarge`.

## Verificar permissões
<a name="ec2-fleet-instance-weighting-walkthrough-permissions"></a>

Antes de criar uma Frota do EC2, a Exemplo Corp verifica se ela tem uma função do IAM com as permissões necessárias. Para obter mais informações, consulte [Pré-requisitos da Frota do EC2](ec2-fleet-prerequisites.md).

## Criar um modelo de execução
<a name="ec2-fleet-instance-weighting-create-launch-template"></a>

Em seguida, a Exemplo Corp cria um modelo de execução. O ID do modelo de execução é usado na próxima etapa. Para obter mais informações, consulte [Criar um modelo de execução do Amazon EC2](create-launch-template.md).

## Criar a Frota do EC2
<a name="ec2-fleet-instance-weighting-walkthrough-request"></a>

A Example Corp cria um arquivo, `config.json`, com a seguinte configuração para sua Frota do EC2: No exemplo a seguir, substitua os identificadores de recursos pelos seus identificadores de recursos.

```
{ 
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851", 
                "Version": "1"
            }, 
            "Overrides": [
                {
                    "InstanceType": "r3.2xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 1
                },
                {
                    "InstanceType": "r3.4xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 2
                },
                {
                    "InstanceType": "r3.8xlarge", 
                    "MaxPrice": "0.90", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 4
                }
            ]
        }
    ], 
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20, 
        "DefaultTargetCapacityType": "spot"
    }
}
```

A Example Corp cria a Frota do EC2 usando o seguinte comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html):

```
aws ec2 create-fleet --cli-input-json file://config.json
```

Para obter mais informações, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md).

## Atendimento
<a name="ec2-fleet-instance-weighting-walkthrough-fulfillment"></a>

A estratégia de alocação determina de quais grupos de capacidade spot os Instâncias spot procedem.

Com a estratégia `lowest-price` (que é uma estratégia padrão), as Instâncias spot vêm do grupo com o menor preço spot por unidade no momento do atendimento. Para fornecer 20 unidades de capacidade, a Frota do EC2 executa 20 instâncias `r3.2xlarge` (20 dividido por 1), 10 instâncias `r3.4xlarge` (20 dividido por 2) ou 5 instâncias `r3.8xlarge` (20 dividido por 4).

Se a Exemplo Corp usasse a estratégia `diversified`, as Instâncias spot viriam dos três grupos. A Frota do EC2 executaria seis instâncias `r3.2xlarge` (que fornecem 6 unidades), três instâncias `r3.4xlarge` (que fornecem 6 unidades), duas instâncias `r3.8xlarge` (que fornecem 8 unidades), totalizando 20 unidades.

# Tutorial: configurar o EC2 Fleet para usar instâncias sob demanda como a capacidade principal
<a name="ec2-fleet-on-demand-walkthrough"></a>

Este tutorial usa uma empresa fictícia chamada ABC Online para ilustrar o processo de solicitação de uma Frota do EC2 com opção sob demanda como capacidade principal e capacidade spot (se disponível).

## Objetivo
<a name="ec2-fleet-on-demand-walkthrough-objective"></a>

A ABC Online, uma empresa de entrega para restaurantes, quer provisionar a capacidade do Amazon EC2 entre os tipos de instância do EC2 e as opções de compra para atingir a escala, a performance e o custo desejados.

## Plano
<a name="ec2-fleet-on-demand-walkthrough-planning"></a>

A ABC Online precisa de uma capacidade fixa para operar durante períodos de pico, mas gostaria de se beneficiar de uma capacidade adicional com custo mais baixo. A empresa determina os seguintes requisitos para EC2 Fleet:
+ Capacidade de instância sob demanda: a ABC Online requer 15 instâncias sob demanda para garantir a acomodação do tráfego em períodos de pico.
+ Capacidade de instâncias spot: para aprimorar a performance, mas com um custo mais baixo, a ABC Online planeja provisionar cinco instâncias spot.

## Verificar permissões
<a name="ec2-fleet-on-demand-walkthrough-permissions"></a>

Antes de criar uma Frota do EC2, a ABC Online verifica se ela tem uma função do IAM com as permissões necessárias. Para obter mais informações, consulte [Pré-requisitos da Frota do EC2](ec2-fleet-prerequisites.md).

## Criar um modelo de execução
<a name="ec2-fleet-on-demand-walkthrough-create-launch-template"></a>

A ABC Online cria um modelo de execução. O ID do modelo de execução é usado na próxima etapa. Para obter mais informações, consulte [Criar um modelo de execução do Amazon EC2](create-launch-template.md).

## Criar a Frota do EC2
<a name="ec2-fleet-on-demand-walkthrough-request"></a>

A ABC Online cria um arquivo, `config.json`, com a seguinte configuração para sua Frota do EC2. No exemplo a seguir, substitua os identificadores de recursos pelos seus identificadores de recursos.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851",
                "Version": "2"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity":15,
        "DefaultTargetCapacityType": "spot"
    }
}
```

A ABC Online cria a Frota do EC2 usando o seguinte comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html):

```
aws ec2 create-fleet --cli-input-json file://config.json
```

Para obter mais informações, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md).

## Atendimento
<a name="ec2-fleet-on-demand-walkthrough-fulfillment"></a>

A estratégia de alocação determina que a capacidade sob demanda seja sempre cumprida, enquanto o saldo da capacidade de destino seja atendido como spot se houver capacidade e disponibilidade.

# Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas
<a name="ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough"></a>

Este tutorial orienta você por todas as etapas que você deve executar para que sua Frota do EC2 inicie Instâncias sob demanda nas Reservas de Capacidade `targeted`.

Você aprenderá a configurar uma frota para usar as Reservas de Capacidade sob demanda `targeted` primeiro ao iniciar Instâncias sob demanda. Você também aprenderá a configurar a frota para que, quando a capacidade total de destino sob demanda exceder o número de Reservas de Capacidade não utilizadas disponíveis, a frota use a estratégia de alocação especificada para selecionar os grupos de instâncias nos quais iniciar a capacidade de destino restante.

**Configuração da Frota do EC2**

Nesse tutorial, a frota é configurada da seguinte forma:
+ Capacidade de destino: 10 Instâncias sob demanda
+ Total de Reservas de Capacidade `targeted` não utilizadas: 6 (menor que a capacidade de destino sob demanda da frota de 10 Instâncias sob demanda)
+ Número de grupos de Reservas de capacidade: 2 (`us-east-1a` e `us-east-1b`)
+ Número de Reservas de Capacidade por grupo: 3
+ Estratégia de alocação sob demanda: `lowest-price` (Quando o número de Reservas de Capacidade não utilizadas for menor que a capacidade de destino sob demanda, a frota determina os grupos nos quais iniciar a capacidade sob demanda restante com base na estratégia de alocação sob demanda.)

  Observe que você também pode usar a estratégia de alocação `prioritized` em vez da estratégia de alocação `lowest-price`.

**Para iniciar as Instâncias sob demanda em Reservas de Capacidade `targeted`, você deve executar uma série de etapas, da seguinte forma:**
+ [Etapa 1: Criar Reservas de Capacidade](#ec2-fleet-odcr-step1)
+ [Etapa 2: Criar um grupo de recursos de Reservas de capacidade](#ec2-fleet-odcr-step2)
+ [Etapa 3: Adicionar as Reservas de Capacidade ao grupo de recursos Reservas de Capacidade](#ec2-fleet-odcr-step3)
+ [(Opcional) Etapa 4: Exibir Reservas de Capacidade no grupo de recursos](#ec2-fleet-odcr-step4)
+ [Etapa 5: Criar um modelo de inicialização que especifique que a Reserva de Capacidade se destina a um grupo de recursos específico](#ec2-fleet-odcr-step5)
+ [(Opcional) Etapa 6: Descrever o modelo de inicialização](#ec2-fleet-odcr-step6)
+ [Etapa 7: Criar uma Frota EC2](#ec2-fleet-odcr-step7)
+ [(Opcional) Etapa 8: Exibir o número de Reservas de Capacidade não utilizadas restantes](#ec2-fleet-odcr-step8)

## Etapa 1: Criar Reservas de Capacidade
<a name="ec2-fleet-odcr-step1"></a>

Use o comando [Create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) para criar as Reservas de Capacidade, três para `us-east-1a` e outras três para `us-east-1b`. Exceto para a Zona de disponibilidade, os outros atributos das Reservas de Capacidade são idênticos.

**3 Reservas de Capacidade no `us-east-1a`**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1a \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

Exemplo de ID de reserva de capacidade resultante

```
cr-1234567890abcdef1
```

**3 Reservas de Capacidade no `us-east-1b`**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1b \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

Exemplo de ID de reserva de capacidade resultante

```
cr-54321abcdef567890
```

## Etapa 2: Criar um grupo de recursos de Reservas de capacidade
<a name="ec2-fleet-odcr-step2"></a>

Use o serviço `resource-groups` e o comando [create-group](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/create-group.html) para criar um grupo de recursos de Reservas de capacidade. Neste exemplo, o grupo de recursos é chamado de `my-cr-group`. Para obter informações sobre por que você deve criar um grupo de recursos, consulte [Use reservas de capacidade para reservar capacidade sob demanda na frota do EC2](ec2-fleet-on-demand-capacity-reservations.md).

```
aws resource-groups create-group \
    --name my-cr-group \
    --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
```

## Etapa 3: Adicionar as Reservas de Capacidade ao grupo de recursos Reservas de Capacidade
<a name="ec2-fleet-odcr-step3"></a>

Use o serviço `resource-groups` e o comando [group-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/group-resources.html) para adicionar as Reservas de Capacidade que você criou na Etapa 1 para o grupo de recursos Reservas de Capacidade. Observe que você deve fazer referência às Reservas de Capacidade sob demanda por seus ARNs.

```
aws resource-groups group-resources \
    --group my-cr-group \
    --resource-arns \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890
```

Exemplo de saída

```
{
   "Failed": [], 
   "Succeeded": [ 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" 
   ] 
}
```

## (Opcional) Etapa 4: Exibir Reservas de Capacidade no grupo de recursos
<a name="ec2-fleet-odcr-step4"></a>

Use o serviço `resource-groups` e o comando [list-group-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/list-group-resources.html) para descrever opcionalmente o grupo de recursos para visualizar suas Reservas de Capacidade.

```
aws resource-groups list-group-resources --group my-cr-group
```

Exemplo de saída

```
{
    "ResourceIdentifiers": [
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1"
        },
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
        }
    ]
}
```

## Etapa 5: Criar um modelo de inicialização que especifique que a Reserva de Capacidade se destina a um grupo de recursos específico
<a name="ec2-fleet-odcr-step5"></a>

Use o comando [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) para criar um modelo de execução no qual especifique as Reservas de Capacidade a serem usadas. Neste exemplo, a frota usará Reservas de Capacidade `targeted`, que foram adicionadas a um grupo de recursos. Portanto, os dados do modelo de inicialização especificam que a Reserva de Capacidade se destina a um grupo de recursos específico. Neste exemplo, o modelo de inicialização é chamado de `my-launch-template`. 

```
aws ec2 create-launch-template \
    --launch-template-name my-launch-template \
    --launch-template-data \
        '{"ImageId": "ami-0123456789example",
          "CapacityReservationSpecification": 
            {"CapacityReservationTarget": 
                { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" }
            }
        }'
```

## (Opcional) Etapa 6: Descrever o modelo de inicialização
<a name="ec2-fleet-odcr-step6"></a>

Use o comando [describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) para descrever opcionalmente o modelo de execução para visualizar a configuração.

```
aws ec2 describe-launch-template-versions --launch-template-name my-launch-template
```

Exemplo de saída

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-01234567890example",
            "LaunchTemplateName": "my-launch-template",
            "VersionNumber": 1,
            "CreateTime": "2021-01-19T20:50:19.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0947d2ba12ee1ff75",
                "CapacityReservationSpecification": {
                    "CapacityReservationTarget": {
                        "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group"
                    }
                }
            }
        }
    ]
}
```

## Etapa 7: Criar uma Frota EC2
<a name="ec2-fleet-odcr-step7"></a>

Crie uma EC2 Fleet que especifique as informações de configuração para as instâncias que serão iniciadas. A configuração de frota EC2 a seguir mostra somente as configurações pertinentes a esse exemplo. O modelo de inicialização `my-launch-template` é o modelo de inicialização criado na Etapa 5. Há dois grupos de instâncias, cada um com o mesmo tipo de instância (`c5.xlarge`), mas com diferentes zonas de disponibilidade (`us-east-1a` e `us-east-1b`). O preço dos grupos de instâncias é o mesmo porque o preço é definido para a região, não para a Zona de Disponibilidade. A capacidade de destino total é de 10 e o tipo de capacidade de destino padrão é `on-demand`. A estratégia de alocação sob demanda é `lowest-price`. A estratégia de uso para Reservas de Capacidade é `use-capacity-reservations-first`.

**nota**  
O tipo da frota deve ser `instant`. Outros tipos de frota não são compatíveis com `use-capacity-reservations-first`.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

Depois de criar a frota `instant` usando a configuração anterior, as 10 instâncias a seguir serão iniciadas para atender à capacidade de destino:
+ As Reservas de Capacidade são usadas primeiro para iniciar 6 Instâncias sob demanda da seguinte maneira:
  + 3 Instâncias sob demanda são iniciadas nas 3 `c5.xlarge` Reservas de Capacidade `targeted` no `us-east-1a`
  + 3 Instâncias sob demanda são iniciadas nas 3 `c5.xlarge` Reservas de Capacidade `targeted` no `us-east-1b`
+ Para atender à capacidade de destino, 4 Instâncias sob demanda adicionais são iniciadas na capacidade sob demanda regular de acordo com a estratégia de alocação sob demanda, que é `lowest-price` neste exemplo. No entanto, como os grupos têm o mesmo preço (porque o preço é por região e não por zona de disponibilidade), a frota inicia as 4 Instâncias sob demanda restantes em qualquer um dos grupos.

## (Opcional) Etapa 8: Exibir o número de Reservas de Capacidade não utilizadas restantes
<a name="ec2-fleet-odcr-step8"></a>

Depois que a frota for lançada, você poderá, opcionalmente, executar [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) para ver quantas Reservas de Capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de Capacidade foram usadas em todos os grupos.

```
{ "CapacityReservationId":  "cr-111",
     "InstanceType":  "c5.xlarge",  
     "AvailableInstanceCount":  0
}

 { "CapacityReservationId":  "cr-222",
     "InstanceType":  "c5.xlarge", 
     "AvailableInstanceCount":  0
}
```

# Tutorial: configurar o EC2 Fleet para executar instâncias em blocos de capacidade
<a name="ec2-fleet-launch-instances-capacity-blocks-walkthrough"></a>

Este tutorial mostra todas as etapas que você deve seguir para que a Frota do EC2 inicie Instâncias sob demanda em blocos de capacidade. 

Na maioria dos casos, a capacidade de destino da solicitação do EC2 Fleet deve ser menor ou igual à capacidade disponível na reserva do bloco de capacidade pretendida. As solicitações de capacidade pretendida que excederem os limites da reserva de bloco de capacidade não serão atendidas. Se a solicitação da capacidade de destino exceder os limites da reserva de bloco de capacidade, você receberá uma `Insufficient Capacity Exception` para a capacidade que exceder os limites da reserva de bloco de capacidade.

**nota**  
Para blocos de capacidade, a Frota do EC2 não recorrerá à inicialização de instâncias sob demanda para atender ao restante da capacidade pretendida.

Se a Frota do EC2 não puder atender à capacidade pretendida solicitada em uma reserva de bloco de capacidade disponível, a Frota do EC2 atenderá ao máximo de capacidade possível e retornará as instâncias que não conseguiu iniciar. Você pode repetir a chamada para a Frota do EC2 até que todas as instâncias sejam provisionadas.

Depois de configurar a solicitação da Frota do EC2, você deve esperar até a data de início da reserva do bloco de capacidade. Caso faça solicitações ao EC2 Fleet para executar um bloco de capacidade que ainda não foi iniciado, você receberá um `Insufficient Capacity Error`.

Depois que a reserva de bloco de capacidade se tornar ativa, você poderá fazer chamadas à API da Frota do EC2 e provisionar as instâncias no bloco de capacidade segundo os parâmetros selecionados. As instâncias em execução no bloco de capacidade continuam em execução até que você as interrompa ou encerre manualmente, ou até que o Amazon EC2 encerre as instâncias quando a reserva do bloco de capacidade terminar.

Para obter mais informações sobre blocos de capacidade, consulte [Blocos de capacidade para ML](ec2-capacity-blocks.md).

**Considerações**
+ Somente solicitações do EC2 Fleet do tipo `instant` são compatíveis para executar instâncias em blocos de capacidade. Para obter mais informações, consulte [Configurar um EC2 Fleet do tipo instant](instant-fleet.md).
+ Não é possível ter vários blocos de capacidade na mesma solicitação do EC2 Fleet.
+ Não é possível usar `OnDemandTargetCapacity` ou `SpotTargetCapacity` e, ao mesmo tempo, definir o `capacity-block` como `DefaultTargetCapacity`.
+ Se o `DefaultTargetCapacityType` estiver definido como `capacity-block`, você não poderá fornecer `OnDemandOptions::CapacityReservationOptions`. Uma exceção ocorrerá.

**Para configurar um EC2 Fleet para executar instâncias em blocos de capacidade**

1. **Crie um modelo de execução.**

   No modelo de execução, faça o seguinte:
   + Para `InstanceMarketOptionsRequest`, defina `MarketType` como `capacity-block`.
   + Para direcionar a reserva do bloco de capacidade, para `CapacityReservationID`, especifique o ID da reserva do bloco de capacidade.

   Anote o nome e a versão do modelo de execução. Você usará essas informações na próxima etapa.

   Para obter mais informações sobre como criar um modelo de execução, consulte [Criar um modelo de execução do Amazon EC2](create-launch-template.md). 

1. **Configure o EC2 Fleet.**

   Crie um arquivo, `config.json`, com a configuração do EC2 Fleet a seguir. No exemplo a seguir, substitua os identificadores de recursos pelos seus identificadores de recursos. 

   Para obter mais informações sobre como configurar um EC2 Fleet, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md).

   ```
   { 
       "LaunchTemplateConfigs": [
           {
               "LaunchTemplateSpecification": {
                   "LaunchTemplateName": "CBR-launch-template", 
                   "Version": "1"
               }, 
               "Overrides": [
                   {
                       "InstanceType": "p5.48xlarge", 
                       "AvailabilityZone": "us-east-1a"   
                   },
               ]
           }
       ], 
       "TargetCapacitySpecification": {
           "TotalTargetCapacity": 10, 
           "DefaultTargetCapacityType": "capacity-block"
       },
       "Type": "instant"
   }
   ```

1. **Execute a frota.**

   Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) a seguir.

   ```
   aws ec2 create-fleet --cli-input-json file://config.json
   ```

   Para obter mais informações, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md#create-ec2-fleet-procedure).

# Tutorial: configurar o EC2 Fleet para executar instâncias em reservas de capacidade interrompíveis
<a name="ec2-fleet-launch-instances-interruptible-cr-walkthrough"></a>

Este tutorial mostra todas as etapas que você deve seguir para que o EC2 Fleet execute instâncias sob demanda em reservas de capacidade interrompíveis.

As reservas de capacidade interrompíveis representam a capacidade ociosa emprestada a você pelos proprietários de reservas de capacidade sob demanda em sua organização da AWS. Essas reservas são adequadas para workloads interrompíveis porque o proprietário da capacidade pode reivindicar a capacidade a qualquer momento com um aviso de interrupção de 2 minutos, período após o qual o EC2 encerra as instâncias. Para obter mais informações sobre reservas de capacidade interrompíveis, consulte [Reservas de capacidade](interruptible-capacity-reservations.md).

A capacidade de destino da solicitação do EC2 Fleet deve ser menor ou igual à capacidade disponível na reserva de capacidade interrompível desejada. Se a solicitação de capacidade exceder a capacidade disponível de sua reserva de capacidade interrompível, o EC2 Fleet iniciará o máximo de instâncias possível e relatará as instâncias executadas na resposta da API.

As instâncias em execução em uma reserva de capacidade interrompível continuarão em execução até que você as interrompa ou encerre manualmente, ou até que o proprietário da capacidade reivindique a capacidade. Quando o proprietário da capacidade reivindica a capacidade, o Amazon EC2 envia uma notificação do Amazon EventBridge 2 minutos antes de encerrar as instâncias.

## Considerações
<a name="ec2-fleet-interruptible-cr-considerations"></a>
+ Somente solicitações do EC2 Fleet do tipo `instant` são compatíveis para executar instâncias em reservas de capacidade interrompíveis.
+ Não é possível usar `OnDemandTargetCapacity` ou `SpotTargetCapacity` e, ao mesmo tempo, definir `reserved-capacity` como `DefaultTargetCapacityType`.
+ Quando você especifica vários modelos de execução, cada um visando uma reserva de capacidade interrompível diferente, o EC2 Fleet provisiona instâncias em todas as reservas correspondentes.
+ Para reservas de capacidade interrompíveis, o EC2 Fleet não recorrerá à execução de instâncias sob demanda ou instâncias spot para atender ao restante da capacidade pretendida.

## Verificar permissões
<a name="ec2-fleet-interruptible-cr-verify-permissions"></a>

Antes de criar um EC2 Fleet, verifique se você tem um perfil do IAM com as permissões necessárias. Para obter mais informações, consulte [Pré-requisitos da Frota do EC2](ec2-fleet-prerequisites.md).

Para iniciar instâncias em uma reserva de capacidade interrompível, é necessário executar as seguintes etapas:

## Etapa 1: Criar um modelo de execução
<a name="ec2-fleet-interruptible-cr-step1"></a>

Use o comando [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) para criar um modelo de execução que especifique a reserva de capacidade interrompível a ser usada. No modelo de execução, defina `MarketType` como `interruptible-capacity-reservation` e especifique o `CapacityReservationId` da sua reserva de capacidade interrompível.

Exemplo de configuração de modelo de execução:

```
{
    "LaunchTemplateName": "interruptible-cr-launch-template",
    "LaunchTemplateData": {
        "InstanceType": "m5.large",
        "ImageId": "ami-0abcdef1234567890",
        "CapacityReservationSpecification": {
            "CapacityReservationTarget": {
                "CapacityReservationId": "cr-0123456789abcdef0"
            }
        },
        "InstanceMarketOptions": {
            "MarketType": "interruptible-capacity-reservation"
        }
    }
}
```

Exemplo de saída

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-0123456789example",
        "LaunchTemplateName": "interruptible-cr-launch-template",
        "CreateTime": "2026-03-12T10:00:00.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

Para obter mais informações, consulte [Criar um modelo de execução do Amazon EC2](create-launch-template.md).

## Etapa 2: configurar o EC2 Fleet
<a name="ec2-fleet-interruptible-cr-step2"></a>

Crie um arquivo de configuração para o EC2 Fleet que especifique o modelo de execução e a capacidade de destino. A configuração a seguir usa o modelo de execução `interruptible-cr-launch-template` que você criou na Etapa 1.

É necessário especificar `ReservedCapacityOptions` com `ReservationType` definido para `interruptible-capacity-reservation` ao usar `reserved-capacity` como o `DefaultTargetCapacityType`.

Crie um arquivo chamado `config.json` com o seguinte conteúdo:

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "interruptible-cr-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "reserved-capacity"
    },
    "ReservedCapacityOptions": {
        "ReservationType": ["interruptible-capacity-reservation"]
    },
    "Type": "instant"
}
```

Principais parâmetros de configuração:


| Parameter | Descrição | 
| --- | --- | 
| DefaultTargetCapacityType | Defina como reserved-capacity para indicar que as instâncias devem ser executadas na capacidade reservada. | 
| ReservedCapacityOptions | Especifica o tipo de capacidade reservada. Para reservas de capacidade interrompíveis, defina ReservationType como ["interruptible-capacity-reservation"]. | 
| Type | Deve ser definida como . instant. Somente frotas instantâneas são aceitas para reservas de capacidade interrompíveis. | 

## Etapa 3: iniciar a frota e visualizar os resultados
<a name="ec2-fleet-interruptible-cr-step3"></a>

Use o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) para criar a frota:

```
aws ec2 create-fleet \
    --cli-input-json file://config.json
```

Depois de criar a frota `instant` usando a configuração anterior, o EC2 Fleet executa 10 instâncias na reserva de capacidade interrompível para atender à capacidade de destino.

**nota**  
Se a frota não puder atender à capacidade total pretendida, a resposta incluirá as instâncias que foram executadas e quaisquer erros de capacidade não atendida.

Exemplo de saída

```
{
    "FleetId": "fleet-12345678-1234-1234-1234-123456789012",
    "Instances": [
        {
            "LaunchTemplateAndOverrides": {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            },
            "Lifecycle": "interruptible-capacity-reservation",
            "InstanceIds": [
                "i-0123456789example1",
                "i-0123456789example2",
                "i-0123456789example3",
                "i-0123456789example4",
                "i-0123456789example5",
                "i-0123456789example6",
                "i-0123456789example7",
                "i-0123456789example8",
                "i-0123456789example9",
                "i-0123456789example0"
            ],
            "InstanceType": "m5.large",
            "Platform": "Linux/UNIX"
        }
    ],
    "Errors": []
}
```

Para obter mais informações, consulte [Criar uma Frota do EC2.](create-ec2-fleet.md).

## Limpeza
<a name="ec2-fleet-interruptible-cr-cleanup"></a>

Para parar de incorrer em cobranças, encerre as instâncias quando elas não forem mais necessárias. Observe que o EC2 também encerra automaticamente as instâncias executadas em uma reserva de capacidade interrompível quando o proprietário da capacidade reivindica a capacidade.

## Recursos relacionados
<a name="ec2-fleet-interruptible-cr-related-resources"></a>
+ [Reservas de capacidade](interruptible-capacity-reservations.md)
+ [Reservar capacidade computacional com reservas de capacidade sob demanda do EC2](ec2-capacity-reservations.md)
+ [Trabalhar com uma frota do EC2](manage-ec2-fleet.md)
+ [Criar uma Frota do EC2.](create-ec2-fleet.md)
+ [Armazenar os parâmetros de execução de instâncias nos modelos de execução do Amazon EC2](ec2-launch-templates.md)

# Exemplo de configurações da CLI para frotas do EC2
<a name="ec2-fleet-examples"></a>

É possível definir a configuração da frota do EC2 em um arquivo JSON e, em seguida, referenciar esse arquivo com o comando [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) para criar a frota, da maneira a seguir:

```
aws ec2 create-fleet --cli-input-json file://file_name.json
```

Os exemplos a seguir ilustram as configurações de inicialização para vários casos de uso de frotas do EC2. Para obter mais informações sobre os parâmetros de configuração, consulte [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html).

**Topics**
+ [Exemplo 1: Executar Instâncias spot como a opção de compra padrão](#ec2-fleet-config1)
+ [Exemplo 2: Executar Instâncias on-demand como a opção de compra padrão](#ec2-fleet-config2)
+ [Exemplo 3: Executar Instâncias on-demand como a capacidade principal](#ec2-fleet-config3)
+ [Exemplo 4: Iniciar Instâncias sob demanda usando várias Reservas de Capacidade](#ec2-fleet-config5)
+ [Exemplo 5: Iniciar Instâncias sob demanda usando Reservas de Capacidade quando a capacidade total de destino for maior que o número de Reservas de Capacidade não utilizadas](#ec2-fleet-config6)
+ [Exemplo 6: Iniciar Instâncias sob demanda usando Reservas de Capacidade direcionadas](#ec2-fleet-config7)
+ [Exemplo 7: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição](#ec2-fleet-config8)
+ [Exemplo 8: iniciar instâncias spot em uma frota otimizada para capacidade](#ec2-fleet-config9)
+ [Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades](#ec2-fleet-config10)
+ [Exemplo 10: iniciar instâncias spot em uma frota otimizada para preço-capacidade](#ec2-fleet-config11)
+ [Exemplo 11: configurar a seleção de tipo de instância baseada em atributos](#ec2-fleet-config12)

Para obter mais exemplos da CLI para frotas do tipo `instant`, consulte [Configurar um EC2 Fleet do tipo instant](instant-fleet.md).

## Exemplo 1: Executar Instâncias spot como a opção de compra padrão
<a name="ec2-fleet-config1"></a>

O exemplo a seguir especifica os parâmetros mínimos necessários em uma Frota do EC2: um modelo de execução, a capacidade de destino e a opção de compra padrão. O modelo de execução é identificado pelo ID do seu modelo de execução e o número da versão. A capacidade de destino da frota é de 2 instâncias, e a opção de compra padrão é `spot`. Isso faz com que a frota execute duas Instâncias spot.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## Exemplo 2: Executar Instâncias on-demand como a opção de compra padrão
<a name="ec2-fleet-config2"></a>

O exemplo a seguir especifica os parâmetros mínimos necessários em uma Frota do EC2: um modelo de execução, a capacidade de destino e a opção de compra padrão. O modelo de execução é identificado pelo ID do seu modelo de execução e o número da versão. A capacidade de destino da frota é de 2 instâncias, e a opção de compra padrão é `on-demand`. Isso faz com que a frota execute duas Instâncias on-demand.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "on-demand"
    }
}
```

## Exemplo 3: Executar Instâncias on-demand como a capacidade principal
<a name="ec2-fleet-config3"></a>

O exemplo a seguir especifica a capacidade total de destino de duas instâncias para a frota e uma capacidade de destino de uma instância sob demanda. A opção de compra padrão é `spot`. A frota executa uma instância sob demanda, conforme especificado, mas precisa executar mais uma instância para atender à capacidade total desejada. A opção de compra para a diferença é calculada como `TotalTargetCapacity` – `OnDemandTargetCapacity` = `DefaultTargetCapacityType`, o que resulta na frota executando uma instância spot.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "OnDemandTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## Exemplo 4: Iniciar Instâncias sob demanda usando várias Reservas de Capacidade
<a name="ec2-fleet-config5"></a>

É possível configurar uma frota para usar Reservas de Capacidade sob demanda primeiro ao iniciar Instâncias on-demand definindo a estratégia de uso para Reservas de Capacidade como `use-capacity-reservations-first`. Este exemplo demonstra como a frota seleciona as Reservas de Capacidade a serem usadas quando há mais Reservas de Capacidade do que o necessário para atender à capacidade de destino.

Neste exemplo, a configuração da frota é a seguinte:
+ Capacidade de destino: 12 Instâncias sob demanda
+ Total de Reservas de Capacidade não utilizadas: 15 (mais do que a capacidade de destino da frota de 12 Instâncias sob demanda)
+ Número de grupos de Reservas de capacidade: 3 (`m5.large`, `m4.xlarge` e `m4.2xlarge`)
+ Número de Reservas de Capacidade por grupo: 5
+ Estratégia de alocação sob demanda: `lowest-price` (Quando há várias Reservas de Capacidade não utilizadas em vários grupos de instâncias, a frota determina os grupos nos quais as Instâncias sob demanda serão iniciadas com base na estratégia de alocação sob demanda.)

  Observe que você também pode usar a estratégia de alocação `prioritized` em vez da estratégia de alocação `lowest-price`.

**Reservas de capacidade**

A conta tem as 15 Reservas de Capacidade não utilizadas a seguir em 3 grupos diferentes. O número de Reservas de Capacidade em cada grupo é indicado por `AvailableInstanceCount`.

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**Configuração da frota**

A configuração de frota a seguir mostra somente as configurações pertinentes a este exemplo. A capacidade de destino total é de 12 e o tipo de capacidade de destino padrão é `on-demand`. A estratégia de alocação sob demanda é `lowest-price`. A estratégia de uso para Reservas de Capacidade é `use-capacity-reservations-first`. 

Neste exemplo, o preço da instância sob demanda é:
+ `m5.large` – 0,096 USD por hora
+ `m4.xlarge` – 0,20 USD por hora
+ `m4.2xlarge` – 0,40 USD por hora

**nota**  
O tipo da frota deve ser do tipo `instant`. Outros tipos de frota não são compatíveis com `use-capacity-reservations-first`.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-abc1234567example",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 12,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant"
}
```

Depois de criar a frota `instant` usando a configuração anterior, as 12 instâncias a seguir serão executadas para atender à capacidade de destino:
+ 5 `m5.large` Instâncias sob demanda em `us-east-1a` – `m5.large` em `us-east-1a` é o preço mais baixo, e há 5 Reservas de Capacidade `m5.large` disponíveis não utilizadas
+ 5 `m4.xlarge` Instâncias sob demanda em `m4.xlarge` – `us-east-1a` em us-east-1a é o próximo preço mais baixo, e há 5 Reservas de Capacidade `m4.xlarge` não utilizadas disponíveis
+ 2 Instâncias sob demanda `m4.2xlarge` em us-east-1a – `m4.2xlarge` em `us-east-1a` é o terceiro preço mais baixo, e existem 5 Reservas de Capacidade `m4.2xlarge` não utilizadas disponíveis, das quais somente 2 são necessárias para atender à capacidade de destino

Depois que a frota for lançada, será possível executar [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) para ver quantas Reservas de capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de Capacidade `m5.large` e `m4.xlarge` foram usadas, com 3 Reservas de Capacidade `m4.2xlarge` restantes não utilizadas.

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 3
}
```

## Exemplo 5: Iniciar Instâncias sob demanda usando Reservas de Capacidade quando a capacidade total de destino for maior que o número de Reservas de Capacidade não utilizadas
<a name="ec2-fleet-config6"></a>

É possível configurar uma frota para usar Reservas de Capacidade sob demanda primeiro ao iniciar Instâncias on-demand definindo a estratégia de uso para Reservas de Capacidade como `use-capacity-reservations-first`. Este exemplo demonstra como a frota seleciona os grupos de instâncias nos quais iniciar Instâncias sob demanda quando a capacidade total de destino excede o número de Reservas de Capacidade não utilizadas disponíveis.

Neste exemplo, a configuração da frota é a seguinte:
+ Capacidade de destino: 16 Instâncias sob demanda
+ Total de Reservas de Capacidade não utilizadas: 15 (menor que a capacidade de destino da frota de 16 Instâncias sob demanda)
+ Número de grupos de Reservas de capacidade: 3 (`m5.large`, `m4.xlarge` e `m4.2xlarge`)
+ Número de Reservas de Capacidade por grupo: 5
+ Estratégia de alocação sob demanda: `lowest-price` (Quando o número de Reservas de Capacidade não utilizadas for menor que a capacidade de destino sob demanda, a frota determina os grupos nos quais iniciar a capacidade sob demanda restante com base na estratégia de alocação sob demanda.)

  Observe que você também pode usar a estratégia de alocação `prioritized` em vez da estratégia de alocação `lowest-price`.

**Reservas de capacidade**

A conta tem as 15 Reservas de Capacidade não utilizadas a seguir em 3 grupos diferentes. O número de Reservas de Capacidade em cada grupo é indicado por `AvailableInstanceCount`.

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**Configuração da frota**



A configuração de frota a seguir mostra somente as configurações pertinentes a este exemplo. A capacidade de destino total é de 16 e o tipo de capacidade de destino padrão é `on-demand`. A estratégia de alocação sob demanda é `lowest-price`. A estratégia de uso para Reservas de Capacidade é `use-capacity-reservations-first`. 

Neste exemplo, o preço da instância sob demanda é:
+ m5.large – 0,096 USD por hora
+ m4.xlarge – 0,20 USD por hora
+ m4.2xlarge – 0,40 USD por hora

**nota**  
O tipo da frota deve ser `instant`. Outros tipos de frota não são compatíveis com `use-capacity-reservations-first`.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 16,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant",
}
```

Depois de criar a frota `instant` usando a configuração anterior, as 16 instâncias a seguir serão executadas para atender à capacidade de destino:
+ 6 Instâncias sob demanda `m5.large` em `us-east-1a` – `m5.large` em `us-east-1a` é o preço mais baixo, e há 5 Reservas de Capacidade `m5.large` disponíveis não utilizadas As Reservas de Capacidade são usadas primeiro para iniciar 5 Instâncias sob demanda. Depois das Reservas de Capacidade `m4.xlarge` e `m4.2xlarge` restantes serem usadas, para atender à capacidade de destino, uma instância sob demanda adicional é iniciada, de acordo com a estratégia de alocação sob demanda, que é `lowest-price` neste exemplo.
+ 5 `m4.xlarge` Instâncias sob demanda em `us-east-1a` – `m4.xlarge` em `us-east-1a` é o próximo preço mais baixo, e há 5 Reservas de Capacidade `m4.xlarge` disponíveis não utilizadas
+ 5 `m4.2xlarge` Instâncias sob demanda em `us-east-1a` – `m4.2xlarge` em `us-east-1a` é o terceiro preço mais baixo, e há 5 Reservas de Capacidade `m4.2xlarge` disponíveis não utilizadas

Depois que a frota for lançada, será possível executar [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) para ver quantas Reservas de capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de capacidade foram usadas em todos os grupos.

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 0
}
```

## Exemplo 6: Iniciar Instâncias sob demanda usando Reservas de Capacidade direcionadas
<a name="ec2-fleet-config7"></a>

É possível configurar uma frota para usar Reservas de Capacidade `targeted` sob demanda primeiro ao iniciar Instâncias sob demanda definindo a estratégia de uso para Reservas de Capacidade como `use-capacity-reservations-first`. Este exemplo demonstra como iniciar Instâncias sob demanda nas Reservas de Capacidade `targeted`, com os atributos das Reservas de Capacidade sendo os mesmos, exceto para suas Zonas de Disponibilidade (`us-east-1a` e `us-east-1b`). Ele também demonstra como a frota seleciona os grupos de instâncias nos quais iniciar Instâncias sob demanda quando a capacidade total de destino excede o número de Reservas de Capacidade não utilizadas disponíveis.

Neste exemplo, a configuração da frota é a seguinte:
+ Capacidade de destino: 10 Instâncias sob demanda
+ Total de Reservas de Capacidade `targeted` não utilizadas: 6 (menor que a capacidade de destino sob demanda da frota de 10 Instâncias sob demanda)
+ Número de grupos de Reservas de capacidade: 2 (`us-east-1a` e `us-east-1b`)
+ Número de Reservas de Capacidade por grupo: 3
+ Estratégia de alocação sob demanda: `lowest-price` (Quando o número de Reservas de Capacidade não utilizadas for menor que a capacidade de destino sob demanda, a frota determina os grupos nos quais iniciar a capacidade sob demanda restante com base na estratégia de alocação sob demanda.)

  Observe que você também pode usar a estratégia de alocação `prioritized` em vez da estratégia de alocação `lowest-price`.

Para obter uma demonstração dos procedimentos que você deve executar para realizar este exemplo, consulte [Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md).

**Reservas de capacidade**

A conta tem as 6 Reservas de Capacidade não utilizadas a seguir em 2 grupos diferentes. Neste exemplo, os grupos diferem de acordo com suas Zonas de disponibilidade. O número de Reservas de Capacidade em cada grupo é indicado por `AvailableInstanceCount`.

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "c5.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "c5.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1b", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**Configuração da frota**

A configuração de frota a seguir mostra somente as configurações pertinentes a este exemplo. A capacidade de destino total é de 10 e o tipo de capacidade de destino padrão é `on-demand`. A estratégia de alocação sob demanda é `lowest-price`. A estratégia de uso para Reservas de Capacidade é `use-capacity-reservations-first`. 

Neste exemplo, o preço da instância sob demanda para `c5.xlarge` em `us-east-1` é 0,17 USD por hora.

**nota**  
O tipo da frota deve ser `instant`. Outros tipos de frota não são compatíveis com `use-capacity-reservations-first`.

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

Depois de criar a frota `instant` usando a configuração anterior, as 10 instâncias a seguir serão iniciadas para atender à capacidade de destino:
+ As Reservas de Capacidade são usadas primeiro para iniciar 6 Instâncias sob demanda da seguinte maneira:
  + 3 Instâncias sob demanda são iniciadas nas 3 `c5.xlarge` Reservas de Capacidade `targeted` no `us-east-1a`
  + 3 Instâncias sob demanda são iniciadas nas 3 `c5.xlarge` Reservas de Capacidade `targeted` no `us-east-1b`
+ Para atender à capacidade de destino, 4 Instâncias sob demanda adicionais são iniciadas na capacidade sob demanda regular de acordo com a estratégia de alocação sob demanda, que é `lowest-price` neste exemplo. No entanto, como os grupos têm o mesmo preço (porque o preço é por região e não por zona de disponibilidade), a frota inicia as 4 Instâncias sob demanda restantes em qualquer um dos grupos.

Depois que a frota for lançada, será possível executar [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) para ver quantas Reservas de capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de capacidade foram usadas em todos os grupos.

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "c5.xlarge",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "c5.xlarge", 
    "AvailableInstanceCount": 0
}
```

## Exemplo 7: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição
<a name="ec2-fleet-config8"></a>

O exemplo a seguir configura a EC2 Fleet para executar uma Instância spot de substituição quando o Amazon EC2 emite uma recomendação de rebalanceamento para uma Instância spot na frota. Para configurar a substituição automática da Instâncias spot, para `ReplacementStrategy`, especifique `launch-before-terminate`. Para configurar o tempo de espera entre o lançamento das novas instâncias spot substitutas até a exclusão automática das instâncias spot antigas, para `termination-delay`, especifique um valor em segundos. Para obter mais informações, consulte [Opções de configuração](ec2-fleet-capacity-rebalance.md#ec2-fleet-capacity-rebalance-config-options).

**nota**  
Recomendamos só usar `launch-before-terminate` se você puder prever quanto tempo os procedimentos de desligamento da instância levarão, de modo que as instâncias antigas só sejam terminadas após a conclusão desses procedimentos. Você é cobrado por todas as instâncias enquanto elas estão sendo executadas.

A eficácia da estratégia de rebalanceamento de capacidade depende do número de grupos de capacidade spot especificados na solicitação de Frota do EC2. Recomendamos que você configure a frota com um conjunto diversificado de tipos de instância e zonas de disponibilidade e para `AllocationStrategy`especifique `capacity-optimized`. Para obter mais informações sobre o que você deve considerar ao configurar uma Frota do EC2 para rebalanceamento de capacidade, consulte [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md).

```
{
    "ExcessCapacityTerminationPolicy": "termination",
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "LaunchTemplate",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "c3.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c4.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c5.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       }
                ] 
          }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 5,
        "DefaultTargetCapacityType": "spot"
    },
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "MaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch-before-terminate",
                "TerminationDelay": "720"
            }
        }
    }
}
```

## Exemplo 8: iniciar instâncias spot em uma frota otimizada para capacidade
<a name="ec2-fleet-config9"></a>

O exemplo a seguir demonstra como configurar uma EC2 Fleet com uma estratégia de alocação spot que otimiza a capacidade. Para otimizar a capacidade, você deve definir `AllocationStrategy` como `capacity-optimized`.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. A capacidade pretendida é de 50 Instâncias spot. A EC2 Fleet tenta iniciar 50 instâncias spot no grupo de capacidade spot com a capacidade ideal para o número de instâncias em execução.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"

    }
}
```

## Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades
<a name="ec2-fleet-config10"></a>

O exemplo a seguir demonstra como configurar uma EC2 Fleet com uma estratégia de alocação spot que otimiza a capacidade enquanto usa a prioridade com base no melhor esforço.

Ao usar a estratégia de alocação `capacity-optimized-prioritized`, você pode usar o parâmetro `Priority` para especificar as prioridades dos grupos de capacidade spot, em que quanto menor o número, maior a prioridade. Você também pode definir a mesma prioridade para vários grupos de capacidade spot se você favorecê-los igualmente. Se você não definir uma prioridade para um grupo, ele será considerado o último em termos de prioridade.

Para priorizar grupos de capacidade spot, você deve definir `AllocationStrategy` como `capacity-optimized-prioritized`. A EC2 Fleet otimizará a capacidade primeiro, mas se empenhará em honrar as prioridades (por exemplo, se honrar as prioridades não afetará significativamente a capacidade da EC2 Fleet de provisionar a capacidade ideal). Essa é uma boa opção para workloads em que a possibilidade de interrupção deve ser minimizada e a preferência por determinados tipos de instância for importante.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. Cada grupo é priorizado, onde quanto menor o número, maior a prioridade. A capacidade pretendida é de 50 Instâncias spot. A EC2 Fleet tenta executar 50 instâncias Spot no grupo de capacidade spot com a maior prioridade com base no melhor esforço, mas otimiza a capacidade em primeiro lugar.

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                        {
                           "InstanceType": "r4.2xlarge",    
                           "Priority": 1,
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                  ] 
             }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"
}
```

## Exemplo 10: iniciar instâncias spot em uma frota otimizada para preço-capacidade
<a name="ec2-fleet-config11"></a>

O exemplo a seguir demonstra como configurar uma Frota EC2 com uma estratégia de alocação spot que otimize tanto para capacidade quanto por menor preço. Para otimizar para capacidade e levar em consideração o preço, você deve definir a `AllocationStrategy` de spot como `price-capacity-optimized`.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. A capacidade pretendida é de 50 Instâncias spot. A frota do EC2 tenta iniciar 50 instâncias spot no grupo de capacidade spot com a capacidade ideal para o número de instâncias que estão sendo iniciadas e, ao mesmo tempo, escolher o grupo com menor preço.

```
{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized",
        "MinTargetCapacity": 2,
        "SingleInstanceType": true
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 50,
        "OnDemandTargetCapacity":0,
        "SpotTargetCapacity":50,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

## Exemplo 11: configurar a seleção de tipo de instância baseada em atributos
<a name="ec2-fleet-config12"></a>

O exemplo a seguir demonstra como configurar uma Frota do EC2 para usar a seleção de tipo de instância baseada em atributos para identificar tipos de instância. Para especificar os atributos de instância necessários, especifique os atributos na estrutura `InstanceRequirements`.

No exemplo a seguir, dois atributos de instância são especificados:
+ `VCpuCount`: é especificado um mínimo de 2 vCPUs. Como nenhum máximo é especificado, não há limite máximo.
+ `MemoryMiB`: é especificado um mínimo de 4 MiB de memória. Como nenhum máximo é especificado, não há limite máximo.

Qualquer tipo de instância que tenha 2 ou mais vCPUs e 4 MiB ou mais de memória será identificado. Porém, a estratégia proteção de preços e de alocação pode excluir alguns tipos de instância quando a [Frota do EC2 provisiona a frota](ec2-fleet-attribute-based-instance-type-selection.md#how-ef-uses-abs).

Para obter uma lista e descrições de todos os atributos que você pode especificar, consulte [InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html) na *Amazon EC2 API Reference* (Referência de API do Amazon EC2).

```
{
	"SpotOptions": {
		"AllocationStrategy": "price-capacity-optimized"
	},
	"LaunchTemplateConfigs": [{
		"LaunchTemplateSpecification": {
			"LaunchTemplateName": "my-launch-template",
			"Version": "1"
		},
		"Overrides": [{
			"InstanceRequirements": {
				"VCpuCount": {
					"Min": 2
				},
				"MemoryMiB": {
					"Min": 4
				}
			}
		}]
	}],
	"TargetCapacitySpecification": {
		"TotalTargetCapacity": 20,
		"DefaultTargetCapacityType": "spot"
	},
	"Type": "instant"
}
```

# Exemplo de configurações da CLI para frotas spot
<a name="spot-fleet-examples"></a>

É possível definir a configuração da frota spot em um arquivo JSON e, em seguida, referenciar esse arquivo com o comando [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) da AWS CLI para criar a frota, da seguinte maneira:

```
aws ec2 request-spot-fleet --spot-fleet-request-config file://file_name.json
```

Os exemplos a seguir ilustram as configurações de inicialização para vários casos de uso de frotas spot. Para obter mais informações sobre os parâmetros de configuração, consulte [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html). Para obter mais informações sobre a criação de uma frota spot, consulte [Criar uma Frota spot](create-spot-fleet.md).

**nota**  
Em frota spot, não é possível especificar um ID de interface de rede em uma especificação de execução. Omita o parâmetro `NetworkInterfaceID` no modelo ou na especificação de execução.

**Topics**
+ [Exemplo 1: executar instâncias spot usando a zona de disponibilidade com menor preço na região](#fleet-config1)
+ [Exemplo 2: executar instâncias spot usando a zona de disponibilidade com o menor preço em uma lista especificada](#fleet-config2)
+ [Exemplo 3: executar instâncias spot usando o tipo de instância com o menor preço em uma lista](#fleet-config3)
+ [Exemplo 4. Cancelar o preço da solicitação](#fleet-config4)
+ [Exemplo 5: executar uma frota spot usando a estratégia de alocação diversificada](#fleet-config5)
+ [Exemplo 6: executar uma frota spot usando o peso da instância](#fleet-config6)
+ [Exemplo 7: executar uma frota spot usando capacidade sob demanda](#fleet-config7)
+ [Exemplo 8: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição](#fleet-config8)
+ [Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade](#fleet-config9)
+ [Exemplo 10: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades](#fleet-config10)
+ [Exemplo 11: executar instâncias spot em uma frota priceCapacityOptimized](#fleet-config11)
+ [Exemplo 12: configurar a seleção de tipo de instância baseada em atributos](#fleet-config12)

## Exemplo 1: executar instâncias spot usando a zona de disponibilidade com menor preço na região
<a name="fleet-config1"></a>

O exemplo a seguir determina uma única especificação de execução sem uma zona de disponibilidade nem sub-rede. A frota spot executa as instâncias na zona de disponibilidade de menor preço que tem uma sub-rede padrão. O preço que você paga não excede o preço sob demanda.

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

## Exemplo 2: executar instâncias spot usando a zona de disponibilidade com o menor preço em uma lista especificada
<a name="fleet-config2"></a>

Os exemplos a seguir determinam duas especificações de execução com zonas de disponibilidade ou sub-redes diferentes, mas o mesmo tipo de instância e AMI.

**Zonas de disponibilidade**

A frota spot executa as instâncias na sub-rede padrão da zona de disponibilidade de menor preço especificada.

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "Placement": {
              "AvailabilityZone": "us-west-2a, us-west-2b"
          },
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

**Sub-redes**

É possível especificar sub-redes padrão ou não padrão, e as sub-rede não padrão podem ser de uma VPC padrão ou não padrão. O serviço spot executa as instâncias em qualquer sub-rede na zona de disponibilidade de menor preço.

Você não pode especificar sub-redes diferentes da mesma zona de disponibilidade em uma solicitação de frota spot.

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "SubnetId": "subnet-a61dafcf, subnet-65ea5f08",
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

Se as instâncias forem executadas em uma VPC padrão, elas receberão um endereço IPv4 público por padrão. Se as instâncias forem executadas em uma VPC não padrão, elas não receberão um endereço IPv4 público por padrão. Use uma interface de rede na especificação de execução para atribuir um endereço IPv4 público às instâncias executadas em uma VPC não padrão. Ao especificar uma interface de rede, você deve incluir o ID da sub-rede e o ID do grupo de segurança usando a interface de rede.

```
  ...       
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "InstanceType": "m3.medium",
          "NetworkInterfaces": [
              {
                  "DeviceIndex": 0,
                  "SubnetId": "subnet-1a2b3c4d",
                  "Groups": [ "sg-1a2b3c4d" ],
                  "AssociatePublicIpAddress": true
              }
          ],
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ...
```

## Exemplo 3: executar instâncias spot usando o tipo de instância com o menor preço em uma lista
<a name="fleet-config3"></a>

Os exemplos a seguir determinam duas configurações de execução com tipos de instância diferentes, mas a mesma AMI e zona de disponibilidade ou sub-rede. A frota spot executa as instâncias spot usando o tipo de instância de menor preço especificado.

**Zona de disponibilidade**

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "c5.4xlarge",
          "Placement": {
            "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "r3.8xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
  ]
}
```

**Sub-rede**

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "c5.4xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "r3.8xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      }
  ]
}
```

## Exemplo 4. Cancelar o preço da solicitação
<a name="fleet-config4"></a>

Recomendamos que você use o preço máximo padrão, que é o preço sob demanda. Se você preferir, poderá especificar um preço máximo para a solicitação da frota e os preços máximos para as especificações de execução individuais.

Os seguintes exemplos especificam um preço máximo para a solicitação da frota e preços máximos para duas das três especificações de execução. O preço máximo da solicitação da frota é utilizado para qualquer especificação de execução que não especifique um preço máximo. A frota spot executa as instâncias spot usando o tipo de instância de menor preço.

**Zona de disponibilidade**

```
{
  "SpotPrice": "1.00",
  "TargetCapacity": 30,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "SpotPrice": "0.10"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.4xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "SpotPrice": "0.20"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.8xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
    ]
}
```

**Sub-rede**

```
{
  "SpotPrice": "1.00",
  "TargetCapacity": 30,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.2xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "SpotPrice": "0.10"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.4xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "SpotPrice": "0.20"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.8xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      }
  ]
}
```

## Exemplo 5: executar uma frota spot usando a estratégia de alocação diversificada
<a name="fleet-config5"></a>

O exemplo a seguir usa a estratégia de alocação `diversified`. As especificações de execução têm tipos de instância diferentes, mas a mesma AMI e zona de disponibilidade ou sub-rede. A frota spot distribui as 30 instâncias pelas três especificações de execução, de modo que haja 10 instâncias de cada tipo. Para obter mais informações, consulte [Usar estratégias de alocação para determinar como a frota do EC2 ou a frota spot atende à capacidade spot e sob demanda](ec2-fleet-allocation-strategy.md).

**Zona de disponibilidade**

```
{
  "SpotPrice": "0.70", 
  "TargetCapacity": 30,
  "AllocationStrategy": "diversified",
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c4.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "m3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
  ]
}
```

**Sub-rede**

```
{
    "SpotPrice": "0.70", 
    "TargetCapacity": 30,
    "AllocationStrategy": "diversified",
    "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
    "LaunchSpecifications": [
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "c4.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "m3.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "r3.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        }
    ]
}
```

Para aumentar a chance de que uma solicitação spot possa ser atendida pela capacidade do EC2 no caso de uma interrupção em uma das zonas de disponibilidade, uma prática recomendada é diversificar entre zonas. Nesse cenário, inclua cada zona de disponibilidade possível para você na especificação de execução. E, em vez de usar sempre a mesma sub-rede, use três sub-redes exclusivas (cada mapeamento para uma zona de disponibilidade diferente). 

**Zona de disponibilidade**

```
{
  "SpotPrice": "0.70", 
  "TargetCapacity": 30,
  "AllocationStrategy": "diversified",
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c4.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2a"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "m3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2c"
          }
      }
  ]
}
```

**Sub-rede**

```
{
    "SpotPrice": "0.70", 
    "TargetCapacity": 30,
    "AllocationStrategy": "diversified",
    "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
    "LaunchSpecifications": [
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "c4.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "m3.2xlarge",
            "SubnetId": "subnet-2a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "r3.2xlarge",
            "SubnetId": "subnet-3a2b3c4d"
        }
    ]
}
```

## Exemplo 6: executar uma frota spot usando o peso da instância
<a name="fleet-config6"></a>

Os exemplos a seguir usam o peso da instância, o que significa que o preço é por hora em vez de ser por hora de instância. Cada configuração de execução lista um tipo de instância e um peso diferentes. A frota spot seleciona o tipo de instância com o menor preço por hora de unidade. A frota spot calcula o número de instâncias spot a serem executadas dividindo a capacidade de destino pelo peso da instância. Se o resultado não for um valor inteiro, a frota spot o arredondará para o próximo valor inteiro, para que o tamanho de sua frota não fique abaixo de sua capacidade de destino.

Se a solicitação `r3.2xlarge` for feita com êxito, o spot provisionará 4 dessas instâncias. Divida 20 por 6 para um total de 3,33 instâncias, em seguida, arredonde para 4 instâncias.

Se a solicitação `c3.xlarge` for feita com êxito, o spot provisionará 7 dessas instâncias. Divida 20 por 3 para um total de 6,66 instâncias, em seguida, arredonde para 7 instâncias.

Para obter mais informações, consulte [Usar ponderação de instâncias para gerenciar o custo e a performance da frota do EC2 ou da frota spot](ec2-fleet-instance-weighting.md).

**Zona de disponibilidade**

```
{
  "SpotPrice": "0.70",
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "WeightedCapacity": 6
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "WeightedCapacity": 3
      }
    ]
}
```

**Sub-rede**

```
{
  "SpotPrice": "0.70",
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "WeightedCapacity": 6
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "WeightedCapacity": 3
      }
  ]
}
```

## Exemplo 7: executar uma frota spot usando capacidade sob demanda
<a name="fleet-config7"></a>

Para garantir que você sempre tenha capacidade de instância, você pode incluir uma solicitação de capacidade sob demanda na solicitação de frota spot. Se houver capacidade, a solicitação de sob demanda sempre será atendida. O equilíbrio da capacidade de destino será atendido como Spot se houver capacidade e disponibilidade.

O exemplo a seguir especifica a capacidade desejada de destino como 10, da qual 5 deve ser sob demanda. A capacidade spot não é especificada. Ela está implícita no saldo da capacidade pretendida menos a capacidade sob demanda. O Amazon EC2 executará cinco unidades de capacidade como sob demanda e cinco unidades de capacidade (10-5=5) como spot se houver disponibilidade e capacidade do Amazon EC2 disponíveis. 

```
{
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "AllocationStrategy": "lowestPrice",
  "TargetCapacity": 10,
  "SpotPrice": null,
  "ValidFrom": "2018-04-04T15:58:13Z",
  "ValidUntil": "2019-04-04T15:58:13Z",
  "TerminateInstancesWithExpiration": true,
  "LaunchSpecifications": [],
  "Type": "maintain",
  "OnDemandTargetCapacity": 5,
  "LaunchTemplateConfigs": [
    {
      "LaunchTemplateSpecification": {
        "LaunchTemplateId": "lt-0dbb04d4a6cca5ad1",
        "Version": "2"
      },
      "Overrides": [
        {
          "InstanceType": "t2.medium",
          "WeightedCapacity": 1,
          "SubnetId": "subnet-d0dc51fb"
        }
      ]
    }
  ]
}
```

## Exemplo 8: Configurar o rebalanceamento de capacidade para executar a Instâncias spot de substituição
<a name="fleet-config8"></a>

O exemplo a seguir configura a frota spot para executar uma instância spot de substituição quando o Amazon EC2 emite uma recomendação de rebalanceamento para uma instância spot na frota. Para configurar a substituição automática da Instâncias spot, para `ReplacementStrategy`, especifique `launch-before-terminate`. Para configurar o tempo de espera entre o lançamento das novas instâncias spot substitutas até a exclusão automática das instâncias spot antigas, para `termination-delay`, especifique um valor em segundos. Para obter mais informações, consulte [Opções de configuração](ec2-fleet-capacity-rebalance.md#ec2-fleet-capacity-rebalance-config-options).

**nota**  
Recomendamos só usar `launch-before-terminate` se você puder prever quanto tempo os procedimentos de desligamento da instância levarão. Isso garante que as instâncias antigas só sejam terminadas após a conclusão dos procedimentos de desligamento. Você é cobrado por todas as instâncias enquanto elas estão sendo executadas.

A eficácia da estratégia de rebalanceamento de capacidade depende do número de grupos de capacidade spot especificados na solicitação de frota spot. Recomendamos que você configure a frota com um conjunto diversificado de tipos de instância e zonas de disponibilidade e para `AllocationStrategy`especifique `capacityOptimized`. Para obter mais informações sobre o que você deve considerar ao configurar uma frota spot para rebalanceamento de capacidade, consulte [Use o rebalanceamento de capacidade na frota do EC2 e na frota spot para substituir instâncias spot em risco](ec2-fleet-capacity-rebalance.md).

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimized",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "LaunchTemplate",
                    "Version": "1"
                },
                 "Overrides": [
                       {
                           "InstanceType": "c3.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c4.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c5.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       }
                ] 
          }
    ],
        "TargetCapacity": 5,
        "SpotMaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch-before-terminate",
                "TerminationDelay": "720"
            }
        }
    }
}
```

## Exemplo 9: iniciar instâncias spot em uma frota otimizada para capacidade
<a name="fleet-config9"></a>

O exemplo a seguir demonstra como configurar uma frota spot com uma estratégia de alocação spot que otimiza a capacidade. Para otimizar a capacidade, você deve definir `AllocationStrategy` como `capacityOptimized`.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. A capacidade pretendida é de 50 Instâncias spot. A frota spot tenta iniciar 50 instâncias spot no grupo de capacidade spot com a capacidade ideal para o número de instâncias em execução.

```
{
    "TargetCapacity": "50",
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimized",
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "r4.2xlarge",  
                    "AvailabilityZone": "us-west-2a"
                },
                {
                    "InstanceType": "m4.2xlarge",
                    "AvailabilityZone": "us-west-2b"
                }, 
                {
                    "InstanceType": "c5.2xlarge",
                    "AvailabilityZone": "us-west-2b"
                }
            ] 
        }
    ]
}
```

## Exemplo 10: iniciar instâncias spot em uma frota otimizada para capacidade com prioridades
<a name="fleet-config10"></a>

O exemplo a seguir demonstra como configurar uma frota spot com uma estratégia de alocação spot que otimiza a capacidade enquanto usa a prioridade com base no melhor esforço.

Ao usar a estratégia de alocação `capacityOptimizedPrioritized`, você pode usar o parâmetro `Priority` para especificar as prioridades dos grupos de capacidade spot, em que quanto menor o número, maior a prioridade. Você também pode definir a mesma prioridade para vários grupos de capacidade spot se você favorecê-los igualmente. Se você não definir uma prioridade para um grupo, ele será considerado o último em termos de prioridade.

Para priorizar grupos de capacidade spot, você deve definir `AllocationStrategy` como `capacityOptimizedPrioritized`. A frota spot otimizará a capacidade em primeiro lugar, mas honrará as prioridades com o melhor esforço (por exemplo, se honrar as prioridades não afetará significativamente a capacidade da frota spot de provisionar a capacidade ideal). Essa é uma boa opção para workloads em que a possibilidade de interrupção deve ser minimizada e a preferência por determinados tipos de instância for importante.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. Cada grupo é priorizado, onde quanto menor o número, maior a prioridade. A capacidade pretendida é de 50 Instâncias spot. A frota spot tenta executar 50 instâncias Spot no grupo de capacidade spot com a maior prioridade com base no melhor esforço, mas otimiza a capacidade em primeiro lugar.

```
{
    "TargetCapacity": "50",
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimizedPrioritized"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "r4.2xlarge",    
                   "Priority": 1,
                    "AvailabilityZone": "us-west-2a"
                },
                {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "AvailabilityZone": "us-west-2b"
                }, 
                {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "AvailabilityZone": "us-west-2b"
                }
            ] 
        }
    ]
}
```

## Exemplo 11: executar instâncias spot em uma frota priceCapacityOptimized
<a name="fleet-config11"></a>

O exemplo a seguir demonstra como configurar uma frota spot com uma estratégia de alocação spot que otimize tanto para capacidade quanto para o menor preço. Para otimizar para capacidade e levar em consideração o preço, você deve definir a `AllocationStrategy` de spot como `priceCapacityOptimized`.

No exemplo a seguir, as três especificações de lançamento especificam três grupos de capacidade spot. A capacidade pretendida é de 50 Instâncias spot. A frota spot tenta iniciar 50 instâncias spot no grupo de capacidade spot com a capacidade ideal para o número de instâncias que estão sendo iniciadas e ao mesmo tempo, escolher o grupo com menor preço.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "OnDemandAllocationStrategy": "lowestPrice",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111111111111:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": [
                     {
                           "InstanceType": "r4.2xlarge",  
                           "AvailabilityZone": "us-west-2a"
                      },
                      {
                           "InstanceType": "m4.2xlarge",
                           "AvailabilityZone": "us-west-2b"
                      }, 
                      {
                           "InstanceType": "c5.2xlarge",
                           "AvailabilityZone": "us-west-2b"
                      }
                ]
            }
        ],
        "TargetCapacity": 50,
        "Type": "request"
    }
}
```

## Exemplo 12: configurar a seleção de tipo de instância baseada em atributos
<a name="fleet-config12"></a>

O exemplo a seguir demonstra como configurar uma frota spot para usar a seleção de tipo de instância baseada em atributos para identificar tipos de instância. Para especificar os atributos de instância necessários, especifique os atributos na estrutura `InstanceRequirements`.

No exemplo a seguir, dois atributos de instância são especificados:
+ `VCpuCount`: é especificado um mínimo de 2 vCPUs. Como nenhum máximo é especificado, não há limite máximo.
+ `MemoryMiB`: é especificado um mínimo de 4 MiB de memória. Como nenhum máximo é especificado, não há limite máximo.

Qualquer tipo de instância que tenha 2 ou mais vCPUs e 4 MiB ou mais de memória será identificado. Porém, a estratégia proteção de preços e de alocação pode excluir alguns tipos de instância quando a [frota spot provisiona a frota](ec2-fleet-attribute-based-instance-type-selection.md#how-ef-uses-abs).

Para obter uma lista e descrições de todos os atributos que você pode especificar, consulte [InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html) na *Amazon EC2 API Reference* (Referência de API do Amazon EC2).

```
{
	"AllocationStrategy": "priceCapacityOptimized",
	"TargetCapacity": 20,
	"Type": "request",
	"LaunchTemplateConfigs": [{
		"LaunchTemplateSpecification": {
			"LaunchTemplateName": "my-launch-template",
			"Version": "1"
		},
		"Overrides": [{
			"InstanceRequirements": {
				"VCpuCount": {
					"Min": 2
				},
				"MemoryMiB": {
					"Min": 4
				}
			}
		}]
	}]
}
```

# Cotas para frotas do EC2 e frotas spot
<a name="fleet-quotas"></a>

Sua Conta da AWS tem cotas padrão para cada serviço da AWS, que anteriormente eram chamadas de limites. A menos que especificado de outra forma, cada cota é específica da região.

As cotas normais do Amazon EC2 se aplicam a instâncias executadas por uma EC2 Fleet ou uma frota spot, como [limites de instância spot](using-spot-limits.md) e [limites de volume](volume_limits.md).

Além disso, sua Conta da AWS tem as seguintes cotas relacionadas à frota do EC2 e à frota spot:


****  

| Descrição da cota | Quota | 
| --- | --- | 
| O número de frotas do EC2 e frotas spot por região dos tipos maintain e request nos estados active, deleted\$1running e cancelled\$1running | 1.000 ¹ ² ³ | 
| O número de frotas EC2 do tipo instant | Ilimitado | 
| O número de grupos de capacidade spot (combinação exclusiva de tipo de instância e sub-rede) para frotas do EC2 e frotas spot dos tipos maintain e request | 300 ¹ | 
| O número de grupos de capacidade spot (combinação exclusiva de tipo de instância e sub-rede) para frotas do EC2 do tipo instant | Ilimitado | 
| O tamanho dos dados de usuário em uma especificação de inicialização | 16 KB ² | 
| A capacidade pretendida por frota do EC2 ou frota spot | 10.000 | 
| A capacidade de destino em todas as frotas do EC2 e frotas spot de uma região | 100.000 ¹ | 
|  Uma solicitação de EC2 Fleet ou de frota spot não pode abranger regiões.  |  | 
| Uma solicitação de EC2 Fleet ou de frota spot não pode abranger sub-redes diferentes na mesma zona de disponibilidade. |  | 

¹ Essas cotas aplicam-se a frotas do EC2 e frotas spot.

² Estas são cotas fixas. Você não pode solicitar um aumento dessas cotas.

³ Depois de excluir uma frota do EC2 ou cancelar uma solicitação de frota spot, e se você especificou que a frota *não* deverá terminar suas instâncias spot quando excluiu ou cancelou a solicitação, a solicitação de frota inserirá o estado `deleted_running` (frota do EC2) ou `cancelled_running` (frota spot). As instâncias continuarão em execução até que sejam interrompidas ou terminadas manualmente. Se você terminar as instâncias, a solicitação de frota entrará no estado `deleted_terminating` (frota do EC2) ou `cancelled_terminating` (frota spot) e não contará para essa cota. Para obter mais informações, consulte [Excluir uma solicitação de frota do EC2 e as instâncias da frota](delete-fleet.md) e [Cancelar (excluir) uma solicitação de frota spot](cancel-spot-fleet.md).

## Solicitar um aumento de cota para a capacidade pretendida
<a name="fleet-quota-increase-request"></a>

Se precisar exceder a cota padrão da capacidade de destino, solicite um aumento de cota.

**Como solicitar um aumento de cota para a capacidade pretendida**

1. Abra o formulário [Create case](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ec2-fleet) (Criar caso) no Suporte Center.

1. Escolha **Service limit increase** (Aumento de limite do serviço).

1. Em **Limit type** (Tipo de limite), escolha **EC2 Fleet** (Frota do EC2).

1. Em **Region** (Região), escolha a região da AWS na qual solicitar o aumento da cota.

1. Em **Limit** (Limite), escolha **Target Fleet Capacity per Fleet (in units)** (Capacidade da frota de destino por frota [em unidades]) ou **Target Fleet Capacity per Region (in units)** (Capacidade da frota de destino por região [em unidades]), dependendo da cota que deseja aumentar.

1. Em **New limit value** (Novo valor de limite), insira o novo valor.

1. Para solicitar um aumento para outra cota, escolha **Add another request** (Adicionar outra solicitação) e repita as etapas de 4 a 6.

1. Em **Use case description** (Descrição do caso de uso), insira o motivo para solicitar um aumento de cota.

1. Em **Contact options** (Opções de contato), especifique o idioma de contato e o método de contato de sua preferência.

1. Selecione **Enviar**.