

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

# Configuração da instância de compilação de uma aplicação do Amplify
<a name="custom-build-instance"></a>

O Amplify Hosting oferece tamanhos de instância de compilação configuráveis que permitem que você forneça à instância de compilação da sua aplicação os recursos de CPU, memória e espaço em disco necessários. Antes do lançamento desse recurso, o Amplify fornecia uma configuração de instância de compilação de tamanho fixo de 8 GiB de memória e 4 v. CPUs

O Amplify oferece suporte a três tipos de instância de compilação: Standard, Large e XLarge. Se você não especificar um tipo de instância, o Amplify usará a instância padrão Standard. Você pode configurar o tipo de instância de compilação para um aplicativo usando o console do Amplify AWS CLI, o ou o. SDKs 

O custo de cada tipo de instância de compilação é calculado por minuto de compilação. Para obter detalhes sobre os preços, consulte [Preços do AWS Amplify](https://aws.amazon.com/amplify/pricing/). 

A tabela a seguir descreve as especificações de computação para cada tipo de instância de compilação:


| Tipo de instância de compilação | v CPUs | Memória | Espaço em disco | 
| --- | --- | --- | --- | 
| Standard | 4 v CPUs | 8 GiB | 128 GB | 
| Large | 8 v CPUs | 16 GiB | 128 GB | 
| XLarge | 36 g CPUs | 72 GiB | 256 GB | 

**Topics**
+ [Noções básicas dos tipos de instâncias de compilação](#understanding-build-instance-sizes)
+ [Configuração do tipo de instância de compilação no console do Amplify](#configure-build-instance-type)
+ [Configuração da memória heap de uma aplicação para utilizar tipos de instâncias grandes](#configuring-heap-memory)

## Noções básicas dos tipos de instâncias de compilação
<a name="understanding-build-instance-sizes"></a>



A configuração do tipo de instância de compilação é definida no nível da aplicação e se estende a todas as ramificações da aplicação. Os detalhes principais a seguir se aplicam aos tipos de instância de compilação:
+ O tipo de instância de compilação que você configura para uma aplicação se aplica automaticamente às ramificações criadas automaticamente e às visualizações de solicitação de pull.
+ A cota do serviço de *trabalhos simultâneos* se aplica a todos os tipos de instância de compilação em seu. Conta da AWS Por exemplo, se seu limite de *Trabalhos simultâneos* for cinco, será possível executar no máximo 5 compilações em todos os tipos de instância da sua Conta da AWS.
+ O custo de cada tipo de instância de compilação é calculado por minuto de compilação. O processo de alocação de instâncias de compilação pode exigir mais tempo adicional antes do início da compilação. Especialmente para instâncias maiores XLarge, sua compilação pode apresentar latência antes do início da compilação, devido a esse tempo de sobrecarga. No entanto, você será cobrado somente pelo tempo real de construção, não pelo tempo adicional.

É possível configurar o tipo de instância de compilação ao criar uma nova aplicação ou atualizar o tipo de instância em uma aplicação existente. Para obter instruções sobre como definir essa configuração no console do Amplify, consulte [Configuração do tipo de instância de compilação no console do Amplify](#configure-build-instance-type). Você também pode atualizar essa configuração usando SDKs o. Para obter mais informações, consulte e [UpdateApp](https://docs.aws.amazon.com/amplify/latest/APIReference/API_UpdateApp.html) APIs na Referência da *API Amplify*. [CreateApp](https://docs.aws.amazon.com/amplify/latest/APIReference/API_CreateApp.html)

Se você tem aplicações existentes em sua conta que foram criadas antes do lançamento do recurso de tipo de instância de compilação personalizável, elas estão usando o tipo de instância Standard padrão. Quando você atualiza o tipo de instância de compilação de uma aplicação existente, todas as compilações que estiverem na fila ou em andamento antes da atualização utilizarão o tipo de instância de compilação configurado anteriormente. Por exemplo, se você tiver uma aplicação existente com a ramificação `main` implantada no Amplify e atualizar seu tipo de instância de compilação de **Standard** para **Large**, todas as novas compilações que você iniciar a partir da ramificação `main` usarão o tipo de instância de compilação **Large**. No entanto, todas as compilações em andamento no momento em que você atualiza o tipo de instância de compilação continuarão sendo executadas na instância **Standard**. 

## Configuração do tipo de instância de compilação no console do Amplify
<a name="configure-build-instance-type"></a>

Siga o procedimento a seguir para configurar o tipo de instância de compilação ao criar uma nova aplicação do Amplify.

**Para configurar o tipo de instância de compilação de uma nova aplicação**

1. Faça login no Console de gerenciamento da AWS e abra o console do [Amplify](https://console.aws.amazon.com/amplify/).

1. Na página **Todas as aplicações**, escolha **Criar nova aplicação**.

1. Na página **Comece a desenvolver com o Amplify**, escolha seu provedor de repositório Git e escolha **Avançar**.

1. Na página **Adicionar ramificação do repositório**, faça o seguinte:

   1. Na lista **Repositórios atualizados recentemente**, selecione o nome do repositório a ser conectado.

   1. Na lista **Ramificação**, selecione o nome da ramificação do repositório a ser conectada.

   1. Escolha **Próximo**.

1. Na página **Configurações da aplicação**, abra a seção **Configurações avançadas**.

1. Em **Tipo de instância de compilação**, escolha o tipo de instância desejada na lista.

1. Se você estiver implantando uma aplicação baseada em runtime do Node.js, configure o tamanho da memória heap para utilizar efetivamente um tipo de instância grande. É possível fazer isso na página **Configurações da aplicação** definindo uma variável de ambiente ou atualizando as configurações de compilação. Para obter mais informações, consulte [Configuração da memória heap de uma aplicação para utilizar tipos de instâncias grandes](#configuring-heap-memory). 
   + Definição de uma variável de ambiente

     1. Na seção **Configurações avançadas**, **Variáveis de ambiente**, escolha **Adicionar nova**. 

     1. Em **Chave**, insira **NODE\$1OPTIONS**.

     1. Em **Valor**, insira `--max-old-space-size=memory_size_in_mb`. *memory\$1size\$1in\$1mb*Substitua pelo tamanho de memória de pilha desejado em megabytes.
   + Atualização das configurações de compilação

     1. Na seção **Configurações de compilação**, escolha **Editar arquivo YML**.

     1. Execute o comando a seguir à fase `preBuild`. *memory\$1size\$1in\$1mb*Substitua pelo tamanho de memória de pilha desejado em megabytes.

        ```
        export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'
        ```

     1. Escolha **Salvar**.

1. Escolha **Próximo**.

1. Na página **Revisar**, escolha **Salvar e implantar**.

Siga o procedimento a seguir para configurar o tipo de instância de compilação para uma aplicação existente do Amplify.

**Para configurar o tipo de instância de compilação de uma aplicação existente**

1. Faça login no Console de gerenciamento da AWS e abra o console do [Amplify](https://console.aws.amazon.com/amplify/).

1. Escolha a aplicação para a qual você quer configurar o tipo de instância de compilação.

1. No painel de navegação, escolha **Hospedagem**, e, em seguida, escolha **Configurações de compilação**.

1. Na página **Configurações da compilação**, na seção **Configurações avançadas**, escolha **Editar**.

1. Na página **Editar configurações**, em **Tipo de instância de compilação**, escolha o tipo de instância desejada na lista.

1. Escolha **Salvar**. Essa alteração entrará em vigor na próxima vez que você implantar a aplicação.

1. (Opcional) Para implantar a aplicação atualizada imediatamente, faça o seguinte:

   1. No painel de navegação, selecione **Visão geral**.

   1. Na página de visão geral da sua aplicação, escolha a ramificação a ser reimplantada. 

   1. Na página **Implantação**, escolha uma implantação, como a implantação mais recente. Em seguida, escolha **Reimplantar esta versão**. Uma nova implantação se iniciará.

   1. Quando a implantação for concluída, as configurações de compilação da aplicação mostrarão que a ramificação está usando o tipo de instância de compilação atualizado.

## Configuração da memória heap de uma aplicação para utilizar tipos de instâncias grandes
<a name="configuring-heap-memory"></a>

Se você estiver criando aplicações com uso intenso de memória, use esta seção para entender como configurar sua aplicação para utilizar tipos de instâncias grandes. As linguagens e estruturas de programação geralmente dependem da alocação de memória dinâmica, também conhecida como memória heap, durante o runtime para gerenciar os requisitos de memória da aplicação. A memória heap é solicitada pelo ambiente de runtime e alocada pelo sistema operacional host. Por padrão, os ambientes de runtime impõem um limite máximo de tamanho de heap disponível para a aplicação. Isso significa que nenhuma memória adicional estará disponível para a aplicação além do tamanho do heap, mesmo que o sistema operacional ou contêiner do host tenha uma quantidade maior de memória disponível.

Como exemplo, o ambiente de execução do JavaScript Node.js v8 impõe um limite de tamanho de pilha padrão que depende de vários fatores, incluindo o tamanho da memória do host. Como resultado, as instâncias de compilação Standard e Large têm um tamanho de heap Node.js padrão de 2096 MB e a instância XLarge tem um tamanho de heap padrão de 4144 MB. Portanto, criar um aplicativo com um requisito de memória de 6000 MB usando o tamanho de pilha padrão do Node.js em qualquer tipo de instância de compilação do Amplify resultará em uma falha na compilação devido a um erro. out-of-memory

Para contornar os limites padrão de memória do tamanho da heap do Node.js, utilize uma das opções a seguir:
+ Defina a variável de ambiente `NODE_OPTIONS` em sua aplicação do Amplify com o valor `--max-old-space-size=memory_size_in_mb`. Em `memory_size_in_mb`, especifique o tamanho de memória heap desejado, em megabytes.

  Para instruções, consulte [Configurar variáveis de ambiente](setting-env-vars.md). 
+ Adicione o comando a seguir à fase `preBuild` na especificação de compilação da sua aplicação do Amplify.

  ```
  export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'
  ```

  É possível atualizar a especificação de compilação no console do Amplify ou no arquivo `amplify.yml` da sua aplicação no repositório do projeto. Para instruções, consulte [Definição das configurações de compilação de uma aplicação do Amplify](build-settings.md).

  No exemplo a seguir, a especificação de compilação do Amplify define um tamanho de memória heao do Node.js para 7000 MB para criar uma aplicação de frontend do React:

  ```
  version: 1
  frontend:
    phases:
      preBuild:
        commands:
          # Set the heap size to 7000 MB
          - export NODE_OPTIONS='--max-old-space-size=7000'
          # To check the heap size memory limit in MB
          - node -e "console.log('Total available heap size (MB):', v8.getHeapStatistics().heap_size_limit / 1024 / 1024)"
          - npm ci --cache .npm --prefer-offline
      build:
        commands:
          - npm run build
    artifacts:
      baseDirectory: build
      files:
        - '**/*'
    cache:
      paths:
        - .npm/**/*
  ```

Para utilizar tipos de instância grandes de forma eficaz, é importante ter um tamanho de memória heap suficiente configurado. A configuração de um pequeno tamanho de heao para uma aplicação com uso intenso de memória provavelmente resultará em uma falha de compilação. Os registros de compilação do aplicativo podem não indicar diretamente um out-of-memory erro, pois o tempo de execução do aplicativo pode falhar inesperadamente. Configurar um tamanho de heap tão grande quanto a memória do host pode fazer com que o sistema operacional do host alterne ou encerre outros processos e, potencialmente, interrompa seu processo de compilação. Como referência, o Node.js recomenda definir um tamanho máximo de heap de 1536 MB em uma máquina com aproximadamente 2000 MB de memória para deixar alguma memória para outros usos.

O tamanho ideal do heap depende das necessidades da sua aplicação e do uso de recursos. Se você encontrar out-of-memory erros, comece com um tamanho de pilha moderado e aumente gradualmente conforme necessário. Como diretriz, recomendamos começar com 6.000 MB para um tipo de instância Standard, 12.000 MB para um tipo de instância Large e 60.000 MB para um tipo de instância XLarge. 