

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á.

# Incorpora em AWS CodeBuild
<a name="builds-working"></a>

Uma *construção* representa um conjunto de ações realizadas AWS CodeBuild para criar artefatos de saída (por exemplo, um arquivo JAR) com base em um conjunto de artefatos de entrada (por exemplo, uma coleção de arquivos de classe Java).

As seguintes regras se aplicam ao executar várias compilações:
+ Quando possível, as compilações são executadas simultaneamente. O número máximo compilações em execução simultaneamente pode variar. Para obter mais informações, consulte [Cotas para AWS CodeBuild](limits.md). 
+ Se o projeto de compilação tiver um limite de compilação simultânea definido, as compilações vão gerar um erro se o número de compilações em execução atingir o limite de compilações simultâneas do projeto. Para obter mais informações, consulte [Habilitar limite de compilações simultâneas](create-project.md#enable-concurrent-build-limit.console).
+ Se o projeto de compilação não tiver um limite de compilação simultânea definido, as compilações serão colocadas em fila se o número de compilações em execução atingir o limite de compilações simultâneas para a plataforma e o tipo de computação. O número máximo de compilações em uma fila é cinco vezes o limite de compilações simultâneas. Para obter mais informações, consulte [Cotas para AWS CodeBuild](limits.md).

  Uma compilação em uma fila que não é iniciada após o número de minutos especificado no seu valor de tempo limite é removida da fila. O valor do tempo limite padrão é de 8 horas. Você pode substituir o tempo limite da fila de compilação por um valor entre cinco minutos e oito horas quando você executar a compilação. Para obter mais informações, consulte [Execute AWS CodeBuild compilações manualmente](run-build.md).

  Não é possível prever a ordem na qual as compilações colocadas em fila começam. 

**nota**  
É possível acessar até um ano de histórico de uma compilação.

Você pode executar estas tarefas para trabalhar com builds:

**Topics**
+ [Execute AWS CodeBuild compilações manualmente](run-build.md)
+ [Execute compilações em computação AWS Lambda](lambda.md)
+ [Executar compilações em frotas de capacidade reservada](fleets.md)
+ [Executar compilações em lotes](batch-build.md)
+ [Executar testes paralelos em compilações em lote](parallel-test.md)
+ [Compilações em cache para melhorar o desempenho](build-caching.md)
+ [Compilações de depuração AWS CodeBuild](debug-builds.md)
+ [Excluir compilações no AWS CodeBuild](delete-builds.md)
+ [Repita as compilações manualmente em AWS CodeBuild](retry-build.md)
+ [Repetir compilações automaticamente no AWS CodeBuild](auto-retry-build.md)
+ [Interromper compilações no AWS CodeBuild](stop-build.md)
+ [Interromper compilações em lote no AWS CodeBuild](stop-batch-build.md)
+ [O gatilho AWS CodeBuild é criado automaticamente](build-triggers.md)
+ [Veja os detalhes da construção em AWS CodeBuild](view-build-details.md)
+ [Veja uma lista de IDs incorporações AWS CodeBuild](view-build-list.md)
+ [Veja uma lista de compilações IDs para um projeto de compilação em AWS CodeBuild](view-builds-for-project.md)

# Execute AWS CodeBuild compilações manualmente
<a name="run-build"></a>

Você pode usar o AWS CodeBuild console, AWS CLI, ou AWS SDKs para executar uma compilação CodeBuild.

**Topics**
+ [Execute compilações localmente com o agente AWS CodeBuild](use-codebuild-agent.md)
+ [Executar uma compilação (console)](run-build-console.md)
+ [Executar uma compilação (AWS CLI)](run-build-cli.md)
+ [Executar uma compilação em lote (AWS CLI)](run-batch-build-cli.md)
+ [Começar a executar compilações automaticamente (AWS CLI)](run-build-cli-auto-start.md)
+ [Parar de executar compilações automaticamente (AWS CLI)](run-build-cli-auto-stop.md)
+ [Executar uma compilação (AWS SDKs)](run-build-sdks.md)

# Execute compilações localmente com o agente AWS CodeBuild
<a name="use-codebuild-agent"></a>

Você pode usar o AWS CodeBuild agente para executar CodeBuild compilações em uma máquina local. Há agentes disponíveis para plataformas x86\$164 e ARM.

Também é possível assinar para receber notificações quando novas versões do agente são publicadas. 

## Pré-requisitos
<a name="use-codebuild-agent.prerequisites"></a>

Antes de começar, será necessário fazer o seguinte:
+ Instale o Git na sua máquina local.
+ Instale e configure o [Docker](https://www.docker.com/) na máquina local.

## Configurar a imagem de compilação
<a name="use-codebuild-agent.setup-image"></a>

Basta configurar a imagem de compilação na primeira vez em que executar o agente ou quando a imagem for alterada.

**Como configurar a imagem de compilação**

1. [Se quiser usar uma imagem curada do Amazon Linux 2, você pode extraí-la do repositório CodeBuild público do Amazon ECR em https://gallery.ecr. aws/codebuild/amazonlinux-x86\$164-standard](https://gallery.ecr.aws/codebuild/amazonlinux-x86_64-standard) com o seguinte comando:

   ```
   $ docker pull public.ecr.aws/codebuild/amazonlinux-x86_64-standard:4.0
   ```

   Como alternativa, se você deseja usar outra imagem do Linux, execute as seguintes etapas:

   1. Clone o repositório CodeBuild de imagens:

      ```
      $ git clone https://github.com/aws/aws-codebuild-docker-images.git
      ```

   1. Mude para o diretório de imagens. Para este exemplo, use a imagem `aws/codebuild/standard:5.0`:

      ```
      $ cd aws-codebuild-docker-images/ubuntu/standard/5.0
      ```

   1. Crie a imagem. Isso levará vários minutos. 

      ```
      $ docker build -t aws/codebuild/standard:5.0 .
      ```

1. Baixe o CodeBuild agente.

   Para baixar a versão x86\$164 do agente, execute o seguinte comando:

   ```
   $ docker pull public.ecr.aws/codebuild/local-builds:latest
   ```

   Para baixar a versão ARM do agente, execute o seguinte comando:

   ```
   $ docker pull public.ecr.aws/codebuild/local-builds:aarch64
   ```

1. <a name="codebuild-agent-sha"></a>O CodeBuild agente está disponível em [https://gallery.ecr. aws/codebuild/local-constrói](https://gallery.ecr.aws/codebuild/local-builds). 

   A assinatura do Secure Hash Algorithm (SHA) para a versão x86\$164 do agente é:

   ```
   sha256:ccb19bdd7af94e4dc761e4c58c267e9455c28ec68d938086b4dc1cf8fe6b0940
   ```

   A assinatura SHA para a versão ARM do agente é:

   ```
   sha256:7d7b5d35d2ac4e062ae7ba8c662ffed15229a52d09bd0d664a7816c439679192
   ```

   É possível usar o SHA para identificar a versão do agente. Para ver a assinatura SHA do agente, execute o seguinte comando e procure o SHA em `RepoDigests`: 

   ```
   $ docker inspect public.ecr.aws/codebuild/local-builds:latest
   ```

## Execute o CodeBuild agente
<a name="use-codebuild-agent.run-agent"></a>

**Para executar o CodeBuild agente**

1. Mude para o diretório que contém a fonte do projeto de compilação.

1. Baixe o script [codebuild\$1build.sh](https://github.com/aws/aws-codebuild-docker-images/blob/master/local_builds/codebuild_build.sh).

   ```
   $ curl -O  https://raw.githubusercontent.com/aws/aws-codebuild-docker-images/master/local_builds/codebuild_build.sh
   $ chmod +x codebuild_build.sh
   ```

1. Execute o script `codebuild_build.sh` e especifique as imagens de contêiner e o diretório de saída:

   Para executar uma compilação x86\$164, execute o seguinte comando:

   ```
   $ ./codebuild_build.sh -i <container-image> -a <output directory>
   ```

   Para executar uma compilação ARM, execute o seguinte comando:

   ```
   $ ./codebuild_build.sh -i <container-image> -a <output directory> -l public.ecr.aws/codebuild/local-builds:aarch64
   ```

   *<container-image>*Substitua pelo nome da imagem do contêiner, como `aws/codebuild/standard:5.0` ou`public.ecr.aws/codebuild/amazonlinux-x86_64-standard:4.0`.

   O script inicia a imagem de compilação e executa a compilação no projeto no diretório atual. Para especificar a localização do projeto de compilação, adicione a opção `-s <build project directory>` ao comando script.

## Receba notificações sobre novas versões do CodeBuild agente
<a name="receive-codebuild-agent-notifications"></a>

Você pode assinar as notificações do Amazon SNS para ser notificado quando novas versões do AWS CodeBuild agente forem lançadas. 

**Para assinar as notificações CodeBuild do agente**

1. [Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home) 

1. Na barra de navegação, se ainda não estiver selecionada, altere a AWS região para **Leste dos EUA (Norte da Virgínia)**. Você deve selecionar essa AWS região porque as notificações do Amazon SNS que você está assinando são criadas nessa região. 

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

1. Selecione **Create subscription**. 

1. Em **Criar inscrição**, faça o seguinte: 

   1. Para **Topic ARN** (ARN do tópico), use o seguinte nome do recurso da Amazon (ARN): 

      ```
      arn:aws:sns:us-east-1:850632864840:AWS-CodeBuild-Local-Agent-Updates
      ```

   1. Em **Protocolo**, escolha **Email** ou **SMS**. 

   1. Em **Endpoint**, escolha onde deseja receber as notificações (e-mail ou SMS). Digite um e-mail, um endereço ou número de telefone, incluindo o código de área. 

   1. Selecione **Criar assinatura**. 

   1. Se você escolher **E-mail**, receberá um e-mail solicitando que confirme a inscrição. Siga as instruções no e-mail para concluir sua inscrição. 

      Se não deseja mais receber essas notificações, use o procedimento a seguir para cancelar a assinatura. 

**Para cancelar a assinatura das notificações do CodeBuild agente**

1. [Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home) 

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

1. Selecione a assinatura e, em **Actions (Ações)**, escolha **Delete subscriptions (Excluir assinaturas)**. Quando for solicitada sua confirmação, escolha **Delete**. 

# Executar uma compilação (console)
<a name="run-build-console"></a>

Para usar o AWS CodePipeline para executar uma compilação com o CodeBuild, ignore estas etapas e siga as instruções em [Use CodeBuild com CodePipeline](how-to-create-pipeline.md).

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, selecione **Projetos de compilação**.

1. Na lista de projetos de compilação, selecione o projeto de compilação.

1. É possível executar a compilação com as configurações padrão do projeto de compilação ou substituí-las somente para essa compilação.

   1. Se você quiser executar a compilação com as configurações padrão do projeto de compilação, escolha **Iniciar compilação**. A compilação é iniciada imediatamente.

   1. Se quiser substituir as configurações padrão do projeto de compilação, escolha **Iniciar compilação com substituições**. Na página **Iniciar compilação**, é possível substituir o seguinte:
      + **Configuração de compilação**
      + **Fonte**
      + **Substituições de variáveis de ambiente**

      Se precisar selecionar substituições mais avançadas, escolha **Substituições avançadas de compilações**. Nessa página, é possível substituir o seguinte:
      + **Configuração de compilação**
      + **Fonte**
      + **Environment**
      + **Buildspec**
      + **Artefatos**
      + **Logs**

      Depois de fazer as seleções de substituição, escolha **Iniciar compilação**.

Para obter informações detalhadas sobre este build, consulte [Visualizar detalhes de compilação (console)](view-build-details.md#view-build-details-console).

# Executar uma compilação (AWS CLI)
<a name="run-build-cli"></a>

**nota**  
Para usar o CodePipeline para executar uma compilação com o AWS CodeBuild, ignore estas etapas e siga as instruções em [Crie um pipeline que use CodeBuild (AWS CLI)](how-to-create-pipeline-cli.md).  
Para obter mais informações sobre como usar o AWS CLI com o CodeBuild, consulte [Referência da linha de comando](cmd-ref.md).

1. Execute o comando `start-build` de uma das seguintes maneiras:

   ```
   aws codebuild start-build --project-name <project-name>
   ```

   Use esta maneira se você quiser executar um build que utiliza a versão mais recente do artefato de entrada de build e as configurações existentes do projeto de build.

   ```
   aws codebuild start-build --generate-cli-skeleton
   ```

   Use esta maneira se quiser executar uma compilação com uma versão anterior do artefato de entrada da compilação ou se quiser substituir as configurações dos artefatos de saída da compilação, as variáveis de ambiente, o buildspec ou o período de tempo limite padrão da compilação.

1. Se você executar o comando **start-build** com a opção `--project-name`, substitua *<project-name>* pelo nome do projeto de compilação e avance para a etapa 6 deste procedimento. Para obter uma lista de projetos de compilação, consulte [Exibir os nomes do projeto de compilação](view-project-list.md).

1. Se você executar o comando **start-build** com a opção `--idempotency-token`, um identificador, ou token, exclusivo que diferencia maiúsculas e minúsculas é incluído na solicitação `start-build`. O token é válido por 5 minutos após a solicitação. Se você repetir a solicitação `start-build` com o mesmo token, mas alterar um parâmetro, o CodeBuild vai gerar um erro de incompatibilidade de parâmetro.

1. Se você executar o comando **start-build** com a opção `--generate-cli-skeleton`, os dados formatados JSON serão exibidos na saída. Copie os dados para um arquivo (por exemplo, `start-build.json`) em um local no computador local ou em uma instância na qual a AWS CLI esteja instalada. Altere os dados copiados para corresponder ao seguinte formato, e salve os resultados:

   ```
   {
     "projectName": "projectName",
     "sourceVersion": "sourceVersion",
     "artifactsOverride": {
       "type": "type",
       "location": "location",
       "path": "path",
       "namespaceType": "namespaceType",
       "name": "artifactsOverride-name",
       "packaging": "packaging"
     },
     "buildspecOverride": "buildspecOverride",
     "cacheOverride": {
       "location": "cacheOverride-location",
       "type": "cacheOverride-type"
     },
     "certificateOverride": "certificateOverride",
     "computeTypeOverride": "computeTypeOverride",
     "environmentTypeOverride": "environmentTypeOverride",
     "environmentVariablesOverride": {
       "name": "environmentVariablesOverride-name",
       "value": "environmentVariablesValue",
       "type": "environmentVariablesOverride-type"
     },
     "gitCloneDepthOverride": "gitCloneDepthOverride",
     "imageOverride": "imageOverride",
     "idempotencyToken": "idempotencyToken",
     "insecureSslOverride": "insecureSslOverride",
     "privilegedModeOverride": "privilegedModeOverride",
     "queuedTimeoutInMinutesOverride": "queuedTimeoutInMinutesOverride",
     "reportBuildStatusOverride": "reportBuildStatusOverride",
     "timeoutInMinutesOverride": "timeoutInMinutesOverride",
     "sourceAuthOverride": "sourceAuthOverride",
     "sourceLocationOverride": "sourceLocationOverride",
     "serviceRoleOverride": "serviceRoleOverride",
     "sourceTypeOverride": "sourceTypeOverride"
   }
   ```

   Substitua os seguintes espaços reservados:
   + *projectName*: String necessária. O nome de projeto de build a ser usado neste build. 
   + *sourceVersion*: String opcional. Uma versão do código-fonte a ser compilado, como se segue:
     + Para o Amazon S3, o ID de versão correspondente à versão do arquivo ZIP de entrada que você quer compilar. Se *sourceVersion* não estiver especificado, a versão mais recente será usada.
     + Para CodeCommit, a ID de confirmação correspondente à versão do código-fonte que você deseja compilar. Se *sourceVersion* não estiver especificado, o ID de confirmação HEAD da ramificação padrão será usado. (Não é possível especificar um nome de tag para *sourceVersion*, mas você pode especificar o ID de confirmação da tag.)
     + Para o GitHub, o ID de confirmação, a solicitação, o nome da ramificação ou o nome da tag que corresponda à versão do código-fonte que você deseja compilar. Caso seja especificado, um ID de solicitação deve usar o formato `pr/pull-request-ID` (por exemplo, `pr/25`). Se um nome de ramificação for especificado, o ID de confirmação HEAD da ramificação será usado. Se *sourceVersion* não estiver especificado, o ID de confirmação HEAD da ramificação padrão será usado. 
     + Para o Bitbucket, o ID de confirmação, o nome da ramificação ou o nome da tag que corresponda à versão do código-fonte que você deseja compilar. Se um nome de ramificação for especificado, o ID de confirmação HEAD da ramificação será usado. Se *sourceVersion* não estiver especificado, o ID de confirmação HEAD da ramificação padrão será usado. 
   + Os seguintes espaços reservados são para: `artifactsOverride`.
     + *type*: opcional. O tipo de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
     + *location*: opcional. O local de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
     + *path*: opcional. O caminho de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
     + *namespaceType*: opcional. O tipo de caminho de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
     + *name*: opcional. O nome de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
     + *packaging*: opcional. O tipo de empacotamento de artefato de saída de build que sobrescreve neste build aquele definido no projeto de build.
   + *buildspecOverride*: opcional. Uma declaração de buildspec que sobrescreve para esta compilação aquela definida no projeto de compilação. Se estiver definido, esse valor poderá ser uma definição de buildspec em linha ou o caminho para um arquivo buildspec alternativo relativo ao valor da variável de ambiente `CODEBUILD_SRC_DIR` interna ou o caminho para um bucket do S3. O bucket do S3 deve estar na mesma região da AWS que o projeto de compilação. Especifique o arquivo buildspec usando seu ARN (por exemplo, `arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`). Se esse valor não for fornecido ou for definido como uma string vazia, o código-fonte deverá conter um arquivo `buildspec.yml` em seu diretório raiz. Para obter mais informações, consulte [Nome do arquivo buildspec e local de armazenamento](build-spec-ref.md#build-spec-ref-name-storage).
   + Os seguintes espaços reservados são para: `cacheOverride`.
     + *cacheOverride-location*: opcional. O local de um objeto `ProjectCache` desta compilação que substitui o objeto `ProjectCache` especificado no projeto de compilação. `cacheOverride` é opcional e utiliza um objeto `ProjectCache`. `location` é necessário em um objeto `ProjectCache`.
     + *cacheOverride-type*: opcional. O tipo de um objeto `ProjectCache` desta compilação que substitui o objeto `ProjectCache` especificado no projeto de compilação. `cacheOverride` é opcional e utiliza um objeto `ProjectCache`. `type` é necessário em um objeto `ProjectCache`.
   + *certificateOverride*: opcional. O nome de um certificado para esse build que substitui o especificado no projeto de build.
   + *environmentTypeOverride*: opcional. Um tipo de contêiner para esse build que substitui o especificado no projeto de build. A string atual válida é `LINUX_CONTAINER`.
   + Os seguintes espaços reservados são para: `environmentVariablesOverride`.
     + *environmentVariablesOverride-name*: opcional. O nome de uma variável de ambiente no projeto de build, cujo valor você deseja sobrescrever para este build.
     + *environmentVariablesOverride-type*: opcional. O tipo de variável de ambiente no projeto de compilação cujo valor você deseja substituir para essa compilação.
     + *environmentVariablesValue*: opcional. O valor da variável de ambiente definida no projeto de compilação que você deseja substituir para essa compilação.
   + *gitCloneDepthOverride*: opcional. O valor de **Git clone depth** no projeto de compilação que você deseja substituir para esta compilação. Se o tipo de origem é o Amazon S3, esse valor não é compatível.
   + *imageOverride*: opcional. O nome de uma imagem para esse build que substitui o especificado no projeto de build.
   + *idempotencyToken*: opcional. Uma string que serve como token para especificar que a solicitação de build é idempotente. Você pode escolher qualquer string com 64 caracteres ou menos. O token é válido por 5 minutos após a solicitação start-build. Se você repetir a solicitação start-build com o mesmo token, mas alterar um parâmetro, o CodeBuild vai gerar um erro de incompatibilidade de parâmetro. 
   + *insecureSslOverride*: booleano opcional que especifica substituir ou não a configuração de TLS insegura especificada no projeto de compilação. A configuração de TLS insegura determina ignorar ou não avisos do TLS ao conectar-se ao código-fonte do projeto. Essa substituição se aplica somente se a origem do build for GitHub Enterprise Server.
   + *privilegedModeOverride*: booleano opcional. Se definido como verdadeiro, o build substitui o modo privilegiado no projeto de build.
   +  *queuedTimeoutInMinutesOverride*: número inteiro opcional que especifica o número de minutos pelos quais uma compilação tem permissão para ser colocada em fila antes de atingir o tempo limite. O valor mínimo é de cinco minutos e o valor máximo é 480 minutos (oito horas). 
   + *reportBuildStatusOverride*: valor booliano opcional que especifica o envio dos status inicial e final de uma compilação ao seu provedor de origem. Se você definir esse valor com um provedor de origem que não seja o GitHub, GitHub Enterprise Server ou o Bitbucket, uma invalidInputException será lançada.
   + *sourceAuthOverride*: string opcional. Um tipo de autorização para este build que sobrescreve a definida no projeto build. Essa substituição se aplica somente se a origem do projeto de compilação for Bitbucket ou GitHub.
   + *sourceLocationOverride*: string opcional. Um local que sobrescreve neste build o local de origem definido no projeto de build.
   + *serviceRoleOverride*: string opcional. O nome de uma função de serviço para esse build que substitui o especificado no projeto de build.
   + *sourceTypeOverride*: string opcional. Um tipo de origem neste build que sobrescreve a origem definida no projeto de build. As strings válidas são `NO_SOURCE`, `CODECOMMIT`, `CODEPIPELINE`, `GITHUB`, `S3`, `BITBUCKET`, e `GITHUB_ENTERPRISE`.
   + *timeoutInMinutesOverride*: Número opcional. O número de minutos de tempo limite do build que sobrescreve para este build aquele definido no projeto de build. 

   Recomendamos armazenar uma variável de ambiente com um valor confidencial, como um ID de chave de acesso da AWS, uma chave de acesso secreta da AWS ou uma senha como um parâmetro no Amazon EC2 Systems Manager Parameter Store. O CodeBuild poderá usar um parâmetro armazenado no Amazon EC2 Systems Manager Parameter Store apenas se o nome do parâmetro começar com `/CodeBuild/` (por exemplo, `/CodeBuild/dockerLoginPassword`). É possível usar o console do CodeBuild para criar um parâmetro no Amazon EC2 Systems Manager. Escolha **Create a parameter (Criar um parâmetro)** e siga as instruções. (Nessa caixa de diálogo, em **Chave do KMS**, é possível especificar o ARN de uma chave do AWS KMS na conta. O Amazon EC2 Systems Manager usa essa chave para criptografar o valor do parâmetro durante o armazenamento e descriptografá-lo durante a recuperação.) Se você usar o console do CodeBuild para criar um parâmetro, o console começará o nome do parâmetro com `/CodeBuild/`, pois ele está sendo armazenado. No entanto, se você usar o console do Amazon EC2 Systems Manager Parameter Store para criar um parâmetro, deverá iniciar o nome do parâmetro com `/CodeBuild/` e definir **Tipo** como **String segura**. Para obter mais informações, consulte [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) e [Walkthrough: Create and test a String parameter (console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html) no *Guia do usuário do Amazon EC2 Systems Manager*.

   Se o projeto de compilação se referir a parâmetros armazenados no Amazon EC2 Systems Manager Parameter Store, o perfil de serviço do projeto de compilação deverá permitir a ação `ssm:GetParameters`. Se você tiver escolhido **Criar um perfil de serviço na conta** antes, o CodeBuild incluirá essa ação no perfil de serviço padrão para o projeto de compilação automaticamente. No entanto, se escolher **Choose an existing service role from your account**, você deverá incluir essa ação na função de serviço separadamente.

   As variáveis de ambiente definidas por você substituem variáveis de ambiente existentes. Por exemplo, se a imagem de Docker já contiver uma variável de ambiente chamada `MY_VAR` com um valor de `my_value` e você definir uma variável de ambiente chamada `MY_VAR` com um valor de `other_value`, `my_value` será substituído por `other_value`. Da mesma maneira, se a imagem de Docker já contiver uma variável de ambiente chamada `PATH` com um valor de `/usr/local/sbin:/usr/local/bin` e você definir uma variável de ambiente chamada `PATH` com um valor de `$PATH:/usr/share/ant/bin`, `/usr/local/sbin:/usr/local/bin` será substituído pelo valor literal `$PATH:/usr/share/ant/bin`. 

   Não defina nenhuma variável de ambiente com um nome que comece com `CODEBUILD_`. Este prefixo está reservado para uso interno.

   Se uma variável de ambiente com o mesmo nome for definida em vários locais, o valor da variável de ambiente será determinado como se segue:
   + O valor na chamada de operação de início de build tem a maior prioridade.
   + O valor na definição de projeto de build tem a precedência seguinte.
   + O valor na declaração do arquivo buildspec tem a menor prioridade.

   Para obter informações sobre valores válidos para esses espaços reservados, consulte [Crie um projeto de compilação (AWS CLI)](create-project.md#create-project-cli). Para obter uma lista das últimas configurações de um projeto de compilação, consulte [Exibir os detalhes do projeto de compilação](view-project-details.md).

1. Alterne para o diretório que contenha o arquivo que você acabou de salvar e execute o comando `start-build` novamente.

   ```
   aws codebuild start-build --cli-input-json file://start-build.json
   ```

1. Se bem-sucedidos, dados semelhantes aos descritos no procedimento [Para executar a compilação](getting-started-overview.md#getting-started-run-build-cli) serão exibidos na saída.

Para trabalhar com informações detalhadas sobre este build, anote o valor `id` da saída e consulte [Visualizar detalhes de compilação (AWS CLI)](view-build-details.md#view-build-details-cli).

# Executar uma compilação em lote (AWS CLI)
<a name="run-batch-build-cli"></a>

1. Execute o comando `start-build-batch` de uma das seguintes maneiras:

   ```
   aws codebuild start-build-batch --project-name <project-name>
   ```

   Use esta maneira se você quiser executar um build que utiliza a versão mais recente do artefato de entrada de build e as configurações existentes do projeto de build.

   ```
   aws codebuild start-build-batch --generate-cli-skeleton > <json-file>
   ```

   Use esta maneira se quiser executar uma compilação com uma versão anterior do artefato de entrada da compilação ou se quiser substituir as configurações dos artefatos de saída da compilação, as variáveis de ambiente, o buildspec ou o período de tempo limite padrão da compilação.

1. Se você executar o comando **start-build-batch** com a opção `--project-name`, substitua *<project-name>* pelo nome do projeto de compilação e avance para a etapa 6 deste procedimento. Para obter uma lista de projetos de compilação, consulte [Exibir os nomes do projeto de compilação](view-project-list.md).

1. Se você executar o comando **start-build-batch** com a opção `--idempotency-token`, um identificador, ou um token, exclusivo que diferencia maiúsculas e minúsculas será incluído na solicitação `start-build-batch`. O token é válido por 5 minutos após a solicitação. Se você repetir a solicitação `start-build-batch` com o mesmo token, mas alterar um parâmetro, o CodeBuild vai gerar um erro de incompatibilidade de parâmetro.

1. Se você executar o comando **start-build-batch** com a opção `--generate-cli-skeleton`, os dados formatados em JSON serão exibidos na saída do arquivo *<json-file>*. Esse arquivo é semelhante ao esqueleto produzido pelo comando **start-build**, com a adição do objeto a seguir. Para obter mais informações sobre os objetos comuns, consulte [Executar uma compilação (AWS CLI)](run-build-cli.md).

   Modifique esse arquivo para adicionar qualquer substituição de compilação e salve os resultados.

   ```
     "buildBatchConfigOverride": {
       "combineArtifacts": combineArtifacts,
       "restrictions": {
         "computeTypesAllowed": [
           allowedComputeTypes
         ],
         "maximumBuildsAllowed": maximumBuildsAllowed
       },
       "serviceRole": "batchServiceRole",
       "timeoutInMins": batchTimeout
     }
   ```

   O objeto `buildBatchConfigOverride` é uma estrutura [ProjectBuildBatchConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectBuildBatchConfig.html) que contém as informações de configuração de compilação em lote dessa compilação.  
*combineArtifacts*  
Um valor booliano que especifica se os artefatos da compilação em lote devem ser combinados em um único local de artefato.  
*allowedComputeTypes*  
Uma matriz de strings que especificam os tipos de computação que são permitidos para a compilação em lote. Consulte [Build environment compute types](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html) para obter esses valores.   
*maximumBuildsAllowed*  
Especifica o número máximo de criações permitidas.  
*batchServiceRole*  
Especifica o ARN da função de serviço para o projeto de compilação em lote.  
*batchTimeout*  
Especifica a quantidade máxima de tempo, em minutos, em que a compilação em lote deve ser concluída.

1. Alterne para o diretório que contenha o arquivo que você acabou de salvar e execute o comando `start-build-batch` novamente.

   ```
   aws codebuild start-build-batch --cli-input-json file://start-build.json
   ```

1. Se for bem-sucedida, a representação JSON de um objeto [BuildBatch](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BuildBatch.html) será exibida na saída do console. Consulte a [Sintaxe de resposta StartBuildBatch](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html#API_StartBuildBatch_ResponseSyntax) para ver um exemplo desses dados.

# Começar a executar compilações automaticamente (AWS CLI)
<a name="run-build-cli-auto-start"></a>

Se seu código-fonte estiver armazenado em um repositório GitHub ou em um repositório do GitHub Enterprise Server, você poderá usar GitHub webhooks para AWS CodeBuild reconstruir seu código-fonte sempre que uma alteração de código for enviada para o repositório.

Execute o comando **create-webhook**, como se segue:

```
aws codebuild create-webhook --project-name <project-name>
```

*<project-name>*é o nome do projeto de construção que contém o código-fonte a ser reconstruído.

Pois GitHub, informações semelhantes às seguintes aparecem na saída:

```
{
  "webhook": {
    "url": "<url>"
  }
}
```

*<url>*é a URL do GitHub webhook.

Para o GitHub Enterprise Server, informações semelhantes às seguintes aparecem na saída:

![\[Exemplo de informações de saída.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/create-webhook-ghe.png)


1. Copie a chave secreta e a URL da carga da saída. Você precisa que eles adicionem um webhook no GitHub Enterprise Server. 

1. No GitHub Enterprise Server, escolha o repositório em que seu CodeBuild projeto está armazenado. Escolha **Configurações**, escolha **Hooks e serviços**, e depois escolha **Adicionar Webhook**. 

1. Insira a URL da carga útil e a chave secreta, aceite os valores padrão para os outros campos e, em seguida, escolha **Adicionar webhook**.

# Parar de executar compilações automaticamente (AWS CLI)
<a name="run-build-cli-auto-stop"></a>

Se seu código-fonte estiver armazenado em um repositório GitHub ou em um repositório do GitHub Enterprise Server, você poderá configurar GitHub webhooks para AWS CodeBuild reconstruir seu código-fonte sempre que uma alteração de código for enviada para o repositório. Para obter mais informações, consulte [Começar a executar compilações automaticamente (AWS CLI)](run-build-cli-auto-start.md).

Se tiver habilitado esse comportamento, você poderá desativá-lo executando o comando `delete-webhook` da seguinte maneira:

```
aws codebuild delete-webhook --project-name <project-name>
```
+ onde *<project-name>* é o nome do projeto de construção que contém o código-fonte a ser reconstruído.

Se esse comando for bem-sucedido, nenhuma informação e nenhum dado será exibido na saída.

**nota**  
Isso exclui o webhook somente do seu CodeBuild projeto. Você também deve excluir o webhook do seu repositório GitHub ou do GitHub Enterprise Server.

# Executar uma compilação (AWS SDKs)
<a name="run-build-sdks"></a>

Para usar CodePipeline para executar uma compilação com AWS CodeBuild, pule essas etapas e siga as instruções em [Use AWS CodeBuild with AWS CodePipeline para testar o código e executar compilações](how-to-create-pipeline.md) vez disso.

Para obter informações sobre como usar CodeBuild com o AWS SDKs, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md) o.

# Execute compilações em computação AWS Lambda
<a name="lambda"></a>

AWS Lambda a computação oferece velocidades de inicialização otimizadas para suas compilações. AWS Lambda suporta compilações mais rápidas devido a uma menor latência de inicialização. AWS Lambda também é dimensionado automaticamente, para que as compilações não fiquem esperando na fila para serem executadas. No entanto, existem alguns casos de uso que AWS Lambda não oferecem suporte e, se afetarem você, use a computação do EC2. Para obter mais informações, consulte [Limitações da AWS Lambda computação](#lambda.limitations).

**Topics**
+ [Quais ferramentas e runtimes serão incluídos nas imagens do Docker do ambiente de runtime selecionado que são executadas no AWS Lambda?](#lambda.tools)
+ [E se a imagem selecionada não incluir as ferramentas de que preciso?](#lambda.custom)
+ [Em quais regiões oferecem suporte à AWS Lambda computação? CodeBuild](#lambda.regions)
+ [Limitações da AWS Lambda computação](#lambda.limitations)
+ [Implemente uma função Lambda usando o AWS SAM CodeBuild Lambda Java](sample-lambda-sam-gradle.md)
+ [Crie um aplicativo React de página única com CodeBuild Lambda Node.js](sample-lambda-react-nodejs.md)
+ [Atualize a configuração de uma função Lambda com o CodeBuild Lambda Python](sample-lambda-boto3-python.md)

## Quais ferramentas e runtimes serão incluídos nas imagens do Docker do ambiente de runtime selecionado que são executadas no AWS Lambda?
<a name="lambda.tools"></a>

AWS Lambda oferece suporte às seguintes ferramentas: AWS CLI v2, AWS SAM CLI, git, go, Java, Node.js, Python, pip, Ruby e.NET.

## E se a imagem selecionada não incluir as ferramentas de que preciso?
<a name="lambda.custom"></a>

Se a imagem selecionada não incluir as ferramentas necessárias, você pode fornecer uma imagem do Docker do ambiente personalizado que inclui as ferramentas necessárias.

**nota**  
O Lambda não oferece suporte a funções que usam imagens de contêiner multiarquitetura. Consulte mais informações em [Criar uma função do Lambda usando uma imagem de contêiner](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-reqs) no *Guia do desenvolvedor do AWS Lambda *.

Observe que você precisa das seguintes permissões do Amazon ECR para usar imagens personalizadas para computação Lambda:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/image-repo"
        }
    ]
}
```

------

Observe também que `curl` ou `wget` deve ser instalado para usar imagens personalizadas.

## Em quais regiões oferecem suporte à AWS Lambda computação? CodeBuild
<a name="lambda.regions"></a>

Em CodeBuild, a AWS Lambda computação é suportada 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/).

## Limitações da AWS Lambda computação
<a name="lambda.limitations"></a>

Há alguns casos de uso que AWS Lambda não são compatíveis e, se afetarem você, use a computação do EC2:
+ AWS Lambda não oferece suporte a ferramentas que exijam permissões de root. Para ferramentas como `yum` ou `rpm`, use o tipo de computação do EC2 ou outras ferramentas que não exijam permissões de raiz.
+ AWS Lambda não suporta compilações ou execuções do Docker.
+ AWS Lambda não suporta gravação em arquivos externos`/tmp`. Os gerenciadores de pacotes incluídos estão configurados para usar o diretório `/tmp` por padrão para baixar e referenciar pacotes.
+ AWS Lambda não oferece suporte ao tipo de ambiente `LINUX_GPU_CONTAINER` e não é compatível com o Windows Server Core 2019.
+ AWS Lambda não suporta armazenamento em cache, tempos limite de compilação personalizados, tempo limite de fila, emblemas de construção, modo privilegiado, ambientes de tempo de execução personalizados ou tempos de execução superiores a 15 minutos.
+ AWS Lambda não oferece suporte à conectividade VPC, a um intervalo fixo de endereços IP de CodeBuild origem, EFS, instalação de certificados ou acesso SSH com o Session Manager.

# Implemente uma função Lambda usando o AWS SAM CodeBuild Lambda Java
<a name="sample-lambda-sam-gradle"></a>

O AWS Serverless Application Model (AWS SAM) é uma estrutura de código aberto para criar aplicativos sem servidor. Para obter mais informações, consulte o [AWS Serverless Application Model repositório](https://github.com/aws/serverless-application-model) em. GitHub O exemplo de Java a seguir usa o Gradle para criar e testar uma AWS Lambda função. Depois disso, a AWS SAM CLI é usada para implantar o CloudFormation modelo e o pacote de implantação. Ao usar o CodeBuild Lambda, as etapas de construção, teste e implantação são todas gerenciadas automaticamente, permitindo que a infraestrutura seja atualizada rapidamente sem intervenção manual em uma única compilação.

## Configurar seu AWS SAM repositório
<a name="sample-lambda-sam-gradle.set-up-repo"></a>

Crie um AWS SAM `Hello World` projeto usando a AWS SAM CLI.

**Para criar seu AWS SAM projeto**

1. Siga as instruções no *Guia do AWS Serverless Application Model desenvolvedor* para [instalar a AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) em sua máquina local.

1. Execute `sam init` e selecione a configuração de projeto a seguir.

   ```
   Which template source would you like to use?: 1 - AWS Quick Start Templates
   Choose an AWS Quick Start application template: 1 - Hello World Example
   Use the most popular runtime and package type? (Python and zip) [y/N]: N
   Which runtime would you like to use?: 8 - java21
   What package type would you like to use?: 1 - Zip
   Which dependency manager would you like to use?: 1 - gradle
   Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N
   Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N
   Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]:  N
   Project name [sam-app]: <insert project name>
   ```

1. Carregue a pasta AWS SAM do projeto em um repositório de origem compatível. Para obter uma lista dos tipos de fonte compatíveis, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crie um projeto CodeBuild Lambda Java
<a name="sample-lambda-sam-gradle.create-project"></a>

Crie um projeto AWS CodeBuild Lambda Java e configure as permissões do IAM necessárias para a construção.

**Para criar seu projeto CodeBuild Lambda Java**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Se uma página de CodeBuild informações for exibida, escolha **Criar projeto de construção**. Caso contrário, no painel de navegação, expanda **Compilar**, escolha **Projetos de compilação** e, depois, **Criar projeto de compilação**. 

1. Em **Nome do projeto**, insira um nome para esse projeto de compilação. Os nomes dos projetos de criação devem ser exclusivos em cada AWS conta. Também é possível incluir uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.

1. Em **Código-fonte**, selecione o repositório de origem em que seu AWS SAM projeto está localizado.

1. Em **Ambiente**:
   + Para **Computação**, selecione **Lambda**.
   + Em **Runtime(s)**, selecione **Java**.
   + Para **Imagem**, selecione **aws/codebuild/amazonlinux-x86\$164-lambda-standard:corretto21**.
   + Em **Perfil de serviço**, deixe a opção **Novo perfil de serviço** selecionada. Anote o **nome da função**. Isso será necessário quando você atualizar as permissões do IAM do projeto posteriormente neste exemplo.

1. Selecione **Create build project (Criar projeto de compilação)**.

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 **Funções** e selecione o perfil de serviço associado ao projeto. Você pode encontrar sua função de projeto em CodeBuild selecionando seu projeto de compilação, escolhendo **Editar**, **Ambiente** e, em seguida, **Função de serviço**.

1. Escolha a guia **Relacionamentos de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Adicione a seguinte política em linha ao perfil do IAM. Isso será usado para implantar sua AWS SAM infraestrutura posteriormente. Para obter mais informações, consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia do usuário do IAM*.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*",
                   "lambda:*",
                   "iam:*",
                   "apigateway:*",
                   "s3:*"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------

## Configurar o buildspec do projeto
<a name="sample-lambda-sam-gradle.set-up-buildspec"></a>

Para criar, testar e implantar sua função Lambda, CodeBuild lê e executa comandos de compilação a partir de um buildspec.

**Para configurar o buildspec do projeto**

1. No CodeBuild console, selecione seu projeto de compilação e escolha **Editar** e **Buildspec**.

1. Em **Buildspec**, escolha **Inserir comandos de compilação** e, em seguida, escolha **Alternar para editor**.

1. Exclua os comandos de compilação pré-preenchidos e cole o seguinte buildspec.

   ```
   version: 0.2
   env:
     variables:
       GRADLE_DIR: "HelloWorldFunction"
   phases:
     build:
       commands:
         - echo "Running unit tests..."
         - cd $GRADLE_DIR; gradle test; cd ..
         - echo "Running build..."
         - sam build --template-file template.yaml
         - echo "Running deploy..."
         - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml
         - yes | sam deploy
   ```

1. Selecione **Atualizar buildspec**.

## Implemente sua infraestrutura AWS SAM Lambda
<a name="sample-lambda-sam-gradle.deploy"></a>

Use o CodeBuild Lambda para implantar automaticamente sua infraestrutura Lambda

**Para implantar a infraestrutura do Lambda**

1. Selecione **Iniciar compilação**. Isso criará, testará e implantará automaticamente seu AWS SAM aplicativo para AWS Lambda uso CloudFormation.

1. Quando a compilação estiver concluída, navegue até o AWS Lambda console e pesquise sua nova função Lambda sob o nome do AWS SAM projeto.

1. Teste a função do Lambda selecionando **API Gateway** na visão geral da **Função** e clicando no URL do **endpoint de API**. Você deve ver uma página aberta com a mensagem `"message": "hello world"`.

## Limpar a infraestrutura
<a name="sample-lambda-sam-gradle.clean-up"></a>

Para evitar cobranças adicionais pelos recursos que você usou durante este tutorial, exclua os recursos criados pelo seu AWS SAM modelo CodeBuild e.

**Para limpar a infraestrutura**

1. Navegue até o CloudFormation console e selecione `aws-sam-cli-managed-default` o.

1. Em **Recursos**, esvazie o bucket de implantação `SamCliSourceBucket`.

1. Exclua a pilha `aws-sam-cli-managed-default`.

1. Exclua a CloudFormation pilha associada ao seu AWS SAM projeto. Essa pilha deve ter o mesmo nome do seu AWS SAM projeto.

1. Navegue até o CloudWatch console e exclua os grupos de CloudWatch registros associados ao seu CodeBuild projeto.

1. Navegue até o CodeBuild console e exclua seu CodeBuild projeto escolhendo **Excluir projeto de compilação**.

# Crie um aplicativo React de página única com CodeBuild Lambda Node.js
<a name="sample-lambda-react-nodejs"></a>

[Create React App](https://create-react-app.dev/) é uma forma de criar aplicações React de página única. O exemplo de Node.js a seguir usa Node.js para compilar os artefatos de origem de Create React App e retorna os artefatos de compilação.

## Configurar o repositório de origem e o bucket de artefatos
<a name="sample-lambda-react-nodejs.set-up-repo"></a>

Crie um repositório de origem para o projeto usando yarn e Create React App.

**Para configurar o repositório de origem e o bucket de artefatos**

1. Na máquina local, execute `yarn create react-app <app-name>` para criar uma aplicação React simples.

1. Faça o upload da pasta do projeto da aplicação React em um repositório de origem compatível. Para obter uma lista dos tipos de fonte compatíveis, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crie um projeto CodeBuild Lambda Node.js
<a name="sample-lambda-react-nodejs.create-project"></a>

Crie um projeto AWS CodeBuild Lambda Node.js.

**Para criar seu projeto CodeBuild Lambda Node.js**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Se uma página de CodeBuild informações for exibida, escolha **Criar projeto de construção**. Caso contrário, no painel de navegação, expanda **Compilar**, escolha **Projetos de compilação** e, depois, **Criar projeto de compilação**. 

1. Em **Nome do projeto**, insira um nome para esse projeto de compilação. Os nomes dos projetos de criação devem ser exclusivos em cada AWS conta. Também é possível incluir uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.

1. Em **Código-fonte**, selecione o repositório de origem em que seu AWS SAM projeto está localizado.

1. Em **Ambiente**:
   + Para **Computação**, selecione **Lambda**.
   + Em **Runtime(s)**, selecione **Node.js**.
   + Para **Imagem**, selecione **aws/codebuild/amazonlinux-x86\$164-lambda-standard:nodejs20**.

1. Em **Artefatos**:
   + Em **Tipo**, selecione **Amazon S3**.
   + Em **Nome do bucket**, selecione o bucket de artefatos do projeto que você criou anteriormente.
   + Em **Empacotamento de artefatos**, selecione **Zip**.

1. Selecione **Create build project (Criar projeto de compilação)**.

## Configurar o buildspec do projeto
<a name="sample-lambda-react-nodejs.set-up-buildspec"></a>

Para criar seu aplicativo React, CodeBuild lê e executa comandos de compilação a partir de um arquivo buildspec.

**Para configurar o buildspec do projeto**

1. No CodeBuild console, selecione seu projeto de compilação e escolha **Editar** e **Buildspec**.

1. Em **Buildspec**, escolha **Inserir comandos de compilação** e, em seguida, escolha **Alternar para editor**.

1. Exclua os comandos de compilação pré-preenchidos e cole o seguinte buildspec.

   ```
   version: 0.2
   phases:
     build:
       commands:
         - yarn
         - yarn add --dev jest-junit @babel/plugin-proposal-private-property-in-object
         - yarn run build
         - yarn run test -- --coverage --watchAll=false --testResultsProcessor="jest-junit" --detectOpenHandles
   artifacts:
     name: "build-output"
     files:
       - "**/*"
   reports:
     test-report:
       files:
         - 'junit.xml'
       file-format: 'JUNITXML'
     coverage-report:
       files:
         - 'coverage/clover.xml'
       file-format: 'CLOVERXML'
   ```

1. Selecione **Atualizar buildspec**.

## Compilar e executar a aplicação React
<a name="sample-lambda-react-nodejs.build"></a>

Crie o aplicativo React no CodeBuild Lambda, baixe os artefatos de construção e execute o aplicativo React localmente.

**Para compilar e executar a aplicação React**

1. Selecione **Iniciar compilação**.

1. Quando a compilação estiver concluída, navegue até o bucket de artefatos do projeto Amazon S3 e baixe o artefato da aplicação React.

1. Descompacte o artefato de compilação do React e `run npm install -g serve && serve -s build` na pasta do projeto.

1. O comando `serve` servirá o site estático em uma porta local e imprimirá a saída no terminal. Você pode visitar o URL do localhost em `Local:` na saída do terminal para visualizar a aplicação React.

Para saber mais sobre como lidar com a implantação de um servidor baseado em React, consulte [Create React App Deployment](https://create-react-app.dev/docs/deployment/).

## Limpar a infraestrutura
<a name="sample-lambda-react-nodejs.clean-up"></a>

Para evitar cobranças adicionais pelos recursos que você usou durante este tutorial, exclua os recursos criados para o seu CodeBuild projeto.

**Para limpar a infraestrutura**

1. Exclua o bucket do Amazon S3 dos artefatos do projeto

1. Navegue até o CloudWatch console e exclua os grupos de CloudWatch registros associados ao seu CodeBuild projeto.

1. Navegue até o CodeBuild console e exclua seu CodeBuild projeto escolhendo **Excluir projeto de compilação**.

# Atualize a configuração de uma função Lambda com o CodeBuild Lambda Python
<a name="sample-lambda-boto3-python"></a>

O exemplo de Python a seguir usa [Boto3](https://aws.amazon.com/sdk-for-python/) e CodeBuild Lambda Python para atualizar a configuração de uma função Lambda. Esse exemplo pode ser estendido para gerenciar outros AWS recursos de forma programática. Para obter mais informações, consulte a [documentação do Boto3](https://aws.amazon.com/sdk-for-python/).

## Pré-requisitos
<a name="sample-lambda-boto3-python.prerequisites"></a>

Crie ou encontre uma função do Lambda na sua conta.

Esse exemplo pressupõe que você já tenha criado uma função Lambda em sua conta e a CodeBuild usará para atualizar as variáveis de ambiente da função Lambda. Para obter mais informações sobre como configurar uma função Lambda por meio CodeBuild, consulte o [Implemente uma função Lambda usando o AWS SAM CodeBuild Lambda Java](sample-lambda-sam-gradle.md) exemplo ou visite. [AWS Lambda](https://aws.amazon.com/lambda/)

## Configurar o repositório de origem
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Crie um repositório de origem para armazenar o script Python do Boto3.

**Para configurar o repositório de origem**

1. Copie o script do Python a seguir em um novo arquivo chamado `update_lambda_environment_variables.py`.

   ```
   import boto3
   from os import environ
   
   
   def update_lambda_env_variable(lambda_client):
       lambda_function_name = environ['LAMBDA_FUNC_NAME']
       lambda_env_variable = environ['LAMBDA_ENV_VARIABLE']
       lambda_env_variable_value = environ['LAMBDA_ENV_VARIABLE_VALUE']
       print("Updating lambda function " + lambda_function_name + " environment variable "
             + lambda_env_variable + " to " + lambda_env_variable_value)
       lambda_client.update_function_configuration(
           FunctionName=lambda_function_name,
           Environment={
               'Variables': {
                   lambda_env_variable: lambda_env_variable_value
               }
           },
       )
   
   
   if __name__ == "__main__":
       region = environ['AWS_REGION']
       client = boto3.client('lambda', region)
       update_lambda_env_variable(client)
   ```

1. Faça o upload do arquivo Python em um repositório de origem compatível. Para obter uma lista dos tipos de fonte compatíveis, consulte [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Crie um projeto CodeBuild Lambda Python
<a name="sample-lambda-boto3-python.create-project"></a>

Crie um projeto CodeBuild Lambda Python.

**Para criar seu projeto CodeBuild Lambda Java**

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Se uma página de CodeBuild informações for exibida, escolha **Criar projeto de construção**. Caso contrário, no painel de navegação, expanda **Compilar**, escolha **Projetos de compilação** e, depois, **Criar projeto de compilação**. 

1. Em **Nome do projeto**, insira um nome para esse projeto de compilação. Os nomes dos projetos de criação devem ser exclusivos em cada AWS conta. Também é possível incluir uma descrição opcional do projeto de compilação para ajudar outros usuários a entender para que esse projeto é usado.

1. Em **Código-fonte**, selecione o repositório de origem em que seu AWS SAM projeto está localizado.

1. Em **Ambiente**:
   + Para **Computação**, selecione **Lambda**.
   + Em **Runtime(s)**, escolha **Python**.
   + Para **Imagem**, selecione **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**.
   + Em **Perfil de serviço**, deixe a opção **Novo perfil de serviço** selecionada. Anote o **nome da função**. Isso será necessário quando você atualizar as permissões do IAM do projeto posteriormente neste exemplo.

1. Selecione **Create build project (Criar projeto de compilação)**.

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 **Funções** e selecione o perfil de serviço associado ao projeto. Você pode encontrar sua função de projeto em CodeBuild selecionando seu projeto de compilação, escolhendo **Editar**, **Ambiente** e, em seguida, **Função de serviço**.

1. Escolha a guia **Relacionamentos de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Adicione a seguinte política em linha ao perfil do IAM. Isso será usado para implantar sua AWS SAM infraestrutura posteriormente. Para obter mais informações, consulte [Adicionar e remover permissões de identidade do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) no *Guia do usuário do IAM*.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "UpdateLambdaPermissions",
               "Effect": "Allow",
               "Action": [
                   "lambda:UpdateFunctionConfiguration"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

## Configurar o buildspec do projeto
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Para atualizar a função do Lambda, o script lê as variáveis de ambiente do buildspec para encontrar o nome da função do Lambda, o nome da variável de ambiente e o valor da variável de ambiente.

**Para configurar o buildspec do projeto**

1. No CodeBuild console, selecione seu projeto de compilação e escolha **Editar** e **Buildspec**.

1. Em **Buildspec**, escolha **Inserir comandos de compilação** e, em seguida, escolha **Alternar para editor**.

1. Exclua os comandos de compilação pré-preenchidos e cole o seguinte buildspec.

   ```
   version: 0.2
   env:
     variables:
       LAMBDA_FUNC_NAME: "<lambda-function-name>"
       LAMBDA_ENV_VARIABLE: "FEATURE_ENABLED"
       LAMBDA_ENV_VARIABLE_VALUE: "true"
   phases:
     install:
       commands:
          - pip3 install boto3
     build:
       commands:
          - python3 update_lambda_environment_variables.py
   ```

1. Selecione **Atualizar buildspec**.

## Atualizar a configuração do Lambda
<a name="sample-lambda-boto3-python.update"></a>

Use o CodeBuild Lambda Python para atualizar automaticamente a configuração da função Lambda.

**Para atualizar a configuração da função do Lambda**

1. Selecione **Iniciar compilação**.

1. Quando a compilação estiver concluída, navegue até a função do Lambda.

1. Escolha **Configuração** e, em seguida, as variáveis de **Ambiente**. Você deve ver uma nova variável de ambiente com a chave `FEATURE_ENABLED` e o valor `true`.

## Limpar a infraestrutura
<a name="sample-lambda-boto3-python.clean-up"></a>

Para evitar cobranças adicionais pelos recursos que você usou durante este tutorial, exclua os recursos criados para o seu CodeBuild projeto.

**Para limpar a infraestrutura**

1. Navegue até o CloudWatch console e exclua os grupos de CloudWatch registros associados ao seu CodeBuild projeto.

1. Navegue até o CodeBuild console e exclua seu CodeBuild projeto escolhendo **Excluir projeto de compilação**.

1. Se você criou uma função do Lambda para o propósito deste exemplo, escolha **Ações** e **Excluir função** para limpar a função do Lambda.

## Extensões
<a name="sample-lambda-boto3-python.extensions"></a>

Se você quiser estender essa amostra para gerenciar outros AWS recursos usando o AWS CodeBuild Lambda Python:
+ Atualize o script Python para modificar os novos recursos usando o Boto3.
+ Atualize o papel do IAM associado ao seu CodeBuild projeto para ter permissões para os novos recursos.
+ Adicione quaisquer novas variáveis de ambiente associadas aos novos recursos ao buildspec.

# 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'
```

# Executar compilações em lotes
<a name="batch-build"></a>

Você pode usar AWS CodeBuild para executar compilações simultâneas e coordenadas de um projeto com compilações em lote. 

**Topics**
+ [Perfil de segurança](#batch_security_role)
+ [Tipos de compilação em lote](#batch_build_types)
+ [Modo de relatório em lote](#batch-report-mode)
+ [Mais informações](#batch_more_info)

## Perfil de segurança
<a name="batch_security_role"></a>

As compilações em lote introduzem um novo perfil de segurança na configuração em lote. Essa nova função é necessária, pois CodeBuild você deve poder chamar as `RetryBuild` ações `StartBuild``StopBuild`, e em seu nome para executar compilações como parte de um lote. Os clientes devem usar um novo perfil, e não o mesmo perfil que usam na compilação, por dois motivos:
+ Fornecer ao perfil de compilação as permissões `StartBuild`, `StopBuild` e `RetryBuild` que permitem a uma única compilação iniciar mais compilações por meio do buildspec.
+ CodeBuild compilações em lote fornecem restrições que restringem o número de compilações e tipos de computação que podem ser usados para as compilações no lote. Se o perfil de compilação tiver essas permissões, será possível que as próprias compilações ignorem essas restrições.

## Tipos de compilação em lote
<a name="batch_build_types"></a>

CodeBuild suporta os seguintes tipos de compilação em lote:

**Topics**
+ [Grafo de compilação](#batch_build_graph)
+ [Lista de compilações](#batch_build_list)
+ [Matriz de compilações](#batch_build_matrix)
+ [Fanout de compilação](#batch_build_fanout)

### Grafo de compilação
<a name="batch_build_graph"></a>

Um grafo de compilação define um conjunto de tarefas que dependem de outras tarefas no lote. 

O exemplo a seguir define um grafo de compilação que cria uma cadeia de dependências. 

```
batch:
  fast-fail: false
  build-graph:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      depend-on:
        - build1
    - identifier: build3
      env:
        variables:
          BUILD_ID: build3
      depend-on:
        - build2
    - identifier: build4
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build5
      env:
        fleet: fleet_name
```

Neste exemplo:
+ A `build1` é executada primeiro porque não tem dependências.
+ A `build2` tem uma dependência em `build1`, então a `build2` é executada após a conclusão da `build1`.
+ A `build3` tem uma dependência em `build2`, então a `build3` é executada após a conclusão da `build2`.

Para obter mais informações sobre a sintaxe buildspec do grafo de compilação, consulte [`batch/build-graph`](batch-build-buildspec.md#build-spec.batch.build-graph).

### Lista de compilações
<a name="batch_build_list"></a>

Uma lista de compilações define várias tarefas que são executadas paralelamente. 

O exemplo a seguir define uma lista de compilações. As compilações `build1` e `build2` serão executadas em paralelo.

```
batch:
  fast-fail: false
  build-list:
    - identifier: build1
      env:
        variables:
          BUILD_ID: build1
      ignore-failure: false
    - identifier: build2
      buildspec: build2.yml
      env:
        variables:
          BUILD_ID: build2
      ignore-failure: true
    - identifier: build3
      env:
        compute-type: ARM_LAMBDA_1GB
    - identifier: build4
      env:
        fleet: fleet_name
    - identifier: build5
      env:
        compute-type: GENERAL_LINUX_XLAGRE
```

Para obter mais informações sobre a sintaxe buildspec da lista de compilações, consulte [`batch/build-list`](batch-build-buildspec.md#build-spec.batch.build-list).

### Matriz de compilações
<a name="batch_build_matrix"></a>

Uma matriz de construção define tarefas com configurações diferentes que são executadas paralelamente. CodeBuild cria uma compilação separada para cada combinação de configuração possível. 

O exemplo a seguir mostra uma matriz de compilações com dois arquivos buildspec e três valores para uma variável de ambiente.

```
batch:
  build-matrix:
    static:
      ignore-failure: false
    dynamic:
      buildspec: 
        - matrix1.yml
        - matrix2.yml
      env:
        variables:
          MY_VAR:
            - VALUE1
            - VALUE2
            - VALUE3
```

Neste exemplo, CodeBuild cria seis compilações:
+ `matrix1.yml` com `$MY_VAR=VALUE1`
+ `matrix1.yml` com `$MY_VAR=VALUE2`
+ `matrix1.yml` com `$MY_VAR=VALUE3`
+ `matrix2.yml` com `$MY_VAR=VALUE1`
+ `matrix2.yml` com `$MY_VAR=VALUE2`
+ `matrix2.yml` com `$MY_VAR=VALUE3`

Cada compilação terá as seguintes configurações:
+ `ignore-failure` definido como `false`
+ `env/type` definido como `LINUX_CONTAINER`
+ `env/image` definido como `aws/codebuild/amazonlinux-x86_64-standard:4.0`
+ `env/privileged-mode` definido como `true`

Essas compilações são executadas em paralelo.

Para obter mais informações sobre a sintaxe buildspec da matriz de compilações, consulte [`batch/build-matrix`](batch-build-buildspec.md#build-spec.batch.build-matrix).

### Fanout de compilação
<a name="batch_build_fanout"></a>

Um fanout de compilação define uma tarefa que será dividida em várias compilações no lote. Isso pode ser usado para executar testes em paralelo. CodeBuild cria uma compilação separada para cada fragmento de casos de teste com base no valor definido no `parallelism` campo.

O exemplo a seguir define um fanout de compilação que cria cinco compilações que são executadas em paralelo.

```
version: 0.2

batch:
   fast-fail: false 
   build-fanout:
     parallelism: 5
     ignore-failure: false

phases:
  install:
    commands:
      - npm install
   build:
    commands:
      - mkdir -p test-results
      - cd test-results
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'
```

Neste exemplo, supondo que haja 100 testes que precisam ser executados, CodeBuild cria cinco compilações, cada uma executando 20 testes em paralelo.

Para obter mais informações sobre a sintaxe buildspec do grafo de compilação, consulte [`batch/build-fanout`](batch-build-buildspec.md#build-spec.batch.build-fanout).

## Modo de relatório em lote
<a name="batch-report-mode"></a>

Se o provedor de origem do seu projeto for Bitbucket ou GitHub Enterprise e seu projeto estiver configurado para relatar os status de criação ao provedor de origem, você poderá selecionar como deseja que os status de criação em lote sejam enviados ao provedor de origem. GitHub É possível optar por enviar os status como um único relatório de status agregado para o lote ou ter o status de cada compilação no lote informado individualmente.

Para saber mais, consulte os seguintes tópicos:
+ [Configuração em lote (criar)](create-project.md#create-project-console-batch-config)
+ [Configuração em lote (atualizar)](change-project.md#change-project-console-batch-config)

## Mais informações
<a name="batch_more_info"></a>

Para saber mais, consulte os seguintes tópicos:
+ [Referência de buildspec de compilação em lote](batch-build-buildspec.md)
+ [Configuração em lote](create-project.md#create-project-console-batch-config)
+ [Executar uma compilação em lote (AWS CLI)](run-batch-build-cli.md)
+ [Interromper compilações em lote no AWS CodeBuild](stop-batch-build.md)

# Executar testes paralelos em compilações em lote
<a name="parallel-test"></a>

Você pode usar AWS CodeBuild para executar testes paralelos em compilações em lote. A execução de testes em paralelo é uma abordagem em que vários casos de teste são executados simultaneamente em diferentes ambientes, máquinas ou navegadores, em vez de serem executados sequencialmente. Essa abordagem pode reduzir significativamente o tempo geral de execução e melhorar a eficiência de testes. Em CodeBuild, você pode dividir seus testes em vários ambientes e executá-los simultaneamente.

As principais vantagens da execução de testes em paralelo incluem:

1. **Tempo de execução reduzido**: testes que levariam horas sequencialmente podem ser concluídos em minutos.

1. **Melhor utilização dos recursos**: faz uso eficiente dos recursos de computação disponíveis.

1. **Feedback antecipado**: a conclusão mais rápida do teste significa um feedback mais rápido para os desenvolvedores.

1. **Econômico**: economiza tempo e custos de computação a longo prazo.

Ao implementar a execução de testes em paralelo, duas abordagens principais costumam ser consideradas: ambientes separados e multithreading. Embora ambos os métodos tenham como objetivo alcançar a execução simultânea de testes, eles diferem significativamente em sua implementação e eficácia. Ambientes separados criam instâncias isoladas em que cada suíte de testes é executada de forma independente, enquanto o multithreading executa vários testes simultaneamente no mesmo espaço de processo usando diferentes threads.

As principais vantagens de ambientes separados em relação ao multithreading incluem:

1. **Isolamento**: cada teste é executado em um ambiente totalmente isolado, evitando interferência entre os testes.

1. **Conflitos de recursos**: não há competição por recursos compartilhados, o que geralmente ocorre em multithreading.

1. **Estabilidade**: menos propenso a condições de corrida e problemas de sincronização.

1. **Depuração mais fácil**: quando os testes falham, é mais simples identificar a causa, pois cada ambiente é independente.

1. **Gerenciamento de estado**: gerencie facilmente os problemas de estado compartilhado que afetam os testes multithread.

1. **Melhor escalabilidade**: pode adicionar facilmente mais ambientes sem complexidade.

**Topics**
+ [Support em AWS CodeBuild](#parallel-test-support)
+ [Habilitar a execução de testes em paralelo em compilações em lote](parallel-test-enable.md)
+ [Usar o comando `codebuild-tests-run` da CLI](parallel-test-tests-run.md)
+ [Usar o comando `codebuild-glob-search` da CLI](parallel-test-glob-search.md)
+ [Sobre a divisão de testes](parallel-test-splitting.md)
+ [Mesclar automaticamente relatórios de compilação individuais](parallel-test-auto-merge.md)
+ [Exemplo de execução de testes em paralelo para vários frameworks de teste](sample-parallel-test.md)

## Support em AWS CodeBuild
<a name="parallel-test-support"></a>

AWS CodeBuild fornece suporte robusto para execução paralela de testes por meio de seu recurso de criação em lote, projetado especificamente para aproveitar a execução de ambientes separados. Essa implementação se alinha perfeitamente aos benefícios de ambientes de teste isolados.

**Compilação em lote com distribuição de testes**  
CodeBuildA funcionalidade de criação em lote do permite a criação de vários ambientes de construção que são executados simultaneamente. Cada ambiente opera como uma unidade totalmente isolada, com seus próprios recursos computacionais, ambiente de runtime e dependências. Por meio da configuração de compilação em lote, é possível especificar quantos ambientes paralelos são necessários e como os testes devem ser distribuídos entre eles.

**Testar a CLI de fragmentação**  
CodeBuild inclui um mecanismo de distribuição de testes integrado por meio de sua ferramenta CLI`codebuild-tests-run`, que divide automaticamente os testes em diferentes ambientes.

**Agregação de relatórios**  
Um dos principais pontos fortes da implementação é a capacidade CodeBuild de lidar com a agregação de resultados de testes sem problemas. Enquanto os testes são executados em ambientes separados, coleta e combina CodeBuild automaticamente os relatórios de teste de cada ambiente em um relatório de teste unificado no nível de criação em lote. Essa consolidação fornece uma visão abrangente dos resultados dos testes, mantendo os benefícios de eficiência da execução paralela.

O diagrama a seguir explica o conceito completo de execução de testes em paralelo no AWS CodeBuild.

![\[Diagrama conceitual da execução de testes em paralelo.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/parallel-test.png)


# Habilitar a execução de testes em paralelo em compilações em lote
<a name="parallel-test-enable"></a>

Para executar testes em paralelo, atualize o arquivo buildspec de compilação em lote para incluir o campo build-fanout de compilação e o número de compilações paralelas para dividir o conjunto de testes no campo `parallelism`, conforme mostrado abaixo. O campo `parallelism` especifica quantos executores independentes estão configurados para executar a suíte de testes.

Para executar os testes em vários ambientes de execução paralela, defina o campo `parallelism` com um valor acima de zero. No exemplo abaixo, `parallelism` está definido como cinco, o que significa que CodeBuild inicia cinco compilações idênticas que executam uma parte da suíte de testes em paralelo.

Você pode usar o comando [codebuild-tests-run](parallel-test-tests-run.md)CLI para dividir e executar seus testes. Os arquivos de teste serão divididos e uma parte dos testes será executada em cada compilação. Isso reduz o tempo total necessário para executar a suíte de testes completa. No exemplo a seguir, os testes serão divididos em cinco e os pontos de divisão serão calculados com base no nome dos testes.

```
version: 0.2

batch:
  fast-fail: false 
  build-fanout:
    parallelism: 5
    ignore-failure: false
    
phases:
  install:
    commands:
      - npm install jest-junit --save-dev
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - |
        codebuild-tests-run \
         --test-command 'npx jest --runInBand --coverage' \
         --files-search "codebuild-glob-search '**/_tests_/**/*.test.js'" \
         --sharding-strategy 'equal-distribution'

  post_build:
    commands:
      - codebuild-glob-search '**/*.xml'  
      - echo "Running post-build steps..."
      - echo "Build completed on `date`"

reports:
  test-reports:
    files:
      - '**/junit.xml'               
    base-directory: .
    discard-paths: yes           
    file-format: JUNITXML
```

Se os relatórios forem configurados para compilação build-fanout, os relatórios de teste serão gerados para cada compilação separadamente, que podem ser visualizados na guia **Relatórios** das compilações correspondentes no console. AWS CodeBuild 

Consulte mais informações sobre como executar testes em paralelo em lote em [Exemplo de execução de testes em paralelo para vários frameworks de teste](sample-parallel-test.md).

# Usar o comando `codebuild-tests-run` da CLI
<a name="parallel-test-tests-run"></a>

AWS CodeBuild fornece uma CLI que tomará o comando de teste e a localização do arquivo de teste como entrada. A CLI com essas entradas divide os testes em número de fragmentos, conforme especificado no campo `parallelism`, com base nos nomes dos arquivos de teste. A atribuição dos arquivos de teste ao fragmento é decidida pela estratégia de fragmentação.

```
codebuild-tests-run \
    --files-search "codebuild-glob-search '**/__tests__/*.js'" \
    --test-command 'npx jest --runInBand --coverage' \
    --sharding-strategy 'equal-distribution'
```

A tabela a seguir descreve os campos para o comando `codebuild-tests-run` da CLI.


| Nome do campo | Tipo | Obrigatório ou opcional | Definição | 
| --- | --- | --- | --- | 
|  `test-command`  |  String  |  Obrigatório  |  Esse comando é usado para executar os testes.  | 
|  `files-search`  |  String  |  Obrigatório  |  Esse comando fornece uma lista de arquivos de teste. Você pode usar o comando [codebuild-glob-search](parallel-test-glob-search.md)CLI AWS CodeBuild fornecido ou qualquer outra ferramenta de pesquisa de arquivos de sua escolha.  Certifique-se de que o comando `files-search` produza os nomes dos arquivos, cada um separado por uma nova linha.   | 
|  `sharding-strategy`  |  Enum  |  Opcional  |  Valores válidos: `equal-distribution` (padrão), `stability` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/parallel-test-tests-run.html) Para obter mais informações, consulte [Sobre a divisão de testes](parallel-test-splitting.md).  | 

A CLI `codebuild-tests-run` funciona primeiro para identificar a lista de arquivos de teste usando o comando fornecido no parâmetro `files-search`. Depois, ela determina um subconjunto de arquivos de teste designados para o fragmento (ambiente) atual usando a estratégia de fragmentação especificada. Por fim, esse subconjunto de arquivos de teste é formatado como uma lista separada por espaços e anexado ao final do comando fornecido no parâmetro `test-command` antes de ser executado.

Para frameworks de teste que não aceitam listas separadas por espaço, a CLI `codebuild-tests-run` fornece uma alternativa flexível por meio da variável de ambiente `CODEBUILD_CURRENT_SHARD_FILES`. Essa variável contém uma lista de caminhos de arquivos de teste, separados por quebras de linha, designados para o fragmento de compilação atual. Ao aproveitar essa variável de ambiente, você pode se adaptar facilmente a vários requisitos do framework de teste, acomodando aqueles que esperam formatos de entrada diferentes das listas separadas por espaço. Além disso, você também pode formatar os nomes dos arquivos de teste conforme a necessidade do framework de teste. Veja a seguir um exemplo do uso de `CODEBUILD_CURRENT_SHARD_FILES` no Linux com o framework do Django. Aqui, `CODEBUILD_CURRENT_SHARD_FILES` é usado para obter caminhos de arquivos em *notação com pontos* compatíveis com o Django:

```
codebuild-tests-run \
    —files-search "codebuild-glob-search '/tests/test_.py'" \
    —test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \
    —sharding-strategy 'equal-distribution'
```

**nota**  
Observe que a variável de ambiente `CODEBUILD_CURRENT_SHARD_FILES` só pode ser usada dentro do escopo da CLI `codebuild-tests-run`.  
Além disso, se você estiver usando `CODEBUILD_CURRENT_SHARD_FILES` dentro do comando de teste, coloque `CODEBUILD_CURRENT_SHARD_FILES` entre aspas duplas, conforme mostrado no exemplo acima.

# Usar o comando `codebuild-glob-search` da CLI
<a name="parallel-test-glob-search"></a>

AWS CodeBuild fornece uma ferramenta CLI integrada chamada `codebuild-glob-search` que permite pesquisar arquivos em seu diretório de trabalho com base em um ou mais padrões globais. Essa ferramenta pode ser útil principalmente quando você deseja executar testes em arquivos ou diretórios específicos do projeto.

## Uso
<a name="parallel-test-glob-search.usage"></a>

A CLI `codebuild-glob-search` tem a seguinte sintaxe de uso:

```
codebuild-glob-search <glob_pattern1> [<glob_pattern2> ...]
```
+ `<glob_pattern1>`, `<glob_pattern2>` etc.: um ou mais padrões globais para comparar com os arquivos em seu diretório de trabalho.
+ `*`: corresponde a qualquer sequência de caracteres (exceto separadores de caminho).
+ `**`: corresponde a qualquer sequência de caracteres (incluindo separadores de caminho).

**nota**  
A string global deve ter aspas. Para verificar os resultados da correspondência de padrões, use o comando `echo`.  

```
version: 0.2

phases:
  build:
    commands:
      - echo $(codebuild-glob-search '**/__tests__/*.js')
      - codebuild-glob-search '**/__tests__/*.js' | xargs -n 1 echo
```

## Output
<a name="parallel-test-glob-search.output"></a>

A CLI gera uma lista de caminhos de arquivos, separados por quebras de linha, que correspondem aos padrões de glob fornecidos. Os caminhos de arquivo retornados serão relativos ao diretório de trabalho.

Se nenhum arquivo que corresponda aos padrões fornecidos for encontrado, a CLI exibirá uma mensagem indicando que nenhum arquivo foi encontrado.

Observe que os diretórios encontrados devido a qualquer padrão serão excluídos dos resultados da pesquisa.

## Exemplo
<a name="parallel-test-glob-search.example"></a>

Se quiser pesquisar somente arquivos dentro do diretório de testes e seus subdiretórios com uma extensão `.js`, você poderá usar o seguinte comando com a CLI `codebuild-glob-search`:

```
codebuild-glob-search '**/__tests__/*.js'
```

Esse comando pesquisará todos os arquivos com uma extensão `.js` dentro do diretório `__tests__` e seus subdiretórios, conforme indicado pelo padrão.

# Sobre a divisão de testes
<a name="parallel-test-splitting"></a>

O recurso de divisão de testes do AWS CodeBuild permite paralelizar a execução da suíte de testes em várias instâncias de computação, reduzindo o tempo geral de execução do teste. Esse recurso é ativado por meio da configuração em lote nas configurações CodeBuild do projeto e do `codebuild-tests-run` utilitário no arquivo buildspec.

Os testes são divididos com base na estratégia de fragmentação especificada. CodeBuild fornece duas estratégias de fragmentação, conforme especificado abaixo:

Distribuição igualitária  
A estratégia de fragmentação `equal-distribution` divide os testes em compilações paralelas com base na ordem alfabética dos nomes dos arquivos de teste. Essa abordagem primeiro classifica os arquivos de teste e, depois, emprega um método baseado em fragmentos para distribuí-los, garantindo que arquivos semelhantes sejam agrupados para teste. Ela é recomendado ao lidar com um conjunto relativamente pequeno de arquivos de teste. Embora esse método tenha como objetivo alocar um número aproximadamente igual de arquivos para cada fragmento, com uma diferença máxima de um, ele não garante estabilidade. Quando arquivos de teste são adicionados ou removidos em compilações subsequentes, a distribuição dos arquivos existentes pode mudar, podendo causar a reatribuição entre fragmentos.

Estabilidade  
A estratégia de fragmentação `stability` emprega um algoritmo de hash consistente para dividir os testes entre fragmentos, garantindo que a distribuição de arquivos permaneça estável. Quando novos arquivos são adicionados ou removidos, essa abordagem garante que as file-to-shard atribuições existentes permaneçam praticamente inalteradas. Para suítes de teste grandes, é recomendável usar a opção de estabilidade para distribuir uniformemente os testes entre os fragmentos. O objetivo desse mecanismo é fornecer uma distribuição quase igual, garantindo que cada fragmento receba um número similar de arquivos, com apenas uma variação mínima. Embora a estratégia de estabilidade não garanta uma distribuição igualitária ideal, ela oferece uma distribuição quase igual que mantém a consistência nas atribuições de arquivos entre compilações, mesmo quando os arquivos são adicionados ou removidos.

Para habilitar a divisão de testes, você precisa configurar a seção de lotes nas configurações do seu CodeBuild projeto, especificando o `parallelism` nível desejado e outros parâmetros relevantes. Além disso, você precisará incluir o utilitário `codebuild-tests-run` no arquivo buildspec, junto com os comandos de teste e o método de divisão apropriados.

# Mesclar automaticamente relatórios de compilação individuais
<a name="parallel-test-auto-merge"></a>

Nas compilações de lote do Fanout, AWS CodeBuild suporta a mesclagem automática de relatórios de compilação individuais em um relatório consolidado em nível de lote. Esse recurso fornece uma visão abrangente dos resultados dos testes e da cobertura do código em todas as compilações em um lote.

## Como funciona
<a name="parallel-test-auto-merge.how"></a>

Ao executar compilações `fanout` em lote, cada compilação individual gera relatórios de [teste](test-reporting.md). CodeBuild em seguida, consolida automaticamente relatórios idênticos de diferentes compilações em um relatório unificado, que é anexado à criação em lote. Esses relatórios consolidados são facilmente acessíveis por meio do `reportArns` campo da [ BatchGetBuildBatches](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetBuildBatches.html#CodeBuild-BatchGetBuildBatches-response-buildBatches)API e também podem ser visualizados na guia **Relatórios** do console. Esse recurso de mesclagem também se estende aos relatórios descobertos automaticamente.

Os relatórios consolidados são criados em [grupos de relatórios](test-report-group.md) que são especificados no buildspec ou descobertos automaticamente por. CodeBuild É possível analisar as tendências dos relatórios mesclados diretamente nesses grupos de relatórios, fornecendo informações valiosas sobre o desempenho geral da compilação e as métricas de qualidade em compilações históricas do mesmo projeto de compilação em lote.

Para cada compilação individual dentro do lote, cria CodeBuild automaticamente grupos de relatórios separados. Eles seguem uma convenção de nomenclatura específica, combinando o nome do grupo de relatórios de criação em lote com um sufixo de `BuildFanoutShard<shard_number>`, onde `shard_number` representa o número do fragmento no qual o grupo de relatórios é criado. Essa organização permite que você acompanhe e analise tendências nos níveis de compilação consolidado e individual, oferecendo flexibilidade na forma de monitorar e avaliar seus processos de compilação.

O relatório de compilação em lote segue a mesma estrutura dos [relatórios de compilação individual](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Report.html). Os seguintes campos-chave na guia **Relatório** são específicos dos relatórios de compilação em lote:

**Status do relatório de compilação em lote**  
O status dos relatórios de compilação em lote segue regras específicas, dependendo do tipo de relatório:  
+ Relatórios de teste:
  + Bem-sucedido: o status será definido como “bem-sucedido” quando todos os relatórios de compilação individual tiverem sido bem-sucedidos.
  + Falha: o status será definido como “falha” se algum relatório de compilação individual falhar.
  + Incompleto: o status será marcado como “incompleto” se algum relatório de compilação individual estiver ausente ou tiver um status de “incompleto”.
+ Relatórios de cobertura de código:
  + Concluído: o status será definido como “concluído” quando todos os relatórios de compilação individual forem concluídos.
  + Falha: o status será definido como “falha” se algum relatório de compilação individual falhar.
  + Incompleto: o status será marcado como “incompleto” se algum relatório de compilação individual estiver ausente ou tiver um status de “incompleto”.

**Resumo de teste**  
O relatório de teste mesclado consolida os seguintes campos de todos os relatórios de compilação individual:  
+ duration-in-nano-seconds: Tempo máximo de duração do teste em nanossegundos entre todos os relatórios de criação individuais.
+ total: a contagem combinada de todos os casos de teste, somando o número total de testes de cada compilação.
+ status-counts: fornece uma visão consolidada dos status do teste, como “aprovado”, “reprovado” ou “ignorado”, o que é calculado agregando a contagem de cada tipo de status em todas as compilações individuais.

**Resumo da cobertura de código**  
O relatório de cobertura de código mesclado combina campos de todas as compilações individuais usando os seguintes cálculos:  
+ branches-covered: soma de todas as ramificações cobertas de relatórios individuais.
+ branches-missed: soma de todas as ramificações cobertas de relatórios individuais.
+ branch-coverage-percentage: `(Total covered branches / Total branches) * 100`
+ lines-covered: soma de todas as linhas cobertas de relatórios individuais.
+ lines-missed: soma de todas as linhas perdidas de relatórios individuais.
+ lines-coverage-percentage: `(Total covered lines / Total lines) * 100`

**ID de execução**  
O ARN de compilação em lote.

**Casos de teste**  
O relatório mesclado contém uma lista consolidada de todos os casos de teste de compilações individuais, acessível por meio da [DescribeTestCases](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DescribeTestCases.html)API e do relatório de criação em lote no console.

**Coberturas de código**  
O relatório de cobertura de código mesclado fornece informações consolidadas de cobertura de linha e ramificação para cada arquivo em todas as compilações individuais, acessíveis por meio da [DescribeCodeCoverages](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DescribeCodeCoverages.html)API e do relatório de criação em lote no console. Nota: para arquivos cobertos por vários arquivos de teste distribuídos em diferentes fragmentos, o relatório mesclado usa os seguintes critérios de seleção:  

1. A seleção primária é baseada na maior cobertura de linha entre os fragmentos.

1. Se a cobertura da linha for igual em vários fragmentos, aquele com a maior cobertura de ramificação será selecionado.

# Exemplo de execução de testes em paralelo para vários frameworks de teste
<a name="sample-parallel-test"></a>

É possível usar o comando `codebuild-tests-run` da CLI para dividir e executar testes em ambientes de execução paralela. A seção a seguir fornece exemplos de `buildspec.yml` de vários frameworks, ilustrando o uso do comando `codebuild-tests-run`.
+ Cada exemplo abaixo inclui um nível de `parallelism` de cinco, o que significa que cinco ambientes de execução idênticos serão criados para dividir os testes. É possível escolher um nível de `parallelism` adequado ao projeto modificando o valor de `parallelism` na seção `build-fanout`.
+ Cada exemplo abaixo mostra como configurar os testes para serem divididos pelo nome do arquivo de teste, que é o padrão. Isso distribui os testes uniformemente nos ambientes de execução paralela.

Antes de começar, consulte mais informações em [Executar testes paralelos em compilações em lote](parallel-test.md).

Consulte uma lista completa das opções ao usar o comando `codebuild-tests-run` da CLI em [Usar o comando `codebuild-tests-run` da CLI](parallel-test-tests-run.md).

**Topics**
+ [Configurar testes em paralelo com o Django](sample-parallel-test-django.md)
+ [Configurar testes em paralelo com o Elixir](sample-parallel-test-elixir.md)
+ [Configurar testes em paralelo com o Go](sample-parallel-test-go.md)
+ [Configurar testes paralelos com Java (Maven)](sample-parallel-test-java-maven.md)
+ [Configurar testes paralelos com Javascript (Jest)](sample-parallel-test-javascript.md)
+ [Configurar testes em paralelo com o Kotlin](sample-parallel-test-kotlin.md)
+ [Configurar testes em paralelo com o PHPUnit](sample-parallel-test-phpunit.md)
+ [Configurar testes em paralelo com o Pytest](sample-parallel-test-python.md)
+ [Configurar testes em paralelo com o Ruby (Cucumber)](sample-parallel-test-ruby-cucumber.md)
+ [Configurar testes em paralelo com o Ruby (RSpec)](sample-parallel-test-ruby.md)

# Configurar testes em paralelo com o Django
<a name="sample-parallel-test-django"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Django em uma plataforma Ubuntu:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - sudo yum install -y python3 python3-pip 
      - python3 -m ensurepip --upgrade 
      - python3 -m pip install django
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Django Tests'
      - |
        codebuild-tests-run \
         --test-command 'python3 manage.py test $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed -E "s/\//__/g; s/\.py$//; s/__/./g")' \ 
         --files-search "codebuild-glob-search '**/tests/*test_*.py'" \
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo 'Test execution completed'
```

O exemplo acima mostra o uso da variável de ambiente `CODEBUILD_CURRENT_SHARD_FILES`. Aqui, `CODEBUILD_CURRENT_SHARD_FILES` é usado para obter caminhos de arquivos em notação com pontos compatíveis com o Django. Use `CODEBUILD_CURRENT_SHARD_FILES` entre aspas duplas, conforme mostrado acima.

# Configurar testes em paralelo com o Elixir
<a name="sample-parallel-test-elixir"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Elixir em uma plataforma Ubuntu:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5

phases:
  install:
    commands:
      - echo 'Installing Elixir dependencies'
      - sudo apt update
      - sudo DEBIAN_FRONTEND=noninteractive apt install -y elixir
      - elixir --version
      - mix --version
  pre_build:
    commands:
      - echo 'Prebuild'
  build:
    commands:
      - echo 'Running Elixir Tests'
      - |
        codebuild-tests-run \
         --test-command 'mix test' \
         --files-search "codebuild-glob-search '**/test/**/*_test.exs'" \ 
         --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

# Configurar testes em paralelo com o Go
<a name="sample-parallel-test-go"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Go em uma plataforma Linux:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Fetching Go version'
      - go version
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running go Tests'
      - go mod init calculator
      - cd calc
      - |
        codebuild-tests-run \
         --test-command "go test -v calculator.go" \
         --files-search "codebuild-glob-search '**/*test.go'"
  post_build:
    commands:
      - echo "Test execution completed"
```

No exemplo acima, a função `calculator.go` contém funções matemáticas simples para testar e todos os arquivos de teste e arquivos `calculator.go` estão dentro da pasta `calc`.

# Configurar testes paralelos com Java (Maven)
<a name="sample-parallel-test-java-maven"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Java em uma plataforma Linux:

```
version: 0.2

batch:
  fast-fail: false 
  build-fanout:
    parallelism: 5
    ignore-failure: false
    
phases:
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo "Running mvn test"
      - |
        codebuild-tests-run \
          --test-command 'mvn test -Dtest=$(echo "$CODEBUILD_CURRENT_SHARD_FILES" | sed "s|src/test/java/||g; s/\.java//g; s|/|.|g; s/ /,/g" | tr "\n" "," | sed "s/,$//")' \
          --files-search "codebuild-glob-search '**/test/**/*.java'"
         
  post_build:
    commands:
      - echo "Running post-build steps..."
      - echo "Test execution completed"
```

No exemplo fornecido, a variável de ambiente `CODEBUILD_CURRENT_SHARD_FILES` contém arquivos de teste no fragmento atual, separados por quebras de linha. Esses arquivos são convertidos em uma lista separada por vírgulas de nomes de classes no formato aceito pelo parâmetro `-Dtest` do Maven.

# Configurar testes paralelos com Javascript (Jest)
<a name="sample-parallel-test-javascript"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Javascript em uma plataforma Ubuntu:

```
version: 0.2

batch:
  fast-fail: true
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Node.js dependencies'
      - apt-get update
      - apt-get install -y nodejs
      - npm install
      - npm install --save-dev jest-junit
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running JavaScript Tests'
      - |
         codebuild-tests-run \
          --test-command "npx jest" \
          --files-search "codebuild-glob-search '**/test/**/*.test.js'" \
          --sharding-strategy 'stability'
    post_build:
      commands:
        - echo 'Test execution completed'
```

# Configurar testes em paralelo com o Kotlin
<a name="sample-parallel-test-kotlin"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Kotlin em uma plataforma Linux:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 2
    ignore-failure: false

phases:
  install:
    runtime-versions:
      java: corretto11 
    commands:
      - echo 'Installing dependencies'
      - KOTLIN_VERSION="1.8.20" # Replace with your desired version
      - curl -o kotlin-compiler.zip -L "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip"
      - unzip kotlin-compiler.zip -d /usr/local
      - export PATH=$PATH:/usr/local/kotlinc/bin
      - kotlin -version
      - curl -O https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.8.2/junit-platform-console-standalone-1.8.2.jar
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Kotlin Tests'
      - |
        codebuild-tests-run \
          --test-command 'kotlinc src/main/kotlin/*.kt $(echo "$CODEBUILD_CURRENT_SHARD_FILES" | tr "\n" " ") -d classes -cp junit-platform-console-standalone-1.8.2.jar' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
      - |
        codebuild-tests-run \
          --test-command '
            java -jar junit-platform-console-standalone-1.8.2.jar --class-path classes \
              $(for file in $CODEBUILD_CURRENT_SHARD_FILES; do
                 class_name=$(basename "$file" .kt)
                 echo "--select-class $class_name"
               done)
          ' \
          --files-search "codebuild-glob-search 'src/test/kotlin/*.kt'"
  post_build:
    commands:
      - echo "Test execution completed"
```

No exemplo acima, a CLI `codebuild-tests-run` é usada duas vezes. Durante a primeira execução, o kotlinc compila os arquivos. A variável `CODEBUILD_CURRENT_SHARD_FILES` recupera os arquivos de teste atribuídos ao fragmento atual, que são então convertidos em uma lista separada por espaços. Na segunda execução, o JUnit executa os testes. Novamente, `CODEBUILD_CURRENT_SHARD_FILES` busca os arquivos de teste atribuídos ao fragmento atual, mas dessa vez eles são convertidos em nomes de classe.

# Configurar testes em paralelo com o PHPUnit
<a name="sample-parallel-test-phpunit"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o PHPUnit em uma plataforma Linux:

```
version: 0.2
 
batch:
   fast-fail: false
   build-fanout:
     parallelism: 5
     ignore-failure: false
 
phases:
   install:
     commands:
       - echo 'Install dependencies'
       - composer require --dev phpunit/phpunit
   pre_build:
     commands:
       - echo 'prebuild'
   build:
     commands:
       - echo 'Running phpunit Tests'
       - composer dump-autoload
       - | 
         codebuild-tests-run \
          --test-command "./vendor/bin/phpunit --debug" \ 
          --files-search "codebuild-glob-search '**/tests/*Test.php'"
   post_build:
       commands:
         - echo 'Test execution completed'
```

# Configurar testes em paralelo com o Pytest
<a name="sample-parallel-test-python"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Pytest em uma plataforma Ubuntu:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - apt-get update
      - apt-get install -y python3 python3-pip
      - pip3 install --upgrade pip
      - pip3 install pytest
  build:
    commands:
      - echo 'Running Python Tests'
      - |
         codebuild-tests-run \
          --test-command 'python -m pytest' \
          --files-search "codebuild-glob-search 'tests/test_*.py'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Pytest em uma plataforma Windows:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Python dependencies'
      - pip install pytest
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running pytest'
      - |
        & codebuild-tests-run `
         --test-command 'pytest @("$env:CODEBUILD_CURRENT_SHARD_FILES" -split \"`r?`n\")'  `
         --files-search "codebuild-glob-search '**/test_*.py' '**/*_test.py'" `
         --sharding-strategy 'equal-distribution' 
  post_build:
    commands:
      - echo "Test execution completed"
```

No exemplo acima, a variável de ambiente `CODEBUILD_CURRENT_SHARD_FILES` é usada para buscar arquivos de teste atribuídos ao fragmento atual e passados como matriz para o comando pytest.

# Configurar testes em paralelo com o Ruby (Cucumber)
<a name="sample-parallel-test-ruby-cucumber"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o Cucumber em uma plataforma Linux:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - gem install bundler
      - bundle install
  pre_build:
    commands:
      - echo 'prebuild'
  build:
    commands:
      - echo 'Running Cucumber Tests'
      - cucumber --init
      - |
        codebuild-tests-run \
         --test-command "cucumber" \
         --files-search "codebuild-glob-search '**/*.feature'"
  post_build:
    commands:
      - echo "Test execution completed"
```

# Configurar testes em paralelo com o Ruby (RSpec)
<a name="sample-parallel-test-ruby"></a>

Veja a seguir uma amostra de um `buildspec.yml` que mostra a execução de testes em paralelo com o RSpec em uma plataforma Ubuntu:

```
version: 0.2

batch:
  fast-fail: false
  build-fanout:
    parallelism: 5
    ignore-failure: false

phases:
  install:
    commands:
      - echo 'Installing Ruby dependencies'
      - apt-get update
      - apt-get install -y ruby ruby-dev build-essential
      - gem install bundler
      - bundle install
  build:
    commands:
      - echo 'Running Ruby Tests'
      - |
         codebuild-tests-run \
          --test-command 'bundle exec rspec' \
          --files-search "codebuild-glob-search 'spec/**/*_spec.rb'" \
          --sharding-strategy 'equal-distribution'
  post_build:
    commands:
      - echo "Test execution completed"
```

# Compilações em cache para melhorar o desempenho
<a name="build-caching"></a>

Você pode economizar tempo quando seu projeto é compilado usando um cache. Um cache pode armazenar partes reutilizáveis do seu ambiente de build e usá-las em vários builds. O projeto de compilação pode usar um dos dois tipos de armazenamento em cache: Amazon S3 ou local. Se usar um cache local, você deverá escolher um ou mais dos três modos de cache: cache de origem, cache de camada do Docker e cache personalizado. 

**nota**  
O modo de cache de camada do Docker está disponível somente para o ambiente Linux. Se você escolher esse modo, deverá executar sua compilação no modo privilegiado. CodeBuild projetos com modo privilegiado concedem ao contêiner acesso a todos os dispositivos. Para obter mais informações, consulte [Runtime privilege and Linux capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) no site de documentação do Docker.

**Topics**
+ [Armazenamento em cache do Amazon S3](caching-s3.md)
+ [Armazenamento em cache local](caching-local.md)
+ [Especificar um cache local](specify-caching-local.md)

# Armazenamento em cache do Amazon S3
<a name="caching-s3"></a>

O armazenamento em cache do Amazon S3 armazena o cache em um bucket do Amazon S3 que está disponível em vários hosts de compilação. Esta é uma boa opção para artefatos de compilação pequenos a intermediários que são mais caras para criar do que para baixar.

Para usar o Amazon S3 em uma compilação, você pode especificar os caminhos para os arquivos nos quais deseja armazenar em cache. `buildspec.yml` CodeBuild armazenará e atualizará automaticamente o cache na localização do Amazon S3 configurada no projeto. Se você não especificar os caminhos do arquivo, CodeBuild fará o melhor possível para armazenar em cache as dependências de linguagem comum para ajudá-lo a acelerar as compilações. Você pode visualizar os detalhes do cache nos logs da compilação.

Além disso, se quiser ter várias versões de cache, você pode definir uma chave de cache no`buildspec.yml`. CodeBuild armazena o cache no contexto dessa chave de cache e cria uma cópia de cache exclusiva que não será atualizada depois de criada. As chaves de cache também podem ser compartilhadas entre projetos. Recursos como chaves dinâmicas, versionamento de cache e compartilhamento de cache entre compilações só estão disponíveis quando uma chave é especificada.

Para saber mais sobre a sintaxe do cache no arquivo buildspec, consulte [cache](build-spec-ref.md#build-spec.cache) na referência do buildspec.

**Topics**
+ [Gerar chaves dinâmicas](#caching-s3-dynamic)
+ [codebuild-hash-files](#caching-s3-dynamic.codebuild-hash-files)
+ [Versão do cache](#caching-s3-version)
+ [Compartilhamento de cache entre projetos](#caching-s3-sharing)
+ [Exemplo de buildspec](#caching-s3-examples)

## Gerar chaves dinâmicas
<a name="caching-s3-dynamic"></a>

Uma chave de cache pode incluir comandos de shell e variáveis de ambiente para torná-la única, permitindo atualizações automáticas de cache quando a chave é alterada. Por exemplo, é possível definir uma chave usando o hash do arquivo `package-lock.json`. Quando as dependências nesse arquivo mudam, o hash, e, portanto, a chave do cache, muda, acionando a criação automática de um novo cache.

```
cache:
    key: npm-key-$(codebuild-hash-files package-lock.json)
```

CodeBuild avaliará a expressão `$(codebuild-hash-files package-lock.json)` para obter a chave final:

```
npm-key-abc123
```

Você também pode definir uma chave de cache usando variáveis de ambiente, como `CODEBUILD_RESOLVED_SOURCE_VERSION`. Isso garante que sempre que a origem mudar, uma nova chave seja gerada, resultando em um novo cache sendo salvo automaticamente:

```
cache:
   key: npm-key-$CODEBUILD_RESOLVED_SOURCE_VERSION
```

CodeBuild avaliará a expressão e obterá a chave final:

```
npm-key-046e8b67481d53bdc86c3f6affdd5d1afae6d369
```

## codebuild-hash-files
<a name="caching-s3-dynamic.codebuild-hash-files"></a>

`codebuild-hash-files`é uma ferramenta de CLI que calcula um hash SHA-256 para um conjunto de arquivos no diretório de origem usando padrões globais: CodeBuild 

```
codebuild-hash-files <glob-pattern-1> <glob-pattern-2> ...
```

Veja alguns exemplos usando a `codebuild-hash-files`:

```
codebuild-hash-files package-lock.json
codebuild-hash-files '**/*.md'
```

## Versão do cache
<a name="caching-s3-version"></a>

A versão do cache é um hash gerado a partir dos caminhos dos diretórios que estão sendo armazenados em cache. Se dois caches tiverem versões diferentes, eles serão tratados como caches distintos durante o processo de correspondência. Por exemplo, os dois caches a seguir são considerados diferentes porque fazem referência a caminhos diferentes:

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "pip-dependencies/**/*"
```

```
version: 0.2

phases:
  build:
    commands:
      - pip install pandas==2.2.3 --target tmp/pip-dependencies
cache:
  key: pip-dependencies 
  paths:
    - "tmp/pip-dependencies/**/*"
```

## Compartilhamento de cache entre projetos
<a name="caching-s3-sharing"></a>

É possível usar o campo da API `cacheNamespace` na seção `cache` para compartilhar um cache entre vários projetos. Esse campo define o escopo do cache. Para compartilhar um cache, faça o seguinte:
+ Use o mesmo`cacheNamespace`.
+ Especifique o mesmo cache `key`.
+ Defina caminhos de cache idênticos.
+ Use os mesmos buckets do Amazon S3 e `pathPrefix`, se definido.

Isso garante a consistência e permite o compartilhamento de cache entre projetos.

### Especificar um namespace de cache (console)
<a name="caching-s3-sharing.console"></a>

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Escolha **Criar projeto**. Para obter informações, consulte [Criar um projeto de compilação (console)](create-project.md#create-project-console) e [Executar uma compilação (console)](run-build-console.md).

1. Em **Artefatos**, escolha **Configuração adicional**.

1. Em **Tipo de cache**, selecione **Amazon S3**.

1. Em **Namespace do cache: opcional**, insira um valor de namespace.  
![\[Parâmetro de namespace de cache no CodeBuild console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/s3-cache-namespace.png)

1. Continue com os valores padrão e escolha **Criar projeto de compilação**.

### Especificar um namespace do cache (AWS CLI)
<a name="caching-s3-sharing.cli"></a>

Você pode usar o `--cache` parâmetro the no AWS CLI para especificar um namespace de cache.

```
--cache '{"type": "S3", "location": "your-s3-bucket", "cacheNamespace": "test-cache-namespace"}'
```

## Exemplo de buildspec
<a name="caching-s3-examples"></a>

Aqui estão vários exemplos de buildspec para linguagens comuns:

**Topics**
+ [Dependências Node.js de cache](#caching-s3-examples.nodejs)
+ [Armazenar em cache as dependências do Python](#caching-s3-examples.python)
+ [Armazenar em cache as dependências do Ruby](#caching-s3-examples.ruby)
+ [Armazenar em cache as dependências do Go](#caching-s3-examples.go)

### Dependências Node.js de cache
<a name="caching-s3-examples.nodejs"></a>

Se o projeto inclui um arquivo `package-lock.json` e usa `npm` para gerenciar dependências do Node.js, o exemplo a seguir mostra como configurar o armazenamento em cache. Por padrão, `npm` instala dependências no diretório `node_modules`.

```
version: 0.2

phases:
  build:
    commands:
      - npm install
cache:
  key: npm-$(codebuild-hash-files package-lock.json)
  paths:
    - "node_modules/**/*"
```

### Armazenar em cache as dependências do Python
<a name="caching-s3-examples.python"></a>

Se o projeto inclui um arquivo `requirements.txt` e usa pip para gerenciar dependências do Python, o exemplo a seguir demonstra como configurar o armazenamento em cache. Por padrão, o pip instala pacotes no diretório `site-packages` do sistema.

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "/root/.pyenv/versions/${python_version}/lib/python${python_major_version}/site-packages/**/*"
```

Além disso, é possível instalar dependências em um diretório específico e configurar o armazenamento em cache para esse diretório.

```
version: 0.2

phases:
  build:
    commands:
      - pip install -r requirements.txt --target python-dependencies
cache:
  key: python-$(codebuild-hash-files requirements.txt)
  paths:
    - "python-dependencies/**/*"
```

### Armazenar em cache as dependências do Ruby
<a name="caching-s3-examples.ruby"></a>

Se o projeto inclui um arquivo `Gemfile.lock` e usa `Bundler` para gerenciar dependências de gem, o exemplo a seguir demonstra como configurar o armazenamento em cache com eficácia.

```
version: 0.2

phases:
  build:
    commands:
      - bundle install --path vendor/bundle
cache:
  key: ruby-$(codebuild-hash-files Gemfile.lock)
  paths:
    - "vendor/bundle/**/*"
```

### Armazenar em cache as dependências do Go
<a name="caching-s3-examples.go"></a>

Se o projeto inclui um arquivo `go.sum` e usa módulos do Go para gerenciar dependências, o exemplo a seguir demonstra como configurar o armazenamento em cache. Por padrão, os módulos do Go são baixados e armazenados no diretório `${GOPATH}/pkg/mod`.

```
version: 0.2

phases:
  build:
    commands:
      - go mod download
cache:
  key: go-$(codebuild-hash-files go.sum)
  paths:
    - "/go/pkg/mod/**/*"
```

# Armazenamento em cache local
<a name="caching-local"></a>

O armazenamento em cache local armazena um cache localmente em um host de compilação que está disponível somente para esse host de compilação. Esta é uma boa opção para artefatos de compilação grandes a intermediários porque o cache fica imediatamente disponível no host de compilação. Essa não é a melhor opção se suas compilações são pouco frequentes. Isso significa que o desempenho da compilação não é afetado pelo tempo de transferência na rede.

Se optar por armazenamento em cache local, você deverá escolher um ou mais dos seguintes modos de cache: 
+ O modo de cache de origem armazena em cache os metadados do Git para origens principal e secundária. Depois que o cache é criado, as compilações subsequentes extraem somente a alteração entre as confirmações. Esse modo é uma boa opção para projetos com um diretório de trabalho limpo e uma origem que seja um grande repositório Git. Se você escolher essa opção e seu projeto não usar um repositório Git (AWS CodeCommit, GitHub, GitHub Enterprise Server ou Bitbucket), a opção será ignorada. 
+ O modo de cache da camada do Docker armazena as camadas do Docker existentes. Esse modo é uma boa opção para projetos que compilam ou extraem grandes imagens do Docker. Ele pode impedir os problemas de desempenho causados pela extração de grandes imagens do Docker da rede. 
**nota**  
Só é possível usar um cache de camada do Docker no ambiente Linux. 
O sinalizador `privileged` deve ser definido para que o projeto tenha as permissões necessárias do Docker.   
Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações da VPC, consulte [Privilégio de tempo de execução e funcionalidades do Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.
Você deve considerar as implicações de segurança antes de usar um cache de camada do Docker. 
+ O modo de cache personalizado armazena em cache os diretórios que você especificar no arquivo buildspec. Esse modo é uma boa opção quando o cenário de compilação não é adequado para um dos dois outros modos de cache local. Se você usar um cache personalizado: 
  + Somente diretórios pode ser especificado para o armazenamento em cache. Não é possível especificar arquivos individuais. 
  + Symlinks são usados para fazer referência a diretórios armazenados em cache. 
  + Os diretórios em cache são vinculados à sua compilação antes que ela faça download de suas origens do projeto. Itens armazenados em cache substituem itens de origem se tiverem o mesmo nome. Os diretórios são especificados usando caminhos de cache no arquivo buildspec. Para obter mais informações, consulte [Sintaxe de buildspec](build-spec-ref.md#build-spec-ref-syntax). 
  + Evite nomes de diretório iguais na origem e no cache. Os diretórios armazenados em cache local podem substituir ou excluir o conteúdo de diretórios no repositório de origem que tenham o mesmo nome.

**nota**  
O armazenamento em cache local não é compatível com o tipo de ambiente `LINUX_GPU_CONTAINER` me o tipo de computação `BUILD_GENERAL1_2XLARGE`. Para obter mais informações, consulte [Modos e tipos de computação do ambiente de compilação](build-env-ref-compute-types.md).

**nota**  
O armazenamento em cache local não é suportado quando você configura CodeBuild para trabalhar com uma VPC. Para obter mais informações sobre como usar VPCs com CodeBuild, consulte[Use AWS CodeBuild com a Amazon Virtual Private Cloud](vpc-support.md).

# Especificar um cache local
<a name="specify-caching-local"></a>

Você pode usar o console AWS CLI, o SDK ou CloudFormation especificar um cache local. Para obter mais informações sobre armazenamento em cache local, consulte [Armazenamento em cache local](caching-local.md).

**Topics**
+ [Especificar o armazenamento em cache local (CLI)](#caching-local-cli)
+ [Especificar o armazenamento em cache local (console)](#caching-local-console)
+ [Especificar o armazenamento em cache local (CloudFormation)](#caching-local-cfn)

## Especificar o armazenamento em cache local (CLI)
<a name="caching-local-cli"></a>

Você pode usar o `--cache` parâmetro no AWS CLI para especificar cada um dos três tipos de cache local. 
+ Para especificar um cache de origem: 

  ```
  --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  ```
+ Para especificar um cache de camada do Docker: 

  ```
  --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  ```
+ Para especificar um cache personalizado: 

  ```
  --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]
  ```

Para obter mais informações, consulte [Crie um projeto de compilação (AWS CLI)](create-project.md#create-project-cli).

## Especificar o armazenamento em cache local (console)
<a name="caching-local-console"></a>

Você especifica um cache na seção **Artifacts (Artefatos)** do console. Em **Tipo de cache**, selecione **Amazon S3** ou **Local**. Se você optar por **Local**, selecione uma ou mais das três opções de cache local.

![\[Especifique um cache local escolhendo uma ou mais das três opções de cache local.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/local-cache.png)


Para obter mais informações, consulte [Criar um projeto de compilação (console)](create-project.md#create-project-console).

## Especificar o armazenamento em cache local (CloudFormation)
<a name="caching-local-cfn"></a>

Se você usa CloudFormation para especificar um cache local, na `Cache` propriedade, for`Type`, especifique`LOCAL`. O exemplo de CloudFormation código formatado em YAML a seguir especifica todos os três tipos de cache local. Você pode especificar qualquer combinação de tipos. Se você usar um cache de camada do Docker, em `Environment`, defina `PrivilegedMode` como `true` e `Type` como `LINUX_CONTAINER`. 

```
CodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: MyProject
      ServiceRole: <service-role>
      Artifacts:
        Type: S3
        Location: <bucket-name>
        Name: myArtifact
        EncryptionDisabled: true
        OverrideArtifactName: true
      Environment:
        Type: LINUX_CONTAINER
        ComputeType: BUILD_GENERAL1_SMALL
        Image: aws/codebuild/standard:5.0
        Certificate: <bucket/cert.zip>
        # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE
        PrivilegedMode: true
      Source:
        Type: GITHUB
        Location: <github-location>
        InsecureSsl: true
        GitCloneDepth: 1
        ReportBuildStatus: false
      TimeoutInMinutes: 10
      Cache:
        Type: LOCAL
        Modes: # You can specify one or more cache mode, 
          - LOCAL_CUSTOM_CACHE
          - LOCAL_DOCKER_LAYER_CACHE
          - LOCAL_SOURCE_CACHE
```

**nota**  
Por padrão, o daemon do Docker está habilitado para compilações não VPC. Se você quiser usar contêineres do Docker para compilações da VPC, consulte [Privilégio de tempo de execução e funcionalidades do Linux](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) no site do Docker Docs e ative o modo privilegiado. Além disso, o Windows não é compatível com o modo privilegiado.

Para obter mais informações, consulte [Crie um projeto de compilação (CloudFormation)](create-project.md#create-project-cloud-formation).

# Compilações de depuração AWS CodeBuild
<a name="debug-builds"></a>

AWS CodeBuild fornece dois métodos para depurar compilações durante o desenvolvimento e a solução de problemas. Você pode usar o ambiente CodeBuild Sandbox para investigar problemas e validar correções em tempo real, ou você pode usar o AWS Systems Manager Session Manager para se conectar ao contêiner de compilação e visualizar o estado do contêiner.

## Depure compilações com sandbox CodeBuild
<a name="debug-codebuild-sandbox"></a>

O ambiente CodeBuild sandbox fornece uma sessão de depuração interativa em um ambiente seguro e isolado. Você pode interagir com o ambiente diretamente por meio do Console de gerenciamento da AWS or AWS CLI, executar comandos e validar seu processo de criação passo a passo. Ele usa um modelo econômico de cobrança por segundo e oferece suporte à mesma integração nativa com provedores e AWS serviços de origem que seu ambiente de construção. Você também pode se conectar a um ambiente sandbox usando clientes SSH ou de seus ambientes de desenvolvimento integrados ()IDEs.

Para saber mais sobre os preços do CodeBuild sandbox, acesse a [documentação CodeBuild de preços](https://aws.amazon.com/codebuild/pricing/#Sandbox). Consulte instruções detalhadas na documentação do [Depure compilações com sandbox CodeBuild](sandbox.md).

## Depurar compilações com o Session Manager
<a name="debug-codebuild-session-manager"></a>

AWS O Systems Manager Session Manager permite acesso direto às compilações em execução em seu ambiente de execução real. Essa abordagem permite se conectar a contêineres de compilação ativos e inspecionar o processo de compilação em tempo real. Você pode examinar o sistema de arquivos, monitorar os processos em execução e solucionar problemas à medida que eles ocorrem.

Consulte instruções detalhadas na documentação do [Depurar compilações com o Session Manager](session-manager.md).

# Depure compilações com sandbox CodeBuild
<a name="sandbox"></a>

Em AWS CodeBuild, você pode depurar uma compilação usando o CodeBuild sandbox para executar comandos personalizados e solucionar problemas de sua compilação.

**Topics**
+ [Pré-requisitos](#sandbox-prereq)
+ [Depurar compilações com CodeBuild sandbox (console)](#sandbox-console)
+ [Depure compilações com CodeBuild sandbox ()AWS CLI](#sandbox-cli)
+ [Tutorial: conectar-se a um sandbox usando SSH](sandbox-ssh-tutorial.md)
+ [Solução de problemas de conexão SSH do AWS CodeBuild sandbox](sandbox-troubleshooting.md)

## Pré-requisitos
<a name="sandbox-prereq"></a>

Antes de usar um CodeBuild sandbox, certifique-se de que sua função CodeBuild de serviço tenha a seguinte política de SSM:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:111122223333:build/*",
                "arn:aws:ssm:us-east-1::document/AWS-StartSSHSession"
            ]
        }
    ]
}
```

------

## Depurar compilações com CodeBuild sandbox (console)
<a name="sandbox-console"></a>

Use as instruções a seguir para executar comandos e conectar seu cliente SSH ao CodeBuild sandbox no console.

### Execute comandos com o CodeBuild sandbox (console)
<a name="sandbox-console.commands"></a>

1. 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, selecione **Projetos de compilação**. Escolha o projeto de compilação e selecione **Depurar compilação**.  
![\[A página de detalhes do projeto de compilação de depuração no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/sandbox-debug-build.png)

1. Na guia **Executar comando**, insira os comandos personalizados e selecione **Executar comando**.  
![\[A página de detalhes do comando de execução no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/debug-build-run.png)

1. Sua CodeBuild sandbox será então inicializada e começará a executar seus comandos personalizados. A saída será mostrada na guia **Saída** quando for concluída.   
![\[A página de saída do comando de execução no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/debug-build-run-output.png)

1. Quando a solução de problemas for concluída, você poderá interromper o sandbox escolhendo **Interromper sandbox**. Depois, escolha **Interromper** para confirmar que o sandbox será interrompido.  
![\[A caixa de diálogo Interromper sandbox.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/stop-sandbox.png)  
![\[A página de saída do comando de execução com um sandbox interrompido no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/stopped-sandbox.png)

### Conecte-se ao seu cliente SSH com CodeBuild sandbox (console)
<a name="sandbox-console.ssh"></a>

1. 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, selecione **Projetos de compilação**. Escolha o projeto de compilação e selecione **Depurar compilação**.  
![\[A página de detalhes do projeto de compilação de depuração no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/sandbox-debug-build.png)

1. Na guia **Cliente SSH**, escolha **Iniciar sandbox**.  
![\[A página de sandbox do cliente SSH no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/ssh-client-sandbox.png)

1. Depois que a CodeBuild sandbox começar a ser executada, siga as instruções do console para conectar seu cliente SSH à sandbox.  
![\[A página de sandbox do cliente SSH no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/ssh-client-sandbox-terminal.png)

1. Quando a solução de problemas for concluída, você poderá interromper o sandbox escolhendo **Interromper sandbox**. Depois, escolha **Interromper** para confirmar que o sandbox será interrompido.  
![\[A caixa de diálogo Interromper sandbox.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/stop-sandbox-2.png)  
![\[A página de saída do comando de execução com um sandbox interrompido no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/stopped-sandbox-2.png)

## Depure compilações com CodeBuild sandbox ()AWS CLI
<a name="sandbox-cli"></a>

Use as instruções a seguir para executar comandos e conectar seu cliente SSH ao CodeBuild sandbox.

### CodeBuild Inicie uma sandbox ()AWS CLI
<a name="sandbox-cli.start-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild start-sandbox --project-name $PROJECT_NAME
```
+ `--project-name`: nome CodeBuild do projeto

------
#### [ Sample request ]

```
aws codebuild start-sandbox --project-name "project-name"
```

------
#### [ Sample response ]

```
{
    "id": "project-name",
    "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
    "projectName": "project-name",
    "requestTime": "2025-02-06T11:24:15.560000-08:00",
    "status": "QUEUED",
    "source": {
        "type": "S3",
        "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
        "insecureSsl": false
    },
    "environment": {
        "type": "LINUX_CONTAINER",
        "image": "aws/codebuild/standard:6.0",
        "computeType": "BUILD_GENERAL1_SMALL",
        "environmentVariables": [{
                "name": "foo",
                "value": "bar",
                "type": "PLAINTEXT"
            },
            {
                "name": "bar",
                "value": "baz",
                "type": "PLAINTEXT"
            }
        ],
        "privilegedMode": false,
        "imagePullCredentialsType": "CODEBUILD"
    },
    "timeoutInMinutes": 10,
    "queuedTimeoutInMinutes": 480,
    "logConfig": {
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    },
    "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
    "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
    "currentSession": {
        "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
        "currentPhase": "QUEUED",
        "status": "QUEUED",
        "startTime": "2025-02-06T11:24:15.626000-08:00",
        "logs": {
            "groupName": "group",
            "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }
}
```

------

### Obtenha informações sobre o status do sandbox (AWS CLI)
<a name="sandbox-cli.batch-get-sandboxes"></a>

------
#### [ CLI command ]

```
aws codebuild batch-get-sandboxes --ids $SANDBOX_IDs
```

------
#### [ Sample request ]

```
aws codebuild stop-sandbox --id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```
+ `--ids`: lista de `sandboxIds` ou `sandboxArns` separados por vírgula.

Você pode fornecer um ID de sandbox ou um ARN de sandbox:
+ ID do sandbox: `<codebuild-project-name>:<UUID>`

  Por exemplo, .`project-name:d25be134-05cb-404a-85da-ac5f85d2d72c`
+ ARN da área restrita: arn:aws:codebuild: ::sandbox/*<region>*: *<account-id>* *<codebuild-project-name>* *<UUID>*

  Por exemplo, .`arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name:d25be134-05cb-404a-85da-ac5f85d2d72c`

------
#### [ Sample response ]

```
{
    "sandboxes": [{
        "id": "project-name",
        "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
        "projectName": "project-name",
        "requestTime": "2025-02-06T11:24:15.560000-08:00",
        "endTime": "2025-02-06T11:39:21.587000-08:00",
        "status": "STOPPED",
        "source": {
            "type": "S3",
            "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
            "insecureSsl": false
        },
        "environment": {
            "type": "LINUX_CONTAINER",
            "image": "aws/codebuild/standard:6.0",
            "computeType": "BUILD_GENERAL1_SMALL",
            "environmentVariables": [{
                    "name": "foo",
                    "value": "bar",
                    "type": "PLAINTEXT"
                },
                {
                    "name": "bar",
                    "value": "baz",
                    "type": "PLAINTEXT"
                }
            ],
            "privilegedMode": false,
            "imagePullCredentialsType": "CODEBUILD"
        },
        "timeoutInMinutes": 10,
        "queuedTimeoutInMinutes": 480,
        "logConfig": {
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        },
        "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
        "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
        "currentSession": {
            "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "currentPhase": "COMPLETED",
            "status": "STOPPED",
            "startTime": "2025-02-06T11:24:15.626000-08:00",
            "endTime": "2025-02-06T11:39:21.600000-08:00",
            "phases": [{
                    "phaseType": "SUBMITTED",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:15.577000-08:00",
                    "endTime": "2025-02-06T11:24:15.606000-08:00",
                    "durationInSeconds": 0
                },
                {
                    "phaseType": "QUEUED",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:15.606000-08:00",
                    "endTime": "2025-02-06T11:24:16.067000-08:00",
                    "durationInSeconds": 0
                },
                {
                    "phaseType": "PROVISIONING",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:16.067000-08:00",
                    "endTime": "2025-02-06T11:24:20.519000-08:00",
                    "durationInSeconds": 4,
                    "contexts": [{
                        "statusCode": "",
                        "message": ""
                    }]
                },
                {
                    "phaseType": "DOWNLOAD_SOURCE",
                    "phaseStatus": "SUCCEEDED",
                    "startTime": "2025-02-06T11:24:20.519000-08:00",
                    "endTime": "2025-02-06T11:24:22.238000-08:00",
                    "durationInSeconds": 1,
                    "contexts": [{
                        "statusCode": "",
                        "message": ""
                    }]
                },
                {
                    "phaseType": "RUNNING_SANDBOX",
                    "phaseStatus": "TIMED_OUT",
                    "startTime": "2025-02-06T11:24:22.238000-08:00",
                    "endTime": "2025-02-06T11:39:21.560000-08:00",
                    "durationInSeconds": 899,
                    "contexts": [{
                        "statusCode": "BUILD_TIMED_OUT",
                        "message": "Build has timed out. "
                    }]
                },
                {
                    "phaseType": "COMPLETED",
                    "startTime": "2025-02-06T11:39:21.560000-08:00"
                }
            ],
            "logs": {
                "groupName": "group",
                "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        }
    }],
    "sandboxesNotFound": []
}
```

------

### Interromper um sandbox (AWS CLI)
<a name="sandbox-cli.stop-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild stop-sandbox --id $SANDBOX-ID
```
+ `--id`: um `sandboxId` ou `sandboxArn`.

------
#### [ Sample request ]

```
aws codebuild stop-sandbox --id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "id": "project-name",
    "arn": "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name",
    "projectName": "project-name",
    "requestTime": "2025-02-06T11:24:15.560000-08:00",
    "status": "STOPPING",
    "source": {
        "type": "S3",
        "location": "arn:aws:s3:::cofa-e2e-test-1-us-west-2-beta-default-build-sources/eb-sample-jetty-v4.zip",
        "insecureSsl": false
    },
    "environment": {
        "type": "LINUX_CONTAINER",
        "image": "aws/codebuild/standard:6.0",
        "computeType": "BUILD_GENERAL1_SMALL",
        "environmentVariables": [{
                "name": "foo",
                "value": "bar",
                "type": "PLAINTEXT"
            },
            {
                "name": "bar",
                "value": "baz",
                "type": "PLAINTEXT"
            }
        ],
        "privilegedMode": false,
        "imagePullCredentialsType": "CODEBUILD"
    },
    "timeoutInMinutes": 10,
    "queuedTimeoutInMinutes": 480,
    "logConfig": {
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    },
    "encryptionKey": "arn:aws:kms:us-west-2:962803963624:alias/SampleEncryptionKey",
    "serviceRole": "arn:aws:iam::962803963624:role/BuildExecutionServiceRole",
    "currentSession": {
        "id": "0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
        "currentPhase": "RUN_SANDBOX",
        "status": "STOPPING",
        "startTime": "2025-02-06T11:24:15.626000-08:00",
        "phases": [{
                "phaseType": "SUBMITTED",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.144000-08:00",
                "endTime": "2025-02-08T14:33:26.173000-08:00",
                "durationInSeconds": 0
            },
            {
                "phaseType": "QUEUED",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.173000-08:00",
                "endTime": "2025-02-08T14:33:26.702000-08:00",
                "durationInSeconds": 0
            },
            {
                "phaseType": "PROVISIONING",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:26.702000-08:00",
                "endTime": "2025-02-08T14:33:30.530000-08:00",
                "durationInSeconds": 3,
                "contexts": [{
                    "statusCode": "",
                    "message": ""
                }]
            },
            {
                "phaseType": "DOWNLOAD_SOURCE",
                "phaseStatus": "SUCCEEDED",
                "startTime": "2025-02-08T14:33:30.530000-08:00",
                "endTime": "2025-02-08T14:33:33.478000-08:00",
                "durationInSeconds": 2,
                "contexts": [{
                    "statusCode": "",
                    "message": ""
                }]
            },
            {
                "phaseType": "RUN_SANDBOX",
                "startTime": "2025-02-08T14:33:33.478000-08:00"
            }
        ],
        "logs": {
            "groupName": "group",
            "streamName": "stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream$252F0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream/0103e0e7-52aa-4a3d-81dd-bfc27226fa54",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/0103e0e7-52aa-4a3d-81dd-bfc27226fa54.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }
}
```

------

### Iniciar a execução de um comando (AWS CLI)
<a name="sandbox-cli.start-command-execution"></a>

------
#### [ CLI command ]

```
aws codebuild start-command-execution --command $COMMAND --type $TYPE --sandbox-id $SANDBOX-ID
```
+ `--command`: o comando que precisa ser executado.
+ `--sandbox-id`: um `sandboxId` ou `sandboxArn`.
+ `--type`: o tipo de comando, `SHELL`.

------
#### [ Sample request ]

```
aws codebuild start-command-execution --command "echo "Hello World"" --type SHELL --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name
```

------
#### [ Sample response ]

```
{
    "id": "e1c658c2-02bb-42a8-9abb-94835241fcd6",
    "sandboxId": "f7126a4a-b0d5-452f-814c-fea73718f805",
    "submitTime": "2025-02-06T20:12:02.683000-08:00",
    "status": "SUBMITTED",
    "command": "echo \"Hello World\"",
    "type": "SHELL",
    "logs": {
        "groupName": "group",
        "streamName": "stream",
        "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
        "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/f7126a4a-b0d5-452f-814c-fea73718f805.gz?region=us-west-2",
        "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
        "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/f7126a4a-b0d5-452f-814c-fea73718f805.gz",
        "cloudWatchLogs": {
            "status": "ENABLED",
            "groupName": "group",
            "streamName": "stream"
        },
        "s3Logs": {
            "status": "ENABLED",
            "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
            "encryptionDisabled": false
        }
    }
}
```

------

### Obter informações sobre as execuções do comando (AWS CLI)
<a name="sandbox-cli.batch-get-command-executions"></a>

------
#### [ CLI command ]

```
aws codebuild batch-get-command-executions --command-execution-ids $COMMAND-IDs --sandbox-id $SANDBOX-IDs
```
+ `--command-execution-ids`: lista de `commandExecutionIds` separada por vírgulas.
+ `--sandbox-id`: um `sandboxId` ou `sandboxArn`.

------
#### [ Sample request ]

```
aws codebuild batch-get-command-executions --command-execution-ids"c3c085ed-5a8f-4531-8e95-87d547f27ffd" --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "commandExecutions": [{
        "id": "c3c085ed-5a8f-4531-8e95-87d547f27ffd",
        "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
        "submitTime": "2025-02-10T20:18:17.118000-08:00",
        "startTime": "2025-02-10T20:18:17.939000-08:00",
        "endTime": "2025-02-10T20:18:17.976000-08:00",
        "status": "SUCCEEDED",
        "command": "echo \"Hello World\"",
        "type": "SHELL",
        "exitCode": "0",
        "standardOutputContent": "Hello World\n",
        "logs": {
            "groupName": "group",
            "streamName": "stream",
            "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
            "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
            "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
            "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
            "cloudWatchLogs": {
                "status": "ENABLED",
                "groupName": "group",
                "streamName": "stream"
            },
            "s3Logs": {
                "status": "ENABLED",
                "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                "encryptionDisabled": false
            }
        }
    }],
    "commandExecutionsNotFound": []
}
```

------

### Listar as execuções de comandos para um sandbox (AWS CLI)
<a name="sandbox-cli.list-command-executions-for-sandbox"></a>

------
#### [ CLI command ]

```
aws codebuild list-command-executions-for-sandbox --sandbox-id $SANDBOX-ID --next-token $NEXT_TOKEN --max-results $MAX_RESULTS --sort-order $SORT_ORDER
```
+ `--next-token`: o próximo token, se houver, para obter resultados paginados. Você obterá esse valor por meio da execução anterior de listar sandboxes.
+ `--max-results`: (opcional) o número máximo de registros de sandbox a serem recuperados.
+ `--sort-order`: a ordem na qual os registros do sandbox devem ser recuperados.

------
#### [ Sample request ]

```
aws codebuild list-command-executions-for-sandbox --sandbox-id "arn:aws:codebuild:us-west-2:962803963624:sandbox/project-name"
```

------
#### [ Sample response ]

```
{
    "commandExecutions": [{
            "id": "aad6687e-07bc-45ab-a1fd-f5440229b528",
            "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
            "submitTime": "2025-02-10T20:18:35.304000-08:00",
            "startTime": "2025-02-10T20:18:35.615000-08:00",
            "endTime": "2025-02-10T20:18:35.651000-08:00",
            "status": "FAILED",
            "command": "fail command",
            "type": "SHELL",
            "exitCode": "127",
            "standardErrContent": "/codebuild/output/tmp/script.sh: 4: fail: not found\n",
            "logs": {
                "groupName": "group",
                "streamName": "stream",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        },
        {
            "id": "c3c085ed-5a8f-4531-8e95-87d547f27ffd",
            "sandboxId": "cd71e456-2a4c-4db4-ada5-da892b0bba05",
            "submitTime": "2025-02-10T20:18:17.118000-08:00",
            "startTime": "2025-02-10T20:18:17.939000-08:00",
            "endTime": "2025-02-10T20:18:17.976000-08:00",
            "status": "SUCCEEDED",
            "command": "echo \"Hello World\"",
            "type": "SHELL",
            "exitCode": "0",
            "standardOutputContent": "Hello World\n",
            "logs": {
                "groupName": "group",
                "streamName": "stream",
                "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logsV2:log-groups/log-group/group/log-events/stream",
                "s3DeepLink": "https://s3.console.aws.amazon.com/s3/object/codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz?region=us-west-2",
                "cloudWatchLogsArn": "arn:aws:logs:us-west-2:962803963624:log-group:group:log-stream:stream",
                "s3LogsArn": "arn:aws:s3:::codefactory-test-pool-1-us-west-2-beta-default-build-logs/cd71e456-2a4c-4db4-ada5-da892b0bba05.gz",
                "cloudWatchLogs": {
                    "status": "ENABLED",
                    "groupName": "group",
                    "streamName": "stream"
                },
                "s3Logs": {
                    "status": "ENABLED",
                    "location": "codefactory-test-pool-1-us-west-2-beta-default-build-logs",
                    "encryptionDisabled": false
                }
            }
        }
    ]
}
```

------

### Listar sandboxes (AWS CLI)
<a name="sandbox-cli.list-sandboxes"></a>

------
#### [ CLI command ]

```
aws codebuild list-sandboxes --next-token $NEXT_TOKEN --max-results $MAX_RESULTS --sort-order $SORT_ORDER
```

------
#### [ Sample request ]

```
aws codebuild list-sandboxes
```

------
#### [ Sample response ]

```
{
    "ids": [
        "s3-log-project-integ-test-temp173925062814985d64e0f-7880-41df-9a3c-fb6597a266d2:827a5243-0841-4b69-a720-4438796f6967",
        "s3-log-project-integ-test-temp1739249999716bbd438dd-8bb8-47bd-ba6b-0133ac65b3d3:e2fa4eab-73af-42e3-8903-92fddaf9f378",
        "s3-log-project-integ-test-temp17392474779450fbdacc2-2d6e-4190-9ad5-28f891bb7415:cd71e456-2a4c-4db4-ada5-da892b0bba05",
        "s3-log-project-integ-test-temp17392246284164301421c-5030-4fa1-b4d3-ca15e44771c5:9e26ab3f-65e4-4896-a19c-56b1a95e630a",
        "s3-log-project-integ-test-temp173921367319497056d8d-6d8e-4f5a-a37c-a62f5686731f:22d91b06-df1e-4e9c-a664-c0abb8d5920b",
        "s3-log-project-integ-test-temp1739213439503f6283f19-390c-4dc8-95a9-c8480113384a:82cc413e-fc46-47ab-898f-ae23c83a613f",
        "s3-log-project-integ-test-temp1739054385570b1f1ddc2-0a23-4062-bd0c-24e9e4a99b99:c02562f3-2396-42ec-98da-38e3fe5da13a",
        "s3-log-project-integ-test-temp173905400540237dab1ac-1fde-4dfb-a8f5-c0114333dc89:d2f30493-f65e-4fa0-a7b6-08a5e77497b9",
        "s3-log-project-integ-test-temp17390534055719c534090-7bc4-48f1-92c5-34acaec5bf1e:df5f1c8a-f017-43b7-91ba-ad2619e2c059",
        "s3-log-project-integ-test-temp1739052719086a61813cc-ebb9-4db4-9391-7f43cc984ee4:d61917ec-8037-4647-8d52-060349272c4a",
        "s3-log-project-integ-test-temp173898670094078b67edb-c42f-42ed-9db2-4b5c1a5fc66a:ce33dfbc-beeb-4466-8c99-a3734a0392c7",
        "s3-log-project-integ-test-temp17389863425584d21b7cd-32e2-4f11-9175-72c89ecaffef:046dadf0-1f3a-4d51-a2c0-e88361924acf",
        "s3-log-project-integ-test-temp1738985884273977ccd23-394b-46cc-90d3-7ab94cf764dc:0370dc41-9339-4b0a-91ed-51929761b244",
        "s3-log-project-integ-test-temp1738985365972241b614f-8e41-4387-bd25-2b8351fbc9e0:076c392a-9630-47d8-85a9-116aa34edfff",
        "s3-log-project-integ-test-temp1738985043988a51a9e2b-09d6-4d24-9c3c-1e6e21ac9fa8:6ea3949c-435b-4177-aa4d-614d5956244c",
        "s3-log-project-integ-test-temp1738984123354c68b31ad-49d1-4f4b-981d-b66c00565ff6:6c3fff6c-815b-48b5-ada3-737400a6dee8",
        "s3-log-project-integ-test-temp1738977263715d4d5bf6c-370a-48bf-8ea6-905358a6cf92:968a0f54-724a-42d1-9207-6ed854b2fae8",
        "s3-log-project-integ-test-temp173897358796816ce8d7d-2a5e-41ef-855b-4a94a8d2795d:80f9a7ce-930a-402e-934e-d8b511d68b04",
        "s3-log-project-integ-test-temp17389730633301af5e452-0966-467c-b684-4e36d47f568c:cabbe989-2e8a-473c-af25-32edc8c28646",
        "s3-log-project-integ-test-temp1738901503813173fd468-b723-4d7b-9f9f-82e88d17f264:f7126a4a-b0d5-452f-814c-fea73718f805",
        "s3-log-project-integ-test-temp1738890502472c13616fb-bd0f-4253-86cc-28b74c97a0ba:c6f197e5-3a53-45b6-863e-0e6353375437",
        "s3-log-project-integ-test-temp17388903044683610daf3-8da7-43c6-8580-9978432432ce:d20aa317-8838-4966-bbfc-85b908213df1",
        "s3-log-project-integ-test-temp173888857196780b5ab8b-e54b-44fd-a222-c5a374fffe96:ab4b9970-ffae-47a0-b3a8-7b6790008cad",
        "s3-log-project-integ-test-temp1738888336931c11d378d-e74d-49a4-a723-3b92e6f7daac:4922f0e8-9b7d-4119-9c9f-115cd85e703e",
        "s3-log-project-integ-test-temp17388881717651612a397-c23f-4d88-ba87-2773cd3fc0c9:be91c3fc-418e-4feb-8a3a-ba58ff8f4e8a",
        "s3-log-project-integ-test-temp17388879727174c3c62ed-6195-4afb-8a03-59674d0e1187:a48826a8-3c0d-43c5-a1b5-1c98a0f978e9",
        "s3-log-project-integ-test-temp1738885948597cef305e4-b8b4-46b0-a65b-e2d0a7b83294:c050e77d-e3f8-4829-9a60-46149628fe96",
        "s3-log-project-integ-test-temp173888561463001a7d2a8-e4e4-4434-94db-09d3da9a9e17:8c3ac3f5-7111-4297-aec9-2470d3ead873",
        "s3-log-project-integ-test-temp1738869855076eb19cafd-04fe-41bd-8aa0-40826d0c0d27:d25be134-05cb-404a-85da-ac5f85d2d72c",
        "s3-project-integ-test-temp1738868157467148eacfc-d39b-49fc-a137-e55381cd2978:4909557b-c221-4814-b4b6-7d9e93d37c35",
        "s3-project-integ-test-temp1738820926895abec0af2-e33d-473c-9cf4-2122dd9d6876:8f5cf218-71d6-40a4-a4be-6cacebd7765f",
        "s3-project-integ-test-temp173881998877574f969a6-1c2e-4441-b463-ab175b45ce32:04396851-c901-4986-9117-585528e3877f",
        "s3-project-integ-test-temp17388189812309abd2604-29ba-4cf6-b6bf-073207b7db9c:540075c7-f5ec-41e8-9341-2233c09247eb",
        "s3-project-integ-test-temp1738818843474d3ea9ac1-b609-461b-bbdb-2da245c9bc96:865d4c3c-fbfe-4ece-9c92-d0c928341404",
        "s3-project-integ-test-temp1738818542236006e9169-e6d9-4344-9b59-f557e7aec619:1f9ffa87-da15-4290-83e2-eebdd877497b",
        "s3-project-integ-test-temp173881809557486ad11fd-7931-48d7-81d5-499cea52a6bc:c4c2efc4-685f-4e13-8b0f-1ef85ec300b1",
        "s3-project-integ-test-temp173881794103322941020-3f0b-49c3-b836-fcd818ec9484:0344cfba-de48-456d-b2a8-6566bd4a5d6e",
        "s3-project-integ-test-temp1738817680747b93d0d0b-ea16-497f-9559-af25ee6dcfdf:654a3a55-d92a-4dc6-8da8-56fd4d40d7e1",
        "s3-project-integ-test-temp17388174027191255c3da-086c-4270-b047-acac0b7bee0d:b7e82740-2c69-42fc-ab5a-dbf15bc016a1",
        "s3-project-integ-test-temp1738817099799016e7fa3-b9b5-46a2-bcd5-0888c646743f:8705a6a4-79ff-427a-a1c3-85c4e8fe462e",
        "s3-project-integ-test-temp1738816479281bb0c3606-5ebf-4623-bed5-12b60e9d3512:f23fc74b-a981-4835-8e28-375fcd4c99e4",
        "s3-project-integ-test-temp1738816263585c939a133-4d37-482c-9238-1dbff34b7674:ca28e234-0045-4ae6-8732-938b17597f50",
        "s3-project-integ-test-temp173881580873072d18733-8fe4-43b1-83f7-95f25bb27ccf:c6f0f55b-5736-47c7-a3aa-1b8461a6d5ed"
    ]
}
```

------

# Tutorial: conectar-se a um sandbox usando SSH
<a name="sandbox-ssh-tutorial"></a>

Este tutorial mostra como se conectar a uma CodeBuild sandbox usando um cliente SSH.

Para concluir este tutorial, você deve primeiramente:
+ Certifique-se de ter um AWS CodeBuild projeto existente.
+ Configure as permissões apropriadas do IAM configuradas para a função CodeBuild do seu projeto. 
+ Instale e configure AWS CLI em sua máquina local.

## Etapa 1: iniciar um sandbox
<a name="sandbox-ssh-tutorial.start-sandbox"></a>

**Para iniciar uma CodeBuild sandbox no console**

1. 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, selecione **Projetos de compilação**. Escolha o projeto de compilação e selecione **Depurar compilação**.  
![\[A página de detalhes do projeto de compilação no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/project-debug-build.png)

1. Na guia **Cliente SSH**, escolha **Iniciar sandbox**.  
![\[A guia “Cliente SSH” no console com o botão “Iniciar sandbox”.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/ssh-client-sandbox.png)

1. O processo de inicialização do sandbox pode levar algum tempo. Você pode se conectar ao sandbox quando o status mudar para `RUN_SANDDBOX`.  
![\[A conexão do sandbox via SSH depois que o status muda para “RUN_SANDBOX”.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/run-sandbox.png)

## Etapa 2: modificar a configuração de SSH local
<a name="sandbox-ssh-tutorial.modify-ssh"></a>

Se estiver se conectando ao sandbox pela primeira vez, você precisará realizar um processo de configuração único usando as seguintes etapas:

**Como modificar a configuração SSH local no console**

1. Encontre os comandos de configuração do sistema operacional.

1. Abra o terminal local e, depois, copie e execute os comandos fornecidos para baixar e executar o script a fim de definir a configuração de SSH local. Por exemplo, se o sistema operacional for o macOS, use o seguinte comando:  
![\[Os comandos do macOS para conexão SSH com a CodeBuild sandbox no console.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/modify-ssh-macOS.png)

1. O script de configuração adiciona as configurações necessárias para se conectar aos sandboxes. Você recebe uma solicitação para aceitar essas alterações.

1. Após a configuração bem-sucedida, uma nova entrada de configuração SSH para CodeBuild sandbox será criada.  
![\[Uma conexão de sandbox via SSH bem-sucedida.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/ssh-terminal-success.png)

## Etapa 3: conectar-se ao sandbox
<a name="sandbox-ssh-tutorial.connect-sandbox"></a>

**Como modificar a configuração SSH local no console**

1. Configure a AWS CLI autenticação e garanta que seu AWS CLI usuário tenha a `codebuild:StartSandboxConnection` permissão. Consulte mais informações em [Autenticação usando credenciais de usuário do IAM para a AWS CLI](https://docs.aws.amazon.com/cli/v1/userguide/cli-authentication-user.html) no *Guia do usuário da AWS Command Line Interface versão 1*.

1. Conecte-se ao sandbox com o seguinte comando:

   ```
   ssh codebuild-sandbox-ssh=arn:aws:codebuild:us-east-1:<account-id>:sandbox/<sandbox-id>
   ```
**nota**  
Para solucionar falhas de conexão, use o sinalizador `-v` para habilitar a saída detalhada. Por exemplo, .`ssh -v codebuild-sandbox-ssh=arn:aws:codebuild:us-east-1:<account-id>:sandbox/<sandbox-id>`  
Consulte mais orientações sobre solução de problemas em [Solução de problemas de conexão SSH do AWS CodeBuild sandbox](sandbox-troubleshooting.md).

## Etapa 4: analise seus resultados
<a name="sandbox-ssh-tutorial.review-results"></a>

Depois da conexão, é possível depurar falhas de compilação, testar comandos de compilação, experimentar alterações na configuração e verificar as dependências e variáveis de ambiente com o sandbox.

# Solução de problemas de conexão SSH do AWS CodeBuild sandbox
<a name="sandbox-troubleshooting"></a>

Use as informações deste tópico para ajudá-lo a identificar, diagnosticar e resolver problemas de conexão SSH do CodeBuild sandbox.

**Topics**
+ [`StartSandboxConnection``InvalidInputException`erro quando o SSH entra no ambiente CodeBuild sandbox](#sandbox-troubleshooting.invalid-input)
+ [Erro: “Não é possível localizar as credenciais” quando o SSH entra no ambiente sandbox CodeBuild](#sandbox-troubleshooting.credentials)
+ [`StartSandboxConnection``AccessDeniedException`erro quando o SSH entra no ambiente CodeBuild sandbox](#sandbox-troubleshooting.access-denied)
+ [Erro: “ssh: não foi possível resolver o nome do host” quando o SSH está no ambiente sandbox CodeBuild](#sandbox-troubleshooting.hostname)

## `StartSandboxConnection``InvalidInputException`erro quando o SSH entra no ambiente CodeBuild sandbox
<a name="sandbox-troubleshooting.invalid-input"></a>

**Problema:** ao tentar se conectar a um ambiente CodeBuild sandbox usando o comando`ssh codebuild-sandbox-ssh=<sandbox-arn>`, você pode encontrar um `InvalidInputException` erro como:

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for {sandbox-arn}
User: arn:aws:sts::<account-ID>:assumed-role/<service-role-name>/AWSCodeBuild-<UUID> 
is not authorized to perform: ssm:StartSession on resource.
```

```
An error occurred (InvalidInputException) when calling the StartSandboxConnection 
operation: Failed to start SSM session for 
sandbox <sandbox-arn>: codebuild:<UUID> is not connected.
```

**Possível causa:**
+ Agente do Amazon EC2 Systems Manager ausente: a imagem de compilação não tem o SSM Agent devidamente instalado ou configurado.
+ Permissões insuficientes: a função de serviço do CodeBuild projeto não tem as permissões SSM necessárias.

**Solução recomendada:** se você estiver usando uma imagem personalizada para a compilação, faça o seguinte.

1. Instalar o SSM Agent do . Consulte mais informações em [Instalar e desinstalar manualmente o SSM Agent em instâncias do Amazon EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) no **. A versão do SSM Agent deve ser `3.0.1295.0` ou posterior.

1. Copie o arquivo, [ https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/7.0/amazon-ssm-agent.json) para o diretório na sua imagem. `/etc/amazon/ssm/` Isso habilita o **Modo de contêiner** no SSM Agent.

1. Certifique-se de que a função de serviço do seu CodeBuild projeto tenha as seguintes permissões e reinicie o ambiente sandbox:

   ```
   {
      "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
    },
    {
       "Effect": "Allow",
       "Action": [
          "ssm:StartSession"
        ],
        "Resource": [
           "arn:aws:codebuild:region:account-id:build/*",
           "arn:aws:ssm:region::document/AWS-StartSSHSession"
        ]
    }
   ```

## Erro: “Não é possível localizar as credenciais” quando o SSH entra no ambiente sandbox CodeBuild
<a name="sandbox-troubleshooting.credentials"></a>

**Problema:** ao tentar se conectar a um ambiente CodeBuild sandbox usando o comando`ssh codebuild-sandbox-ssh=<sandbox-arn>`, você pode encontrar o seguinte erro de credenciais:

```
Unable to locate credentials. You can configure credentials by running 
"aws configure".
```

**Possível causa:** AWS as credenciais não foram configuradas corretamente em seu ambiente local.

**Solução recomendada:** configure suas AWS CLI credenciais seguindo a documentação oficial: [Definindo as configurações do Guia do usuário da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) *interface de linha de AWS comando para a versão 2*.

## `StartSandboxConnection``AccessDeniedException`erro quando o SSH entra no ambiente CodeBuild sandbox
<a name="sandbox-troubleshooting.access-denied"></a>

**Problema:** ao tentar se conectar a um ambiente de CodeBuild sandbox usando o comando`ssh codebuild-sandbox-ssh=<sandbox-arn>`, você pode encontrar o seguinte erro de permissão:

```
An error occurred (AccessDeniedException) when calling the StartSandboxConnection 
operation: 
User: arn:aws:sts::account-id:assumed-role/role-name
is not authorized to perform: codebuild:StartSandboxConnection on resource: 
sandbox-arn
because no identity-based policy allows the codebuild:StartSandboxConnection action
```

**Causa possível:** suas AWS credenciais não têm as CodeBuild permissões necessárias para realizar essa operação.

**Solução recomendada:** certifique-se de que o usuário ou a função do IAM associada às suas AWS CLI credenciais tenha as seguintes permissões:

```
{
    "Effect": "Allow",
    "Action": [
       "codebuild:StartSandboxConnection"
     ],
     "Resource": [
        "arn:aws:codebuild:region:account-id:sandbox/*"
     ]
}
```

## Erro: “ssh: não foi possível resolver o nome do host” quando o SSH está no ambiente sandbox CodeBuild
<a name="sandbox-troubleshooting.hostname"></a>

**Problema:** ao tentar se conectar a um ambiente de CodeBuild sandbox usando o comando`ssh codebuild-sandbox-ssh=<sandbox-arn>`, você encontra o seguinte erro de resolução de nome de host:

```
ssh: Could not resolve hostname
```

**Possível causa:** Esse erro geralmente ocorre quando o script de conexão de CodeBuild sandbox necessário não foi executado corretamente em seu ambiente local.

**A solução recomendada:**

1. Baixe o script de conexão do CodeBuild sandbox.

1. Execute o script no terminal para estabelecer a configuração SSH necessária.

1. Tente estabelecer novamente a conexão SSH com o ambiente de sandbox.

# Depurar compilações com o Session Manager
<a name="session-manager"></a>

Em AWS CodeBuild, você pode pausar uma compilação em execução e, em seguida, usar o Gerenciador de AWS Systems Manager Sessões para se conectar ao contêiner de compilação e visualizar o estado do contêiner.

**nota**  
Esse atributo não está disponível em ambientes Windows.

**Topics**
+ [Pré-requisitos](#ssm.prerequisites)
+ [Pausar a compilação](#ssm-pause-build)
+ [Iniciar a compilação](#ssm-start-build)
+ [Conectar-se ao contêiner de compilação](#ssm-connect)
+ [Retomar a compilação](#ssm-resume-build)

## Pré-requisitos
<a name="ssm.prerequisites"></a>

Para permitir que o Gerenciador de Sessões seja usado com a sessão de compilação, é necessário habilitar a conexão de sessão para a compilação. Há dois pré-requisitos:
+ CodeBuild As imagens com curadoria padrão do Linux já têm o agente SSM instalado e o agente SSM ativado. ContainerMode 

  Se você estiver usando uma imagem personalizada para a compilação, faça o seguinte:

  1. Instalar o SSM Agent do . Para obter mais informações, consulte [Manually install SSM Agent on EC2 instances for Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) no Guia do usuário do AWS Systems Manager . A versão do SSM Agent deve ser 3.0.1295.0 ou posterior.

  1. Copie o arquivo [https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json) para o diretório em sua imagem. `/etc/amazon/ssm/` Isso habilita o Modo de contêiner no SSM Agent.
**nota**  
Imagens personalizadas exigiriam o SSM Agent mais atualizado para que esse atributo funcionasse conforme o esperado.
+ A função CodeBuild de serviço deve ter a seguinte política de SSM:

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	  
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
       }
     ]
  }
  ```

------

  Você pode fazer com que o CodeBuild console anexe automaticamente essa política à sua função de serviço ao iniciar a compilação. Se preferir, você poderá anexar essa política ao perfil de serviço manualmente.
+ Se você tiver a **atividade de sessão de auditoria e registro** ativada nas preferências do Systems Manager, a função CodeBuild de serviço também deverá ter permissões adicionais. As permissões são diferentes, dependendo do local onde os logs são armazenados.  
CloudWatch Registros  
Se estiver usando CloudWatch Logs para armazenar seus registros, adicione a seguinte permissão à função CodeBuild de serviço:    
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "logs:DescribeLogGroups",
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*:*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:MyLogGroup:*"
          }
      ]
  }
  ```  
Amazon S3  
Se estiver usando o Amazon S3 para armazenar seus registros, adicione a seguinte permissão à função de CodeBuild serviço:    
****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetEncryptionConfiguration",
          "s3:PutObject"
        ],
        "Resource": [
          "arn:aws:s3:::<bucket-name>",
          "arn:aws:s3:::<bucket-name>/*"
        ]
      }
    ]
  }
  ```

  Para obter mais informações, consulte [Auditing and logging session activity](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging-auditing.html) no *Guia do usuário do AWS Systems Manager *.

## Pausar a compilação
<a name="ssm-pause-build"></a>

Para pausar a compilação, insira o comando **codebuild-breakpoint** em qualquer uma das fases de compilação no arquivo buildspec. A compilação será pausada nesse momento, o que permite a você se conectar ao contêiner de compilação e visualizar o contêiner no estado atual. 

Por exemplo, adicione o seguinte às fases de compilação do arquivo buildspec.

```
phases:
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - echo "Hello World" > /tmp/hello-world
      - codebuild-breakpoint
```

Esse código cria o arquivo `/tmp/hello-world` e, depois, pausa a compilação nesse momento.

## Iniciar a compilação
<a name="ssm-start-build"></a>

Para permitir que o Gerenciador de Sessões seja usado com a sessão de compilação, é necessário habilitar as conexões de sessão para a compilação. Para fazer isso, ao iniciar a compilação, siga as estas etapas:

1. 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, selecione **Projetos de compilação**. Selecione o projeto de compilação e, depois, escolha **Iniciar compilação com substituições**.

1. Escolha **Advanced build overrides (Substituições de compilação avançadas)**.

1. Na seção **Ambiente**, escolha a opção **Habilitar conexão de sessão**. Se essa opção não for selecionada, todos os comandos **codebuild-breakpoint** e **codebuild-resume** serão ignorados.

1. Faça todas as outras alterações desejadas e escolha **Iniciar compilação**. 

1. Monitore o status da compilação no console. Quando a sessão está disponível, o link do **Gerenciador de Sessões da AWS ** é exibido na seção **Status da compilação**.

## Conectar-se ao contêiner de compilação
<a name="ssm-connect"></a>

É possível se conectar ao contêiner de compilação de uma duas formas:

CodeBuild console  
Em um navegador web, abra o link do **Gerenciador de Sessões do AWS ** para se conectar ao contêiner de compilação. É aberta uma sessão de terminal que permite a você navegar e controlar o contêiner de compilação. 

AWS CLI  
A máquina local deve ter o plug-in do Gerenciador de Sessões instalado para esse procedimento. Para obter mais informações, consulte [Instalar o plug-in do gerenciador de sessões para a AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) no Guia do AWS Systems Manager usuário. 

1. Chame a API **batch-get-builds** com o ID da compilação para obter informações sobre a compilação, incluindo o identificador de destino da sessão. O nome da propriedade do identificador de destino da sessão varia de acordo com o tipo de saída do comando `aws`. É por isso que `--output json` é adicionado ao comando.

   ```
   aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
   ```

1. Copie o valor da propriedade `sessionTarget`. O nome da propriedade `sessionTarget` pode variar dependendo do tipo de saída do comando `aws`. É por isso que `--output json` foi adicionado ao comando na etapa anterior.

1. Use o comando a seguir para se conectar ao contêiner de compilação.

   ```
   aws ssm start-session --target <sessionTarget> --region <region>
   ```

Neste exemplo, verifique se o arquivo `/tmp/hello-world` existe e contém o texto `Hello World`.

## Retomar a compilação
<a name="ssm-resume-build"></a>

Depois de terminar de examinar o contêiner de compilação, emita o comando **codebuild-resume** do shell de contêiner.

```
$ codebuild-resume
```

# Excluir compilações no AWS CodeBuild
<a name="delete-builds"></a>

Você pode usar a AWS CLI ou os SDKs da AWS para excluir compilações no AWS CodeBuild.

**Topics**
+ [Excluir compilações (AWS CLI)](#delete-builds-cli)
+ [Excluir compilações (SDKs da AWS)](#delete-builds-sdks)

## Excluir compilações (AWS CLI)
<a name="delete-builds-cli"></a>

Execute o comando `batch-delete-builds`:

```
aws codebuild batch-delete-builds --ids ids
```

No comando anterior, substitua o seguinte espaço reservado:
+ *ids*: String necessária. Os IDs das compilações a serem excluídas. Para especificar várias compilações, separe o ID de cada compilação com um espaço. Para obter uma lista de IDs de compilação, consulte os seguintes tópicos:
  + [Veja uma lista de build IDs (AWS CLI)](view-build-list.md#view-build-list-cli)
  + [Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

Em caso de êxito, uma matriz `buildsDeleted` será exibida na saída, contendo o Nome de recurso da Amazon (ARN) de cada compilação que foi excluída com êxito. Informações sobre compilações que não foram excluídas com êxito são exibidas na saída dentro de uma matriz `buildsNotDeleted`.

Por exemplo, se você executar este comando:

```
aws codebuild batch-delete-builds --ids my-demo-build-project:f8b888d2-5e1e-4032-8645-b115195648EX my-other-demo-build-project:a18bc6ee-e499-4887-b36a-8c90349c7eEX
```

Informações semelhantes às seguintes são exibidas na saída:

```
{
  "buildsNotDeleted": [
    {
      "id": "arn:aws:codebuild:us-west-2:123456789012:build/my-demo-build-project:f8b888d2-5e1e-4032-8645-b115195648EX",
      "statusCode": "BUILD_IN_PROGRESS"
    }
  ], 
  "buildsDeleted": [
    "arn:aws:codebuild:us-west-2:123456789012:build/my-other-demo-build-project:a18bc6ee-e499-4887-b36a-8c90349c7eEX"
  ]
}
```

## Excluir compilações (SDKs da AWS)
<a name="delete-builds-sdks"></a>

Para obter informações sobre como usar o AWS CodeBuild com os SDKs da AWS, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md).

# Repita as compilações manualmente em AWS CodeBuild
<a name="retry-build"></a>

Você pode usar o AWS CodeBuild console, AWS CLI, ou AWS SDKs para repetir manualmente uma única compilação ou uma compilação em AWS CodeBuild lote.

**Topics**
+ [Repetir uma compilação manualmente (console)](#retry-build-console)
+ [Repetir uma compilação manualmente (AWS CLI)](#retry-build-cli)
+ [Repetir uma compilação manualmente (AWS SDKs)](#retry-build-sdks)

## Repetir uma compilação manualmente (console)
<a name="retry-build-console"></a>

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Execute um destes procedimentos:
   + Se a *build-ID* página ***build-project-name*:** for exibida, escolha **Repetir compilação**.
   + No painel de navegação, selecione **Histórico de compilação**. Na lista de compilações, selecione a caixa da compilação e depois selecione **Interromper compilação**.
   + No painel de navegação, selecione **Projetos de compilação**. Na lista de projetos de compilação, na coluna **Nome**, selecione o link para o nome do projeto de compilação. Na lista de compilações, selecione a caixa da compilação e depois selecione **Interromper compilação**.

**nota**  
Por padrão, somente as 100 compilações ou projetos de compilação mais recentes são exibidos. Para visualizar mais compilações ou projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Compilações por página** ou **Projetos por página** ou use as setas para voltar e avançar.

## Repetir uma compilação manualmente (AWS CLI)
<a name="retry-build-cli"></a>
+ Execute o comando **retry-build**:

  ```
  aws codebuild retry-build --id <build-id> --idempotency-token <idempotencyToken>
  ```

  No comando anterior, substitua o seguinte espaço reservado:
  + *<build-id>*: Cadeia de caracteres obrigatória. O ID da compilação ou da compilação em lote a ser repetida. Para obter uma lista de compilações IDs, consulte os seguintes tópicos:
    + [Veja uma lista de build IDs (AWS CLI)](view-build-list.md#view-build-list-cli)
    + [Exibir uma lista de compilações em lote IDs (AWS CLI)](view-build-list.md#view-batch-build-list-cli)
    + [Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)
    + [Exibir uma lista de compilações em lote IDs para um projeto de compilação (AWS CLI)](view-builds-for-project.md#view-batch-builds-for-project-cli)
  + `--idempotency-token`: opcional. Se você executar o comando **retry-build** com a opção, um identificador, ou token, exclusivo que diferencia maiúsculas e minúsculas será incluído na solicitação `retry-build`. O token é válido por 5 minutos após a solicitação . Se você repetir a `retry-build` solicitação com o mesmo token, mas alterar um parâmetro, CodeBuild retornará um erro de incompatibilidade de parâmetros.

## Repetir uma compilação manualmente (AWS SDKs)
<a name="retry-build-sdks"></a>

Para obter mais informações sobre como usar AWS CodeBuild com o AWS SDKs, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md) o.

# Repetir compilações automaticamente no AWS CodeBuild
<a name="auto-retry-build"></a>

Você pode usar o console do AWS CodeBuild, a AWS CLI ou os SDKs da AWS para repetir automaticamente as compilações no AWS CodeBuild. Com a repetição automática habilitada, o CodeBuild chamará automaticamente `RetryBuild` usando o perfil de serviço do projeto após uma falha na compilação até um limite especificado. Por exemplo, se o limite de repetição automática for definido como dois, o CodeBuild chamará a API `RetryBuild` para repetir automaticamente a compilação por até duas vezes adicionais.

**nota**  
O CodeBuild não é compatível com novas tentativas automáticas para o CodePipeline.

**Topics**
+ [Repetir uma compilação automaticamente (console)](#auto-retry-build-console)
+ [Repetir uma compilação automaticamente (AWS CLI)](#auto-retry-build-cli)
+ [Repetir automaticamente uma compilação (SDKs da AWS)](#auto-retry-build-sdks)

## Repetir uma compilação automaticamente (console)
<a name="auto-retry-build-console"></a>

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Escolha **Criar projeto**. Para obter informações, consulte [Criar um projeto de compilação (console)](create-project.md#create-project-console) e [Executar uma compilação (console)](run-build-console.md).
   +  Em **Ambiente**: 
     +  Em **Limite de tentativas automáticas**, insira o número máximo de repetições automáticas desejadas após a falha de uma compilação.

1. Em **Ambiente**, escolha **Configuração adicional**.

1. Continue com os valores padrão e escolha **Criar projeto de compilação**.

## Repetir uma compilação automaticamente (AWS CLI)
<a name="auto-retry-build-cli"></a>
+ Execute o comando **create-project**:

  ```
  aws codebuild create-project \
      --name "<project-name>" \
      --auto-retry-limit <auto-retry-limit> \
      --source "<source>" \
      --artifacts {<artifacts>} \
      --environment "{\"type\": \"environment-type>\",\"image\": \"image-type>\",\"computeType\": \"compute-type>\"}" \
      --service-role "service-role>"
  ```

  No comando anterior, substitua os seguintes espaços reservados:
  + *<auto-retry-limit>*: defina o limite de repetições automáticas para o número máximo de repetições automáticas desejadas após a falha de uma compilação.
  + *<project-name>*, *<source>*, *<artifacts>*, *environment-type>*, *image-type>*, *compute-type>* e *service-role>*: defina as configurações desejadas do projeto.

## Repetir automaticamente uma compilação (SDKs da AWS)
<a name="auto-retry-build-sdks"></a>

Para obter mais informações sobre como usar o AWS CodeBuild com os SDKs da AWS, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md).

# Interromper compilações no AWS CodeBuild
<a name="stop-build"></a>

Para parar uma compilação no AWS CodeBuild, você pode usar o console do AWS CLI, a AWS ou os SDKs da AWS CodeBuild.

**Topics**
+ [Parar uma compilação (console)](#stop-build-console)
+ [Parar uma compilação (AWS CLI)](#stop-build-cli)
+ [Parar uma compilação (AWS SDKs)](#stop-build-sdks)

## Parar uma compilação (console)
<a name="stop-build-console"></a>

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Execute um destes procedimentos:
   + Se a página ***build-project-name*:*build-ID*** for exibida, selecione **Interromper compilação**.
   + No painel de navegação, selecione **Histórico de compilação**. Na lista de compilações, selecione a caixa da compilação, depois selecione **Interromper compilação**.
   + No painel de navegação, selecione **Projetos de compilação**. Na lista de projetos de compilação, na coluna **Nome**, selecione o link para o nome do projeto de compilação. Na lista de compilações, selecione a caixa da compilação, depois selecione **Interromper compilação**.

**nota**  
Por padrão, somente as 100 compilações ou projetos de compilação mais recentes são exibidos. Para visualizar mais compilações ou projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Compilações por página** ou **Projetos por página** ou use as setas para voltar e avançar.  
Se o AWS CodeBuild não puder parar uma compilação (por exemplo, se o processo de compilação já foi concluído), o botão **Stop (Parar)** estará desabilitado ou poderá não ser exibido.

## Parar uma compilação (AWS CLI)
<a name="stop-build-cli"></a>
+ Execute o comando **stop-build**:

  ```
  aws codebuild stop-build --id id
  ```

  No comando anterior, substitua o seguinte espaço reservado:
  + *ID*: String necessária. A ID de build a ser parada. Para obter uma lista de IDs de compilação, consulte os seguintes tópicos:
    + [Veja uma lista de build IDs (AWS CLI)](view-build-list.md#view-build-list-cli)
    + [Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

  Se o AWS CodeBuild parar a compilação com êxito, o valor `buildStatus` no objeto `build` na saída será `STOPPED`.

  Se o CodeBuild não puder interromper a compilação (por exemplo, se a compilação já tiver sido concluída), o valor `buildStatus` no objeto `build` na saída será o status final da compilação (por exemplo, `SUCCEEDED`).

## Parar uma compilação (AWS SDKs)
<a name="stop-build-sdks"></a>

Para obter mais informações sobre como usar o AWS CodeBuild com os SDKs da AWS, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md).

# Interromper compilações em lote no AWS CodeBuild
<a name="stop-batch-build"></a>

É possível usar o console do AWS CodeBuild, a AWS CLI ou AWS SDKs para interromper a compilação em lote no AWS CodeBuild.

**nota**  
Se você usa a computação do Lambda na compilação em lote, a compilação em andamento do Lambda não pode ser interrompida.

**Topics**
+ [Interromper uma compilação (console)](#stop-batch-build-console)
+ [Interromper uma compilação em lote (AWS CLI)](#stop-batch-build-cli)
+ [Interromper uma compilação em lote (AWS SDKs)](#stop-batch-build-sdks)

## Interromper uma compilação (console)
<a name="stop-batch-build-console"></a>

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Execute um destes procedimentos:
   + Se a página ***build-project-name*:*build-ID*** for exibida, selecione **Interromper compilação**.
   + No painel de navegação, selecione **Histórico de compilação**. Na lista de compilações, selecione a caixa da compilação, depois selecione **Interromper compilação**.
   + No painel de navegação, selecione **Projetos de compilação**. Na lista de projetos de compilação, na coluna **Nome**, selecione o link para o nome do projeto de compilação. Na lista de compilações, selecione a caixa da compilação, depois selecione **Interromper compilação**.

**nota**  
Por padrão, somente as 100 compilações ou projetos de compilação mais recentes são exibidos. Para visualizar mais compilações ou projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Compilações por página** ou **Projetos por página** ou use as setas para voltar e avançar.

## Interromper uma compilação em lote (AWS CLI)
<a name="stop-batch-build-cli"></a>
+ Execute o comando [https://docs.aws.amazon.com/cli/latest/reference/codebuild/stop-build-batch.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/stop-build-batch.html):

  ```
  aws codebuild stop-build-batch --id <batch-build-id>
  ```

  No comando anterior, substitua o seguinte espaço reservado:
  + *<batch-build-id>*: string obrigatória. O identificador da compilação em lote a ser interrompida. Para obter uma lista de identificadores de compilação, consulte os seguintes tópicos:
    + [Exibir uma lista de compilações em lote IDs (AWS CLI)](view-build-list.md#view-batch-build-list-cli)
    + [Exibir uma lista de compilações em lote IDs para um projeto de compilação (AWS CLI)](view-builds-for-project.md#view-batch-builds-for-project-cli)

## Interromper uma compilação em lote (AWS SDKs)
<a name="stop-batch-build-sdks"></a>

Para obter mais informações sobre como usar o AWS CodeBuild com os SDKs da AWS, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md).

# O gatilho AWS CodeBuild é criado automaticamente
<a name="build-triggers"></a>

Você pode criar um trigger em um projeto para programar um build uma vez a cada hora, dia ou semana. Também é possível editar um gatilho para usar uma regra personalizada com uma expressão cron do Amazon CloudWatch. Por exemplo, usando uma expressão cron, você pode programar uma compilação em um horário específico todos os dias úteis. Para obter informações sobre como criar e editar gatilhos, consulte [Criar triggers do AWS CodeBuild](#trigger-create) e [Editar triggers do AWS CodeBuild](triggers-edit.md).

**Topics**
+ [Criar triggers do AWS CodeBuild](#trigger-create)
+ [Editar triggers do AWS CodeBuild](triggers-edit.md)

## Criar triggers do AWS CodeBuild
<a name="trigger-create"></a>

Você pode criar um trigger em um projeto para programar um build uma vez a cada hora, dia ou semana. Também é possível criar um gatilho usando uma regra personalizada com uma expressão cron do Amazon CloudWatch. Por exemplo, usando uma expressão cron, você pode programar uma compilação em um horário específico todos os dias úteis. 

**nota**  
Não é possível iniciar uma compilação em lote a partir de um gatilho de compilação, de um evento do Amazon EventBridge ou de uma tarefa do AWS Step Functions.

**Topics**
+ [Criar gatilhos do AWS CodeBuild (console)](#trigger-create-console)
+ [Criar gatilhos do AWS CodeBuild programaticamente](#trigger-create-code)

### Criar gatilhos do AWS CodeBuild (console)
<a name="trigger-create-console"></a>

Use o procedimento a seguir para criar gatilhos usando o Console de gerenciamento da AWS.

**Para criar um trigger** 

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, selecione **Projetos de compilação**.

1. Escolha o link para o projeto de build ao qual você deseja adicionar o trigger e, em seguida, escolha a guia **Construir triggers**.
**nota**  
Por padrão, somente os cem projetos de compilação mais recentes são exibidos. Para ver mais projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Projetos por página** ou use as setas para voltar e avançar.

1. Escolha **Criar acionador**.

1. Em **Trigger name (Nome do gatilho)**, insira um nome.

1. Na lista suspensa **Frequência**, escolha a frequência do gatilho. Se você deseja criar uma frequência usando uma expressão cron, escolha **Personalizado**.

1. Especifique os parâmetros para a frequência do gatilho. Você pode digitar os primeiros caracteres de suas seleções na caixa de texto para filtrar os itens de menu suspenso.
**nota**  
 As horas e os minutos de início são baseados em zero. O minuto de início é um número entre 0 e 59. A hora de início é um número entre 0 e 23. Por exemplo, um gatilho diário que começa todos os dias às 12h15 tem uma hora de início de 12 e um minuto de início de 15. Um gatilho diário que começa todos os dias às 0h tem uma hora de início de 0 e um minuto de início de 0. Um gatilho diário que começa todos os dias às 23h59 tem uma hora de início de 23 e um minuto de início de 59.   
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/build-triggers.html)

1.  Selecione **Habilitar este trigger**. 

1.  (Opcional) Expanda **Advanced section (Seção avançada)**. Em **Source version (Versão da origem)**, digite a versão da sua origem. 
   +  Para o Amazon S3, digite o ID da versão que corresponde à versão do artefato de entrada que você deseja compilar. Se o campo **Source version (Versão de origem)** for deixado em branco, a versão mais recente será usada. 
   +  Para o AWS CodeCommit, digite um ID de confirmação. Se o campo **Source version (Versão de origem)** for deixado em branco, o ID de confirmação HEAD da ramificação padrão será usado. 
   + Para GitHub ou GitHub Enterprise, digite um ID de confirmação, um ID de solicitação pull, um nome de ramificação ou um nome de tag que corresponda à versão do código-fonte que você deseja compilar. Se você especificar um ID de solicitação, ele deve usar o formato `pr/pull-request-ID` (por exemplo, `pr/25`). Se você especificar um nome de ramificação, o ID de confirmação HEAD da ramificação será usado. Se **Source version** estiver em branco, o ID de confirmação HEAD da ramificação padrão será usado.
   + Para o Bitbucket, digite um ID de confirmação, um nome da ramificação ou um nome de tag que corresponda à versão do código-fonte que você deseja compilar. Se você especificar um nome de ramificação, o ID de confirmação HEAD da ramificação será usado. Se **Source version** estiver em branco, o ID de confirmação HEAD da ramificação padrão será usado.

1. (Opcional) Especifique um tempo limite entre 5 minutos e 2.160 minutos (36 horas). Esse valor especifica por quanto tempo o AWS CodeBuild tenta uma compilação antes de parar. Se **Hours (Horas)** e **Minutes (Minutos)** forem deixados em branco, será usado o valor de tempo limite padrão especificado no projeto. 

1. Escolha **Criar acionador**.

### Criar gatilhos do AWS CodeBuild programaticamente
<a name="trigger-create-code"></a>

O CodeBuild usa regras do Amazon EventBridge para gatilhos de compilação. É possível usar a API do EventBridge para criar programaticamente gatilhos de compilação para os projetos do CodeBuild. Consulte [Referência da API do Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/APIReference/) para obter mais informações.

# Editar triggers do AWS CodeBuild
<a name="triggers-edit"></a>

Você pode editar um trigger em um projeto para programar um build uma vez a cada hora, dia ou semana. Também é possível editar um gatilho para usar uma regra personalizada com uma expressão cron do Amazon CloudWatch. Por exemplo, usando uma expressão cron, você pode programar uma compilação em um horário específico todos os dias úteis. Para obter mais informações sobre como criar um trigger, consulte [Criar triggers do AWS CodeBuild](build-triggers.md#trigger-create).

**Topics**
+ [Editar gatilhos do AWS CodeBuild (console)](#triggers-edit-console)
+ [Editar gatilhos do AWS CodeBuild programaticamente](#trigger-edit-code)

## Editar gatilhos do AWS CodeBuild (console)
<a name="triggers-edit-console"></a>

Use o procedimento a seguir para editar gatilhos usando o Console de gerenciamento da AWS.

**Como editar um trigger**

1. Abra o console do AWS CodeBuild em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. No painel de navegação, selecione **Projetos de compilação**.

1. Selecione o link para o projeto de compilação que você deseja alterar e selecione **Build triggers (Gatilhos da compilação)**.
**nota**  
Por padrão, somente os cem projetos de compilação mais recentes são exibidos. Para ver mais projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Projetos por página** ou use as setas para voltar e avançar.

1. Escolha o botão de seleção próximo ao trigger a ser alterado e selecione **Edit (Editar)**.

1. Na lista suspensa **Frequência**, escolha a frequência do gatilho. Se você deseja criar uma frequência usando uma expressão cron, escolha **Personalizado**.

1. Especifique os parâmetros para a frequência do gatilho. Você pode digitar os primeiros caracteres de suas seleções na caixa de texto para filtrar os itens de menu suspenso.
**nota**  
 As horas e os minutos de início são baseados em zero. O minuto de início é um número entre 0 e 59. A hora de início é um número entre 0 e 23. Por exemplo, um gatilho diário que começa todos os dias às 12h15 tem uma hora de início de 12 e um minuto de início de 15. Um gatilho diário que começa todos os dias às 0h tem uma hora de início de 0 e um minuto de início de 0. Um gatilho diário que começa todos os dias às 23h59 tem uma hora de início de 23 e um minuto de início de 59.   
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/triggers-edit.html)

1.  Selecione **Habilitar este trigger**. 

**nota**  
É possível usar o console do Amazon CloudWatch em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) para editar a versão de origem, o tempo limite e outras opções que não estão disponíveis no AWS CodeBuild.

## Editar gatilhos do AWS CodeBuild programaticamente
<a name="trigger-edit-code"></a>

O CodeBuild usa regras do Amazon EventBridge para gatilhos de compilação. É possível usar a API do EventBridge para editar programaticamente gatilhos de compilação para os projetos do CodeBuild. Consulte [Referência da API do Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/APIReference/) para obter mais informações.

# Veja os detalhes da construção em AWS CodeBuild
<a name="view-build-details"></a>

Você pode usar o AWS CodeBuild console, AWS CLI, ou AWS SDKs para ver detalhes sobre compilações gerenciadas pelo CodeBuild.

**Topics**
+ [Visualizar detalhes de compilação (console)](#view-build-details-console)
+ [Visualizar detalhes de compilação (AWS CLI)](#view-build-details-cli)
+ [Visualizar detalhes de compilação (AWS SDKs)](#view-build-details-sdks)
+ [Transições de fase de compilação](view-build-details-phases.md)

## Visualizar detalhes de compilação (console)
<a name="view-build-details-console"></a>

1. Abra o AWS CodeBuild console em [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Execute um destes procedimentos:
   + No painel de navegação, selecione **Histórico de compilação**. Na lista de compilações, na coluna **Build run (Execução de compilação)**, selecione o link para a compilação. 
   + No painel de navegação, selecione **Projetos de compilação**. Na lista de projetos de compilação, na coluna **Name (Nome)**, selecione o link para o nome do projeto de compilação. Posteriormente, na lista de compilações, na coluna **Build run (Execução de compilação)**, selecione o link para a compilação.
**nota**  
Por padrão, somente as 10 compilações ou projetos de compilação mais recentes são exibidos. Para visualizar mais compilações ou projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Compilações por página** ou **Projetos por página** ou use as setas para voltar e avançar.

## Visualizar detalhes de compilação (AWS CLI)
<a name="view-build-details-cli"></a>

Para obter mais informações sobre como usar o AWS CLI with AWS CodeBuild, consulte [Referência da linha de comando](cmd-ref.md) o.

Execute o comando **batch-get-builds**:

```
aws codebuild batch-get-builds --ids ids
```

Substitua o seguinte espaço reservado:
+ *ids*: Cadeia de caracteres obrigatória. Uma ou mais construções IDs para ver detalhes sobre. Para especificar mais de uma ID de build, separe-as com um espaço. Você pode especificar até 100 compilações IDs. Para obter uma lista de compilações IDs, consulte os seguintes tópicos:
  + [Veja uma lista de build IDs (AWS CLI)](view-build-list.md#view-build-list-cli)
  + [Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)](view-builds-for-project.md#view-builds-for-project-cli)

Por exemplo, se você executar este comando:

```
aws codebuild batch-get-builds --ids codebuild-demo-project:e9c4f4df-3f43-41d2-ab3a-60fe2EXAMPLE codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE my-other-project:813bb6c6-891b-426a-9dd7-6d8a3EXAMPLE
```

Se o comando for bem-sucedido, dados semelhantes aos descritos em [Como visualizar informações resumidas da compilação](getting-started-overview.md#getting-started-cli-monitor-build-cli) serão exibidos na saída.

## Visualizar detalhes de compilação (AWS SDKs)
<a name="view-build-details-sdks"></a>

Para obter mais informações sobre como usar AWS CodeBuild com o AWS SDKs, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md) o.

# Transições de fase de compilação
<a name="view-build-details-phases"></a>

As compilações AWS CodeBuild prosseguem em fases:



![\[As CodeBuild fases.\]](http://docs.aws.amazon.com/pt_br/codebuild/latest/userguide/images/build-phases.png)




**Importante**  
A fase `UPLOAD_ARTIFACTS` é sempre tentada, mesmo se a fase `BUILD` falhar.

# Veja uma lista de IDs incorporações AWS CodeBuild
<a name="view-build-list"></a>

Você pode usar o AWS CodeBuild console, AWS CLI, ou AWS SDKs para ver uma lista de compilações IDs para compilações gerenciadas por CodeBuild.

**Topics**
+ [Exibir uma lista de IDs compilações (console)](#view-build-list-console)
+ [Veja uma lista de build IDs (AWS CLI)](#view-build-list-cli)
+ [Exibir uma lista de compilações em lote IDs (AWS CLI)](#view-batch-build-list-cli)
+ [Veja uma lista de build IDs (AWS SDKs)](#view-build-list-sdks)

## Exibir uma lista de IDs compilações (console)
<a name="view-build-list-console"></a>

1. 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, selecione **Histórico de compilação**. 
**nota**  
Por padrão, apenas os 10 builds mais recentes são exibidos. Para visualizar mais builds, selecione o ícone de engrenagem e depois selecione um valor diferente para **Builds per page (Builds por página)** ou use as setas para voltar e avançar.

## Veja uma lista de build IDs (AWS CLI)
<a name="view-build-list-cli"></a>

Para obter mais informações sobre como usar o AWS CLI with CodeBuild, consulte [Referência da linha de comando](cmd-ref.md) o.
+ Execute o comando **list-builds**:

  ```
  aws codebuild list-builds --sort-order sort-order --next-token next-token
  ```

  No comando anterior, substitua os seguintes espaços reservados:
  + *sort-order*: string opcional usada para indicar como listar a compilação IDs. Os valores válidos são `ASCENDING` e `DESCENDING`.
  + *next-token*: Cadeia de caracteres opcional. Se houver mais de 100 itens na lista em uma execução anterior, somente os primeiros 100 itens serão retornados, juntamente com uma string exclusiva de *próximo token*. Para obter o próximo lote de itens na lista, execute o comando novamente, adicionando o próximo token à chamada. Para obter todos os itens na lista, continue executando esse comando com cada próximo token subsequente, até que não haja mais tokens.

  Por exemplo, se você executar este comando:

  ```
  aws codebuild list-builds --sort-order ASCENDING
  ```

  Um resultado semelhante ao seguinte pode ser exibido na saída:

  ```
  {
    "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
    "ids": [
      "codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE"
      "codebuild-demo-project:84a7f3d1-d40e-4956-b4cf-7a9d4EXAMPLE"
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:931d0b72-bf6f-4040-a472-5c707EXAMPLE"
    ]
  }
  ```

  Se você executar este comando novamente:

  ```
  aws codebuild list-builds --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
  ```

  Um resultado semelhante ao seguinte pode ser exibido na saída:

  ```
  {
    "ids": [
      "codebuild-demo-project:49015049-21cf-4b50-9708-df115EXAMPLE",
      "codebuild-demo-project:543e7206-68a3-46d6-a4da-759abEXAMPLE",
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:c282f198-4582-4b38-bdc0-26f96EXAMPLE"
    ]
  }
  ```

## Exibir uma lista de compilações em lote IDs (AWS CLI)
<a name="view-batch-build-list-cli"></a>

Para obter mais informações sobre como usar o AWS CLI with CodeBuild, consulte [Referência da linha de comando](cmd-ref.md) o.
+ Execute o comando **list-build-batches**:

  ```
  aws codebuild list-build-batches --sort-order sort-order --next-token next-token
  ```

  No comando anterior, substitua os seguintes espaços reservados:
  + *sort-order*: string opcional usada para indicar como listar a compilação em lote IDs. Os valores válidos são `ASCENDING` e `DESCENDING`.
  + *next-token*: Cadeia de caracteres opcional. Se houver mais de 100 itens na lista em uma execução anterior, somente os primeiros 100 itens serão retornados, juntamente com uma string exclusiva de *próximo token*. Para obter o próximo lote de itens na lista, execute o comando novamente, adicionando o próximo token à chamada. Para obter todos os itens na lista, continue executando esse comando com cada próximo token subsequente, até que não haja mais tokens.

  Por exemplo, se você executar este comando:

  ```
  aws codebuild list-build-batches --sort-order ASCENDING
  ```

  Um resultado semelhante ao seguinte pode ser exibido na saída:

  ```
  {
    "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
    "ids": [
      "codebuild-demo-project:815e755f-bade-4a7e-80f0-efe51EXAMPLE"
      "codebuild-demo-project:84a7f3d1-d40e-4956-b4cf-7a9d4EXAMPLE"
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:931d0b72-bf6f-4040-a472-5c707EXAMPLE"
    ]
  }
  ```

  Se você executar este comando novamente:

  ```
  aws codebuild list-build-batches --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
  ```

  Um resultado semelhante ao seguinte pode ser exibido na saída:

  ```
  {
    "ids": [
      "codebuild-demo-project:49015049-21cf-4b50-9708-df115EXAMPLE",
      "codebuild-demo-project:543e7206-68a3-46d6-a4da-759abEXAMPLE",
      ... The full list of build IDs has been omitted for brevity ...
      "codebuild-demo-project:c282f198-4582-4b38-bdc0-26f96EXAMPLE"
    ]
  }
  ```

## Veja uma lista de build IDs (AWS SDKs)
<a name="view-build-list-sdks"></a>

Para obter mais informações sobre como usar CodeBuild com o AWS SDKs, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md) o.

# Veja uma lista de compilações IDs para um projeto de compilação em AWS CodeBuild
<a name="view-builds-for-project"></a>

Você pode usar o AWS CodeBuild console, AWS CLI, ou AWS SDKs para ver uma lista de compilações IDs para um projeto de compilação em CodeBuild.

**Topics**
+ [Exibir uma lista de compilações IDs para um projeto de compilação (console)](#view-builds-for-project-console)
+ [Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)](#view-builds-for-project-cli)
+ [Exibir uma lista de compilações em lote IDs para um projeto de compilação (AWS CLI)](#view-batch-builds-for-project-cli)
+ [Exibir uma lista de IDs compilações para um projeto de construção (AWS SDKs)](#view-builds-for-project-sdks)

## Exibir uma lista de compilações IDs para um projeto de compilação (console)
<a name="view-builds-for-project-console"></a>

1. Abra o CodeBuild console em [https://console.aws.amazon.com/codebuild/](https://console.aws.amazon.com/codebuild/).

1. No painel de navegação, selecione **Projetos de compilação**. Na lista de projetos de build, na coluna **Name (Nome)**, selecione o projeto de build. 

**nota**  
Por padrão, somente as 100 compilações ou projetos de compilação mais recentes são exibidos. Para visualizar mais compilações ou projetos de compilação, selecione o ícone de engrenagem e depois escolha outro valor para **Compilações por página** ou **Projetos por página** ou use as setas para voltar e avançar.

## Exibir uma lista de IDs compilações para um projeto de construção (AWS CLI)
<a name="view-builds-for-project-cli"></a>

Para obter mais informações sobre como usar o AWS CLI with AWS CodeBuild, consulte [Referência da linha de comando](cmd-ref.md) o.

Execute o comando **list-builds-for-project**, como se segue:

```
aws codebuild list-builds-for-project --project-name project-name --sort-order sort-order --next-token next-token
```

No comando anterior, substitua os seguintes espaços reservados:
+ *project-name*: Cadeia de caracteres obrigatória usada para indicar o nome do projeto de construção para o qual listar as compilações IDs . Para obter uma lista de projetos de compilação, consulte [Visualizar uma lista de nomes de projetos de compilação (AWS CLI)](view-project-list.md#view-project-list-cli).
+ *sort-order*: string opcional usada para indicar como listar a compilação IDs. Os valores válidos são `ASCENDING` e `DESCENDING`.
+ *next-token*: Cadeia de caracteres opcional. Se houver mais de 100 itens na lista em uma execução anterior, somente os primeiros 100 itens serão retornados, juntamente com uma string exclusiva de *próximo token*. Para obter o próximo lote de itens na lista, execute o comando novamente, adicionando o próximo token à chamada. Para obter todos os itens na lista, continue executando esse comando com cada próximo token subsequente que é retornado, até que não haja mais tokens.

Por exemplo, se você executar este comando semelhante a este:

```
aws codebuild list-builds-for-project --project-name codebuild-demo-project --sort-order ASCENDING
```

Um resultado como o seguinte pode aparecer na saída:

```
{
  "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
  "ids": [
    "codebuild-demo-project:9b175d16-66fd-4e71-93a0-50a08EXAMPLE"
    "codebuild-demo-project:a9d1bd09-18a2-456b-8a36-7d65aEXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:fe70d102-c04f-421a-9cfa-2dc15EXAMPLE"
  ]
}
```

Se você executar este comando novamente:

```
aws codebuild list-builds-for-project --project-name codebuild-demo-project --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
```

Você pode ver um resultado como o seguinte na saída:

```
{
  "ids": [
    "codebuild-demo-project:98253670-7a8a-4546-b908-dc890EXAMPLE"
    "codebuild-demo-project:ad5405b2-1ab3-44df-ae2d-fba84EXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:f721a282-380f-4b08-850a-e0ac1EXAMPLE"
  ]
}
```

## Exibir uma lista de compilações em lote IDs para um projeto de compilação (AWS CLI)
<a name="view-batch-builds-for-project-cli"></a>

Para obter mais informações sobre como usar o AWS CLI with AWS CodeBuild, consulte [Referência da linha de comando](cmd-ref.md) o.

Execute o comando **list-build-batches-for-project**, como se segue:

```
aws codebuild list-build-batches-for-project --project-name project-name --sort-order sort-order --next-token next-token
```

No comando anterior, substitua os seguintes espaços reservados:
+ *project-name*: Cadeia de caracteres obrigatória usada para indicar o nome do projeto de construção para o qual listar as compilações IDs . Para obter uma lista de projetos de compilação, consulte [Visualizar uma lista de nomes de projetos de compilação (AWS CLI)](view-project-list.md#view-project-list-cli).
+ *sort-order*: string opcional usada para indicar como listar a compilação IDs. Os valores válidos são `ASCENDING` e `DESCENDING`.
+ *next-token*: Cadeia de caracteres opcional. Se houver mais de 100 itens na lista em uma execução anterior, somente os primeiros 100 itens serão retornados, juntamente com uma string exclusiva de *próximo token*. Para obter o próximo lote de itens na lista, execute o comando novamente, adicionando o próximo token à chamada. Para obter todos os itens na lista, continue executando esse comando com cada próximo token subsequente que é retornado, até que não haja mais tokens.

Por exemplo, se você executar este comando semelhante a este:

```
aws codebuild list-build-batches-for-project --project-name codebuild-demo-project --sort-order ASCENDING
```

Um resultado como o seguinte pode aparecer na saída:

```
{
  "nextToken": "4AEA6u7J...The full token has been omitted for brevity...MzY2OA==",
  "ids": [
    "codebuild-demo-project:9b175d16-66fd-4e71-93a0-50a08EXAMPLE"
    "codebuild-demo-project:a9d1bd09-18a2-456b-8a36-7d65aEXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:fe70d102-c04f-421a-9cfa-2dc15EXAMPLE"
  ]
}
```

Se você executar este comando novamente:

```
aws codebuild list-build-batches-for-project --project-name codebuild-demo-project --sort-order ASCENDING --next-token 4AEA6u7J...The full token has been omitted for brevity...MzY2OA==
```

Você pode ver um resultado como o seguinte na saída:

```
{
  "ids": [
    "codebuild-demo-project:98253670-7a8a-4546-b908-dc890EXAMPLE"
    "codebuild-demo-project:ad5405b2-1ab3-44df-ae2d-fba84EXAMPLE"
    ... The full list of build IDs has been omitted for brevity ...
    "codebuild-demo-project:f721a282-380f-4b08-850a-e0ac1EXAMPLE"
  ]
}
```

## Exibir uma lista de IDs compilações para um projeto de construção (AWS SDKs)
<a name="view-builds-for-project-sdks"></a>

Para obter mais informações sobre como usar AWS CodeBuild com o AWS SDKs, consulte [AWS SDKs e referência de ferramentas](sdk-ref.md) o.