Usar a plataforma Node.js do Elastic Beanstalk - AWS Elastic Beanstalk

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

Usar a plataforma Node.js do Elastic Beanstalk

A plataforma Node.js do AWS Elastic Beanstalk é um conjunto de versões da plataforma para aplicações Web Node.js que são executadas por trás de um servidor proxy NGINX.

O Elastic Beanstalk fornece opções de configuração que podem ser usadas para personalizar o software que é executado nas instâncias do EC2 no ambiente Elastic Beanstalk. É possível configurar as variáveis de ambiente necessárias à aplicação, habilitar a alternância de logs para o Amazon S3 e mapear pastas da origem da aplicação que contenham arquivos estáticos para caminhos atendidos pelo servidor de proxy.

As opções de configuração estão disponíveis no console do Elastic Beanstalk para modificar a configuração de um ambiente em execução. Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar configurações salvas para salvar as configurações e depois aplicá-las a outro ambiente.

Para salvar as configurações no código-fonte, você pode incluir arquivos de configuração. As definições em arquivos de configuração são aplicadas sempre que você cria um ambiente ou implementa a aplicação. Você também pode usar arquivos de configuração para instalar pacotes, executar scripts e realizar outras operações de personalização da instância em implantações.

É possível incluir um arquivo Package.json no pacote de fontes para instalar pacotes durante a implantação, fornecer um comando iniciar e especificar a versão do Node.js que você deseja que a aplicação use. Você pode incluir um arquivo npm-shrinkwrap.json para bloquear versões de dependência.

A plataforma Node.js inclui um servidor proxy para servir ativos estáticos, encaminhar tráfego para a aplicação e compactar respostas. Você pode estender ou substituir a configuração de proxy padrão para cenários avançados.

Existem várias opções para iniciar seu aplicativo. Você pode adicionar um Procfile ao pacote de fontes para especificar o comando que inicia a aplicação. Quando você não fornece um Procfile, mas fornece um arquivo package.json, o Elastic Beanstalk executa npm start. Se você não fornecer nenhum dos dois, o Elastic Beanstalk procurará o arquivo app.js ou server.js, nessa ordem, e o executará.

As configurações aplicadas no console do Elastic Beanstalk substituem as mesmas configurações em arquivos de configuração, caso elas existam. Isso permite que você tenha configurações padrão em arquivos de configuração e as substitua por configurações específicas de ambiente no console. Para obter mais informações sobre precedência e outros métodos de alteração das configurações, consulte Opções de configuração.

Para obter detalhes sobre as várias maneiras de estender uma plataforma do Elastic Beanstalk baseada em Linux, consulte Estender as plataformas Linux do Elastic Beanstalk.

Configurar o ambiente Node.js

Você pode usar as configurações da plataforma Node.js para aprimorar ainda mais o comportamento das instâncias do Amazon EC2. É possível editar a configuração da instância do Amazon EC2 do ambiente do Elastic Beanstalk usando o console do Elastic Beanstalk.

Você pode usar o console do Elastic Beanstalk para habilitar a alternância de logs para o Amazon S3 e configurar variáveis que sua aplicação pode ler no ambiente.

Para configurar o ambiente Node.js no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, escolha Configuration (Configuração).

  4. Na categoria de configuração Updates, monitoring, and logging (Atualizações, monitoramento e logs), escolha Edit (Editar).

Opções de contêiner

É possível definir estas opções específicas da plataforma:

  • Proxy server (Servidor de proxy): o servidor de proxy a ser usado nas instâncias de ambiente. Por padrão, o NGNIX é usado.

Opções de log

A seção Log Options (Opções de log) tem duas configurações:

  • Instance profile (Perfil da instância): especifica o perfil da instância que tem permissão para acessar o bucket do Amazon S3 associado à sua aplicação.

  • Enable log file rotation to Amazon S3 (Habilitar a rotação de arquivos de log para o Amazon S3): especifica se os arquivos de log das instâncias do Amazon EC2 da aplicação serão copiados para o bucket do Amazon S3 associado a ela.

Arquivos estáticos

Para melhorar a performance, você pode usar a seção Static files (Arquivos estáticos) para configurar o servidor proxy para servir arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro da aplicação Web. Defina, para cada diretório, o caminho virtual para mapeamento de diretórios. Quando o servidor de proxy recebe uma solicitação para um arquivo no caminho especificado, ele atende o arquivo diretamente em vez de rotear solicitação para seu aplicativo.

Para ver detalhes sobre como configurar arquivos estáticos usando arquivos de configuração ou o console do Elastic Beanstalk, consulte Fornecer arquivos estáticos.

Propriedades de ambiente

Use a seção Propriedades do Ambiente para especificar definições de configuração de ambientes nas instâncias do Amazon EC2 que estão executando sua aplicação. Essas definições são passadas para o aplicativo como pares de chave-valor.

Dentro do ambiente Node.js que é executado no AWS Elastic Beanstalk, você pode acessar as variáveis de ambiente executando process.env.ENV_VARIABLE.

var endpoint = process.env.API_ENDPOINT

A plataforma Node.js define a variável de ambiente PORT como a porta para a qual o servidor proxy direciona o tráfego. Para obter mais informações, consulte Configurar o servidor de proxy.

Consulte Propriedades de ambientes e outras configurações de software para obter mais informações.

As categorias a seguir de configuração de software do console só são compatíveis com um ambiente Node.js do Elastic Beanstalk que use uma versão da plataforma Amazon Linux AMI (anterior ao Amazon Linux 2).

Observações
  • As informações neste tópico somente são aplicáveis a ramificações de plataforma com base na Amazon Linux AMI (AL1). As ramificações de plataforma AL2023/AL2 são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e exigem definições de configuração diferentes.

  • Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2.

Na página de configuração, especifique o seguinte:

  • Proxy server (Servidor proxy): especifica o servidor Web a ser usado para conexões do proxy com o Node.js. Por padrão, o NGINX é usado. Se você selecionar none (nenhum), os mapeamentos de arquivos não terão efeito e a compactação GZIP será desabilitada.

  • Node.js version (Versão do ): especifica a versão do Node.js. Para obter uma lista das versões compatíveis do Node.js, consulte Node.js, no guia Plataformas AWS Elastic Beanstalk.

  • GZIP compression (Compactação ): especifica se a compactação GZIP está habilitada. Por padrão, a compactação GZIP está habilitada.

  • Node command (Comando de nó): permite inserir o comando usado para iniciar a aplicação Node.js. Uma string vazia (o padrão) significa que o Elastic Beanstalk usa app.js, em seguida server.js e depois npm start.

Namespace de configuração do Node.js

Você pode usar um arquivo de configuração para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. As opções de configuração podem ser definidas pelo serviço Elastic Beanstalk ou pela plataforma utilizada, e são organizadas em namespaces.

É possível escolher o proxy a ser usado nas instâncias do seu ambiente usando o namespace aws:elasticbeanstalk:environment:proxy. O exemplo a seguir configura o ambiente para usar o servidor proxy Apache HTTPD.

exemplo .ebextensions/nodejs-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

É possível configurar o proxy para servir arquivos estáticos usando o namespace aws:elasticbeanstalk:environment:proxy:staticfiles. Para obter mais informações e um exemplo, consulte Fornecer arquivos estáticos.

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte Opções de configuração para obter mais informações.

Se o ambiente Node.js do Elastic Beanstalk usar uma versão da plataforma Amazon Linux AMI (anterior ao Amazon Linux 2), considere as configurações e recomendações específicas nesta seção.

Observações
  • As informações neste tópico somente são aplicáveis a ramificações de plataforma com base na Amazon Linux AMI (AL1). As ramificações de plataforma AL2023/AL2 são incompatíveis com as versões anteriores da plataforma Amazon Linux AMI (AL1) e exigem definições de configuração diferentes.

  • Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Para obter mais informações sobre como migrar para uma ramificação da plataforma Amazon Linux 2023 atual e totalmente compatível, consulte Migrar a aplicação Linux do Elastic Beanstalk para o Amazon Linux 2023 ou Amazon Linux 2.

O Elastic Beanstalk é compatível com algumas opções de configurações específicas da plataforma para versões da plataforma Node.js do Amazon Linux AMI. Você pode escolher o servidor proxy para ser executado na frente da aplicação, uma versão específica do Node.js para ser executada e o comando usado para executar a aplicação.

Como servidor proxy, você pode usar um servidor proxy NGINX ou Apache. Você pode definir o valor none para a opção ProxyServer. Nesse caso, o Elastic Beanstalk executa a aplicação como autônoma, não por atrás de algum servidor de proxy. Se o ambiente executar uma aplicação autônoma, atualize o código para escutar a porta para a qual o NGINX direciona o tráfego.

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

Em termos de versão de linguagem compatível, a plataforma Node.js do Amazon Linux AMI é diferente de outras plataformas gerenciadas pelo Elastic Beanstalk. Isso porque cada versão da plataforma Node.js só é compatível com algumas versões da linguagem Node.js. Para obter uma lista das versões compatíveis do Node.js, consulte Node.js, no guia Plataformas AWS Elastic Beanstalk.

Você pode usar uma opção de configuração específica da plataforma para definir a versão da linguagem. Para obter instruções, consulte Configurar o ambiente Node.js. Ou então, use o console do Elastic Beanstalk para atualizar a versão do Node.js que o ambiente usa, como parte da atualização da versão da plataforma.

nota

Quando o suporte oferecido para a versão do Node.js que você estiver usando for removido da plataforma, será necessário alterar ou remover a configuração da versão antes de fazer a atualização da plataforma. Isso pode ocorrer quando uma vulnerabilidade de segurança é identificada para uma ou mais versões do Node.js.

Quando isso ocorrer, tentar atualizar para uma nova versão da plataforma não compatível com a NodeVersion configurada falhará. Para evitar a necessidade de criar um novo ambiente, altere a opção de configuração NodeVersion para uma versão de Node.js que tenha suporte na versão de plataforma antiga e na nova, ou remova a configuração de opção e execute a atualização da plataforma.

Para configurar a versão do Node.js do ambiente no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. Na página de visão geral do ambiente, em Platform (Plataforma), escolha Change (Alterar).

  4. Na caixa de diálogo Update platform version (Atualizar versão da plataforma), selecione uma versão do Node.js.

    
                  Confirmação da versão da plataforma de atualização do Elastic Beanstalk
  5. Escolha Save (Salvar).

A plataforma Node.js do Amazon Linux AMI define opções adicionais nos namespaces aws:elasticbeanstalk:container:nodejs:staticfiles e aws:elasticbeanstalk:container:nodejs.

O arquivo de configuração a seguir diz ao Elastic Beanstalk para usar npm start para executar a aplicação. Ele também define o tipo de proxy como Apache e permite compactação. Por fim, ele configura o proxy para servir arquivos estáticos de dois diretórios de origem. Uma origem são os arquivos HTML no caminho html na raiz do site a partir do diretório de origem statichtml. A outra fonte são arquivos de imagem no images caminho sob a raiz do site a partir do diretório de origem staticimages.

exemplo .ebextensions/node-settings.config
option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte Opções de configuração para obter mais informações.