

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

# Executar compilações em frotas de capacidade reservada
<a name="fleets"></a>

CodeBuild oferece as seguintes frotas de computação:
+ Frotas sob demanda
+ Frotas de capacidade reservada

Com frotas sob demanda, CodeBuild fornece computação para suas construções. As máquinas são destruídas quando a compilação termina. As frotas sob demanda são totalmente gerenciadas e incluem recursos de escalabilidade automática para lidar com picos de demanda.

**nota**  
As frotas sob demanda não são compatíveis com macOS.

CodeBuild também oferece frotas de capacidade reservada que contêm instâncias desenvolvidas pelo Amazon EC2 que são mantidas pela. CodeBuild Com frotas de capacidade reservada, você configura um conjunto de instâncias dedicadas para seu ambiente de compilação. Essas máquinas permanecem ociosas, prontas para processar compilações ou testes imediatamente e reduzem a duração da compilação. Com frotas de capacidade reservada, suas máquinas estão sempre funcionando e continuarão a incorrer em custos enquanto forem provisionadas.

**Importante**  
Independentemente do tempo em que você executa uma instância, as frotas de capacidade reservada incorrem em uma cobrança inicial por instância, após a qual poderá haver custos associados adicionais. Para obter mais informações, consulte [https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/).

**Topics**
+ [

## Criar uma frota de capacidade reservada
](#fleets.how-to)
+ [

## Práticas recomendadas
](#fleets.best-practices)
+ [

## Posso compartilhar uma frota de capacidade reservada em vários CodeBuild projetos?
](#fleets.share)
+ [

## Como funciona a computação baseada em atributos?
](#fleets.attribute-compute)
+ [

## Posso especificar manualmente uma instância do Amazon EC2 para minha frota?
](#fleets.manual-input-compute)
+ [

## Quais regiões são compatíveis com frotas de capacidade reservada?
](#fleets.regions)
+ [

## Como configurar uma frota macOS de capacidade reservada?
](#fleets.configure-macos)
+ [

## Como configurar uma imagem de máquina da Amazon (AMI) personalizada para uma frota com capacidade reservada?
](#fleets.custom-ami)
+ [

## Limitações de frotas de capacidade reservada
](#fleets.limitations)
+ [

# Propriedades da frota de capacidade reservada
](fleets.reserved-capacity-fleets.md)
+ [

# Amostras de capacidade reservada com AWS CodeBuild
](reserved-capacity-samples.md)

## Criar uma frota de capacidade reservada
<a name="fleets.how-to"></a>

Use as instruções a seguir para criar uma frota de capacidade reservada.

**Para criar uma frota de capacidade reservada**

1. Faça login no Console de gerenciamento da AWS e abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, escolha **Frotas de computação** e **Criar frota**.

1. No campo de texto **Nome da frota de computação**, insira um nome para a frota.

1. No menu suspenso **Sistema operacional**, escolha o sistema operacional.

1. No menu suspenso **Arquitetura**, escolha a arquitetura.

1. (Opcional) Selecione **Usar o modo de execução da instância: opcional** para execução direta em uma instância do Amazon EC2 em vez de em um contêiner do Docker. Depois, escolha uma **Versão principal** e uma **Versão secundária**.

1. (Opcional) Em **Configuração adicional**, faça o seguinte:
   + Selecione **Configurar VPC: opcional** para conectar a frota a uma VPC para acessar recursos privados durante o uso.
     + No menu suspenso **VPC**, selecione uma VPC que sua frota acessará. CodeBuild 
     + No menu suspenso **Sub-redes**, selecione as sub-redes que CodeBuild devem ser usadas para definir sua configuração de VPC.
     + No menu suspenso **Grupos de segurança**, selecione os grupos de segurança que CodeBuild devem ser usados para trabalhar com sua VPC.
     + No campo **Perfil de serviço de frota**, escolha um perfil de serviço existente.
**nota**  
Verifique se a função da frota tem as permissões necessárias. Para obter mais informações, consulte [Permitir que um usuário adicione uma política de permissão para um perfil de serviço de frota](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role).
     + Se você escolheu o sistema operacional Amazon Linux, selecione **Definir configurações de proxy - opcional** para aplicar o controle de acesso à rede para as instâncias de capacidade reservada.
     + Em **Comportamento padrão**, escolha permitir ou negar tráfego de saída para todos os destinos por padrão.
     + Em **Regras de proxy**, escolha **Adicionar regra de proxy** para especificar domínios de destino ou IPs para permitir ou negar o controle de acesso à rede.
   + Selecione **Configurar AMI personalizada: opcional** para usar uma imagem de máquina da Amazon (AMI) personalizada.
     + No menu suspenso **AMI**, selecione uma imagem de máquina da Amazon (AMI) para a frota.
     + No campo **Perfil de serviço de frota**, escolha um perfil de serviço existente.
**nota**  
Verifique se a função da frota tem as permissões necessárias. Para obter mais informações, consulte [Permitir que um usuário adicione uma política de permissão para um perfil de serviço de frota](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role).

1. Em **Configuração de capacidade**, no **Modo de seleção de computação**, escolha uma destas opções:
   + Se você escolher **Seleção guiada**, faça o seguinte:
     + Em **Computação**, escolha o tipo de instância incluído nessa frota.
     + No campo de texto **Capacidade**, insira o número mínimo de instâncias na frota.
     + (Opcional) Em **Configuração adicional**, faça o seguinte:
       + Selecione **Configurar escalabilidade: opcional** para escalar automaticamente a frota com base nessa configuração. No menu suspenso **Modo de escalabilidade: opcional**, escolha o comportamento quando a demanda excede a capacidade da frota.
   + Se você escolher **Instância personalizada**, faça o seguinte:
     + No menu suspenso **Tipo de instância de computação**, selecione o tipo de instância incluído nessa frota.
     + No campo de texto **Tamanho adicional do volume do EBS: opcional**, insira o volume adicional ao espaço em disco de 64 GB fornecido.
     + No campo de texto **Capacidade**, insira o número mínimo de instâncias na frota.
     + (Opcional) Em **Configuração adicional**, faça o seguinte:
       + Selecione **Configurar escalabilidade: opcional** para escalar automaticamente a frota com base nessa configuração. No menu suspenso **Modo de escalabilidade: opcional**, escolha o comportamento quando a demanda excede a capacidade da frota.

1. Escolha **Criar frota de computação**.

1. Depois que a frota computacional for criada, crie um novo CodeBuild projeto ou edite um existente. Em **Ambiente**, escolha **Capacidade reservada** em **Modelo de provisionamento** e escolha a frota especificada em **Nome da frota**.

## Práticas recomendadas
<a name="fleets.best-practices"></a>

Ao usar frotas de capacidade reservada, recomendamos que você siga estas práticas recomendadas.
+ Recomendamos usar o modo de cache de origem para ajudar a melhorar o desempenho da compilação armazenando a fonte em cache.
+ Recomendamos usar o cache de camadas do Docker para ajudar a melhorar o desempenho da compilação armazenando em cache as camadas existentes do Docker.

## Posso compartilhar uma frota de capacidade reservada em vários CodeBuild projetos?
<a name="fleets.share"></a>

Sim, você pode maximizar a utilização da capacidade de uma frota usando-a em vários projetos.

**Importante**  
Ao usar o recurso de capacidade reservada, os dados armazenados em cache nas instâncias da frota, incluindo arquivos de origem, camadas do Docker e diretórios em cache especificados no buildspec, podem ser acessados por outros projetos na mesma conta. Isso ocorre por design e permite que projetos dentro da mesma conta compartilhem instâncias de frota.

## Como funciona a computação baseada em atributos?
<a name="fleets.attribute-compute"></a>

Se escolher `ATTRIBUTE_BASED_COMPUTE` como `computeType` da frota, você poderá especificar os atributos em um novo campo chamado `computeConfiguration`. Esses atributos incluem vCPUs, memória, espaço em disco e `machineType` o. Esse `machineType` é `GENERAL` ou `NVME`. Depois de especificar um ou alguns dos atributos disponíveis, CodeBuild escolherá um tipo de computação entre os tipos de instância compatíveis disponíveis como finalizado. `computeConfiguration`

**nota**  
CodeBuild escolherá a instância mais barata que atenda a todos os requisitos de entrada. A memóriaCPUs, v e espaço em disco das instâncias escolhidas serão todos maiores ou iguais aos requisitos de entrada. Você pode verificar a `computeConfiguration` resolvida na frota criada ou atualizada.

Se você inserir uma informação `computeConfiguration` que não seja possível de satisfazer CodeBuild, você receberá uma exceção de validação. Observe também que o comportamento de estouro de frota sob demanda será substituído pelo comportamento da fila se a `computeConfiguration` não estiver disponível sob demanda.

## Posso especificar manualmente uma instância do Amazon EC2 para minha frota?
<a name="fleets.manual-input-compute"></a>

Sim, você pode inserir diretamente a instância desejada do Amazon EC2 no console selecionando **Instância personalizada** ou configurando o parâmetro da API, `InstanceType`. Esse campo é usado no seguinte APIs: CreateFleet UpdateFleet CreateProject,, UpdateProject StartBuild e. Para obter mais informações, consulte [Compute instance type](fleets.reserved-capacity-fleets.md#compute).

## Quais regiões são compatíveis com frotas de capacidade reservada?
<a name="fleets.regions"></a>

Capacidade reservada As frotas Amazon Linux e Windows são suportadas no seguinte Regiões da AWS: Leste dos EUA (Norte da Virgínia), Leste dos EUA (Ohio), Oeste dos EUA (Oregon), Ásia-Pacífico (Mumbai), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Sydney), Ásia-Pacífico (Tóquio), Europa (Frankfurt), Europa (Irlanda) e América do Sul (São Paulo). Para obter mais informações sobre Regiões da AWS onde CodeBuild está disponível, consulte [AWS Serviços por região](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

As frotas de macOS Medium com capacidade reservada são suportadas no seguinte Regiões da AWS: Leste dos EUA (Norte da Virgínia), Leste dos EUA (Ohio), Oeste dos EUA (Oregon), Ásia-Pacífico (Sydney) e Europa (Frankfurt). Capacidade reservada macOS Grandes frotas são compatíveis com o seguinte Regiões da AWS: Leste dos EUA (Norte da Virgínia), Leste dos EUA (Ohio), Oeste dos EUA (Oregon) e Ásia-Pacífico (Sydney).

## Como configurar uma frota macOS de capacidade reservada?
<a name="fleets.configure-macos"></a>

**Para configurar uma frota macOS de capacidade reservada**

1. Faça login no Console de gerenciamento da AWS e abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, escolha **Frotas de computação** e **Criar frota**.

1. No campo de texto **Nome da frota de computação**, insira um nome para a frota.

1. No menu suspenso **Sistema operacional**, escolha **macOS**.

1. No campo **Computação**, escolha um dos seguintes tipos de máquina de computação: **Apple M2, 24 GB de memória, 8 v CPUs** ou **Apple M2, 32 GB de memória, 12** v. CPUs

1. No campo de texto **Capacidade**, insira o número mínimo de instâncias na frota.

1. (Opcional) Para usar uma imagem personalizada para a frota, consulte [Como configurar uma imagem de máquina da Amazon (AMI) personalizada para uma frota com capacidade reservada?](#fleets.custom-ami) para garantir que a imagem de máquina da Amazon (AMI) tenha os pré-requisitos necessários.

1. (Opcional) Para configurar uma VPC com a frota, em **Configuração adicional**, faça o seguinte:
   + No menu suspenso **VPC - opcional**, selecione uma VPC que sua frota acessará. CodeBuild 
   + No menu suspenso **Sub-redes**, selecione as sub-redes que CodeBuild devem ser usadas para definir sua configuração de VPC.
   + No menu suspenso **Grupos de segurança**, selecione os grupos de segurança que CodeBuild devem ser usados para trabalhar com sua VPC.
   + No campo **Perfil de serviço de frota**, escolha um perfil de serviço existente.
**nota**  
Verifique se a função da frota tem as permissões necessárias. Para obter mais informações, consulte [Permitir que um usuário adicione uma política de permissão para um perfil de serviço de frota](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role).

1. Escolha **Criar frota de computação** e aguarde a inicialização da instância da frota. Uma vez lançada, a capacidade será`n/n`, onde *n* está a capacidade fornecida.

1. Depois que a frota de computação for lançada, crie um novo CodeBuild projeto ou edite um existente. Em **Ambiente**, escolha **Capacidade reservada** em **Modelo de provisionamento** e escolha a frota especificada em **Nome da frota**.

## Como configurar uma imagem de máquina da Amazon (AMI) personalizada para uma frota com capacidade reservada?
<a name="fleets.custom-ami"></a>

**Como configurar uma imagem de máquina da Amazon (AMI) personalizada para uma frota com capacidade reservada**

1. Faça login no Console de gerenciamento da AWS e abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, escolha **Frotas de computação** e **Criar frota**.

1. No campo de texto **Nome da frota de computação**, insira um nome para a frota.

1. Escolha **Imagem personalizada** para a frota e garanta que a imagem de máquina da Amazon (AMI) tenha os seguintes pré-requisitos:
   + Se o tipo de ambiente for `MAC_ARM`, a **Arquitetura** da AMI deverá ser 64 bits `Mac-Arm`.
   + Se o tipo de ambiente for `LINUX_EC2`, a **Arquitetura** da AMI deverá ser 64 bits `x86`.
   + Se o tipo de ambiente for `ARM_EC2`, a **Arquitetura** da AMI deverá ser 64 bits `Arm`.
   + Se o tipo de ambiente for `WINDOWS_EC2`, a **Arquitetura** da AMI deverá ser 64 bits `x86`.
   + A AMI permite o **ARN da organização** de CodeBuild serviços. Para obter uma lista de organizações ARNs, consulte[Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami).
   + Se a AMI for criptografada com uma AWS KMS chave, a AWS KMS chave também deverá permitir a **ID da organização** do CodeBuild serviço. Para obter uma lista de organizações IDs, consulte[Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami). Para obter mais informações sobre AWS KMS chaves, consulte [Permitir organizações e OUs usar uma chave KMS no Guia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html#allow-org-ou-to-use-key) do usuário do *Amazon EC2*. Para dar permissão à CodeBuild organização para usar uma chave KMS, adicione a seguinte declaração à política de chaves:

     ```
     {
         "Sid": "Allow access for organization root",
         "Effect": "Allow",
         "Principal": "*",
         "Action": [
             "kms:Describe*",
             "kms:List*",
             "kms:Get*",
             "kms:Encrypt",
             "kms:Decrypt",
             "kms:ReEncrypt*",
             "kms:GenerateDataKey*",
             "kms:CreateGrant"
         ],
         "Resource": "*",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "o-123example"
             }
         }
     }
     ```
   + No campo **Perfil de serviço de frota**, conceda as seguintes permissões do Amazon EC2:

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                    "ec2:DescribeImages",
                    "ec2:DescribeSnapshots"
                 ],
                 "Resource": "*"
             }
         ]
     }
     ```

------

## Limitações de frotas de capacidade reservada
<a name="fleets.limitations"></a>

Há alguns casos de uso que as frotas de capacidade reservada não permitem e, se afetarem você, use as frotas sob demanda:
+ As frotas de capacidade reservada não são compatíveis com métricas de utilização de compilação.
+ As frotas macOS de capacidade reservada não são compatíveis com a sessão de depuração.

Consulte mais informações sobre cotas e limites em [Frotas de computação](limits.md#fleet-limits).

# Propriedades da frota de capacidade reservada
<a name="fleets.reserved-capacity-fleets"></a>

Uma frota de capacidade reservada contém as seguintes propriedades. Para obter mais informações sobre frotas de capacidade reservada, consulte [Executar compilações em frotas de capacidade reservada](fleets.md). 

**Sistema operacional**  
O sistema operacional Os seguintes sistemas operacionais estão disponíveis:  
+ Amazon Linux
+ macOS
+ Windows Server 2019
+ Windows Server 2022

**Arquitetura**  
A arquitetura do processador. As seguintes arquiteturas estão disponíveis:  
+ x86\$164
+ Arm64

**Tipo de ambiente**  
Os tipos de ambiente disponíveis quando o **Amazon Linux** é selecionado. Estes tipos de ambiente estão disponíveis:  
+ Linux EC2
+ Linux GPU

**Tipo de instância de computação**  
As configurações de computação para instâncias de frota.    
**Seleção guiada**  
Especifique diferentes tipos de computação selecionando as configurações de vCPU, memória e espaço em disco. Consulte informações sobre a disponibilidade do tipo de computação por região em [Sobre os tipos de ambiente de capacidade reservada](build-env-ref-compute-types.md#environment-reserved-capacity.types).  
**Instância personalizada**  
Especifique manualmente o tipo de instância desejado.

**Capacity**  
O número inicial de máquinas alocadas para a frota, que define o número de compilações que podem ser executadas paralelamente.

**Comportamento de estouro**  
Define o comportamento quando o número de compilações excede a capacidade da frota.    
**Sob demanda**  
As compilações do Overflow são executadas sob demanda. CodeBuild   
Se você optar por definir o comportamento de estouro como sob demanda ao criar uma frota conectada à VPC, adicione as permissões da VPC necessárias ao perfil de serviço do projeto. Para obter mais informações, consulte [Exemplo de declaração de política para permitir o CodeBuild acesso aos AWS serviços necessários para criar uma interface de rede VPC](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-create-vpc-network-interface).
Se você optar por definir o comportamento de estouro como sob demanda, observe que as compilações de estouro serão cobradas separadamente, de maneira semelhante ao Amazon EC2 sob demanda. Para obter mais informações, consulte [https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/).  
**Queue (Fila)**  
As execuções de compilação são colocadas em uma fila até que uma máquina esteja disponível. Isso limita os custos adicionais porque nenhuma máquina adicional é alocada.

**Imagens de máquina da Amazon (AMI)**  
As propriedades da imagem de máquina da Amazon (AMI) para sua frota. As seguintes propriedades são suportadas por CodeBuild:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/fleets.reserved-capacity-fleets.html)

**Configuração adicional**    
**VPC - opcional**  
O VPC que sua CodeBuild frota acessará. Para obter mais informações, consulte [Use AWS CodeBuild com a Amazon Virtual Private Cloud](vpc-support.md).  
Se uma substituição de frota for especificada ao chamar a StartBuild API, a configuração da VPC do projeto CodeBuild será ignorada.  
**Sub-redes**  
As sub-redes de VPC usadas para definir sua configuração de VPC. CodeBuild Observe que as frotas de capacidade reservada oferecem suporte a apenas uma sub-rede em uma única zona de disponibilidade. Além disso, verifique se as sub-redes incluem um gateway NAT.  
**Grupos de segurança**  
Os grupos de segurança da VPC que são CodeBuild usados com sua VPC. Verifique se os grupos de segurança permitem conexões de saída.  
**Perfil de serviço de frota**  
Define o perfil de serviço para sua frota a partir de um perfil de serviço existente na conta.  
**Definir configurações de proxy - opcional**  
Configurações de proxy que aplicam controle de acesso à rede às instâncias de capacidade reservada. Para obter mais informações, consulte [Use AWS CodeBuild com um servidor proxy gerenciado](run-codebuild-in-managed-proxy-server.md).  
As configurações de proxy não são compatíveis com VPC, Windows ou macOS.  
**Comportamento padrão**  
Define o comportamento do tráfego de saída.    
**Permitir**  
Permite tráfego de saída para todos os destinos por padrão.  
**Negar**  
Nega tráfego de saída para todos os destinos por padrão.  
**Regras de proxy**  
Especifica os domínios de destino aos quais IPs permitir ou negar o controle de acesso à rede.

# Amostras de capacidade reservada com AWS CodeBuild
<a name="reserved-capacity-samples"></a>

Essas amostras podem ser usadas para fazer experiências com frotas de capacidade reservada em CodeBuild.

**Topics**
+ [

## Armazenamento em cache com amostra de capacidade reservada
](#reserved-capacity-samples.caching)

## Armazenamento em cache com amostra de capacidade reservada
<a name="reserved-capacity-samples.caching"></a>

Um cache pode armazenar partes reutilizáveis do seu ambiente de build e usá-las em vários builds. Este exemplo demonstrou como habilitar o armazenamento em cache no projeto de compilação usando a capacidade reservada. Para obter mais informações, consulte [Compilações em cache para melhorar o desempenho](build-caching.md).

Você pode começar especificando um ou mais modos de cache nas configurações do projeto:

```
Cache:
        Type: LOCAL
        Modes:
          - LOCAL_CUSTOM_CACHE
          - LOCAL_DOCKER_LAYER_CACHE
          - LOCAL_SOURCE_CACHE
```

**nota**  
Habilite o modo privilegiado para usar o cache de camadas do Docker.

As configurações de especificação da compilação do projeto devem se parecer com o seguinte:

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - touch /codebuild/cache/workspace/foobar.txt
            - git checkout -b cached_branch
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | grep 'Pulling from' || exit 1
            - echo testing local custom cache
            - touch foo
            - mkdir bar && ln -s foo bar/foo2
            - mkdir bar/bar && touch bar/bar/foo3 && touch bar/bar/foo4
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```

Você pode começar executando uma compilação com o novo projeto para propagar o cache. Ao concluir, você deve iniciar outra compilação com uma especificação de compilação de substituição, semelhante à seguinte:

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - git branch | if grep 'cached_branch'; then (exit 0); else (exit 1); fi
            - ls /codebuild/cache/workspace | if grep 'foobar.txt'; then (exit 0); else (exit 1); fi
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | if grep 'Pulling from'; then (exit 1); else (exit 0); fi
            - echo testing local custom cache
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```