Configuração da instância de compilação de uma aplicação do Amplify - AWS Amplify Hospedagem

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

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.

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

Noções básicas dos tipos de instâncias de compilação

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. Você também pode atualizar essa configuração usando SDKs o. Para obter mais informações, consulte e UpdateApp APIs na Referência da API Amplify. CreateApp

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

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.

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

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

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

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

    3. Escolha Próximo.

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

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

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

    • Definição de uma variável de ambiente

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

      2. Em Chave, insira NODE_OPTIONS.

      3. Em Valor, insira --max-old-space-size=memory_size_in_mb. memory_size_in_mbSubstitua 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.

      2. Execute o comando a seguir à fase preBuild. memory_size_in_mbSubstitua pelo tamanho de memória de pilha desejado em megabytes.

        export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'
      3. Escolha Salvar.

  8. Escolha Próximo.

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

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

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

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

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

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

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

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

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

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

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

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.

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

    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.