

# 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": ""
}
```