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

Usar a plataforma Node.js do Elastic Beanstalk

Importante

As versões da plataforma Amazon Linux 2 são fundamentalmente diferentes das versões da plataforma Amazon Linux AMI (anteriores ao Amazon Linux 2). Essas diferentes gerações de plataformas são incompatíveis de várias maneiras. Se você estiver migrando para uma versão da plataforma Amazon Linux 2, leia as informações em Migrar seu aplicativo Linux do Elastic Beanstalk para o Amazon Linux 2.

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

O Elastic Beanstalk fornece opções de configuração que você pode usar para personalizar o software que é executado nas instâncias do EC2 em seu ambiente Elastic Beanstalk. Você pode configurar variáveis de ambiente necessárias ao seu aplicativo, ativar a rotação de log para o Amazon S3 e mapear pastas da origem do aplicativo 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.

Você pode incluir um arquivo Package.json no pacote do código-fonte para instalar pacotes durante a implantação, fornecer um comando de inicialização e especificar a versão do Node.js que deseja que sua 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 de proxy para atender a ativos estáticos, encaminhar o tráfego para seu aplicativo e compactar respostas. Você pode estender ou substituir a configuração de proxy padrão para cenários avançados.

É possível adicionar um Procfile ao pacote de origem para especificar o comando que inicia o aplicativo, conforme mostrado no exemplo a seguir. Esse recurso substitui a opção legada NodeCommand no namespace aws:elasticbeanstalk:container:nodejs.

exemplo Procfile

web: node index.js

Para obter detalhes sobre o uso do Procfile, expanda a seção Buildfile e Procfile em Estender plataformas Linux do Elastic Beanstalk.

Quando você não fornecer um Procfile, o Elastic Beanstalk executará npm start se você fornecer um arquivo package.json. Se você também não fornecê-lo, 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 plataformas Linux do Elastic Beanstalk.

Configurar seu ambiente Node.js

As configurações da plataforma Node.js permitem que você ajuste 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.

Use o console do Elastic Beanstalk para habilitar a rotação de log para o Amazon S3 e configurar variáveis que podem ser lidas pela aplicação no ambiente.

Para configurar seu ambiente Node.js no console do Elastic Beanstalk

  1. Abra o console do Elastic Beanstalk e, na lista Regiões, selecione 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 do Software, selecione 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, é usado nginx.

Opções de log

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

  • Instance profile – Especifica o perfil de instância que tem permissão para acessar o bucket do Amazon S3 associado a seu aplicativo.

  • Enable log file rotation to Amazon S3 (Habilitar a rotação de arquivo de log para o Amazon S3) – Especifica se os arquivos de log das instâncias do Amazon EC2 do aplicativo devem ser copiados para o bucket do Amazon S3 associado ao aplicativo.

Arquivos estáticos

Para melhorar o desempenho, a seção Arquivos estáticos permite configurar o servidor de proxy para fornecer arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro de seu aplicativo 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 obter detalhes sobre como configurar arquivos estáticos usando o console do Elastic Beanstalk, consulte Fornecer arquivos estáticos.

Propriedades de ambiente

A seção Environment Properties permite que você especifique definições de configuração do ambiente nas instâncias do Amazon EC2 que estão executando seu aplicativo. Essas definições são passadas para o aplicativo como pares de chave-valor.

Dentro do ambiente Node.js em execução no AWS Elastic Beanstalk, você pode acessar as variáveis de ambiente usando o process.env.ENV_VARIABLE semelhante ao exemplo a seguir.

var endpoint = process.env.API_ENDPOINT

A plataforma Node.js define a variável de ambiente PORT para a porta à qual o servidor de proxy passa o tráfego. Consulte Configurar o servidor de proxy.

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

Configurar um ambiente Node.js de AMI do Amazon Linux (anterior ao Amazon Linux 2)

As seguintes categorias de configuração de software de console são compatíveis somente em um ambiente Node.js do Elastic Beanstalk que usa uma versão da plataforma de AMI do Amazon Linux (anterior ao Amazon Linux 2).

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

  • Proxy server (Servidor de proxy) – especifica qual servidor Web usar em conexões de proxy com o Node.js. Por padrão, é usado nginx. Se você selecionar none, os mapeamentos de arquivos estáticos não terão efeito e a compactação gzip será desabilitada.

  • Node.js version (Versão do Node.js) – 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 do AWS Elastic Beanstalk.

  • Gzip compression (Compactação gzip) – especifica se a compactação gzip está habilitada. Por padrão, a compactação gzip é habilitada.

  • Node command (Comando do Node) – permite inserir o comando usado para iniciar a aplicação Node.js. Uma string vazia (o padrão) significa que o Elastic Beanstalk usará app.js, depois server.js e, em seguida, npm start, nessa ordem.

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 que você usa, 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 de 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 detalhes e um exemplo, consulte Fornecer arquivos estáticos.

Elastic Beanstalk oferece muitas opções de configuração para personalizar seu 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 CLI do EB ou a CLI da AWS. Consulte Opções de configuração para obter mais informações.

A plataforma Node.js de AMI do Amazon Linux (anterior ao Amazon Linux 2)

Se o ambiente Node.js do Elastic Beanstalk usar uma versão da plataforma de AMI do Amazon Linux (anterior ao Amazon Linux 2), leia as informações adicionais nesta seção.

O Elastic Beanstalk oferece suporte a algumas opções de configurações específicas da plataforma para versões da plataforma Node.js de AMI do Amazon Linux. Você pode escolher qual servidor de proxy executar na frente de seu aplicativo, escolher uma versão específica do Node.js para executar e escolher o comando usado para executar seu aplicativo.

Para o servidor de proxy, além de nginx, você pode escolher o servidor de proxy Apache. Além disso, você pode definir o valor none para a opção ProxyServer. Nesse caso, o Elastic Beanstalk executa sua aplicação como autônoma, não por atrás de algum servidor de proxy. Se o seu ambiente executar um aplicativo autônomo, atualize seu código para escutar a porta para a qual o nginx encaminha 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 de AMI do Amazon Linux é um pouco diferente de outras plataformas gerenciadas do Elastic Beanstalk. Cada versão da plataforma Node.js é 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 do 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 mais detalhes, consulte Configurar seu ambiente Node.js. Como alternativa, é possível usar o console do Elastic Beanstalk para atualizar a versão do Node.js usada pelo seu ambiente como parte da atualização da versão da plataforma, conforme mostrado no procedimento a seguir.

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.

Como configurar a versão do Node.js do ambiente no console do Elastic Beanstalk

  1. Abra o console do Elastic Beanstalk e, na lista Regiões, selecione 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 de plataforma de atualização do Elastic Beanstalk
  5. Escolha Save (Salvar).

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

O arquivo de configuração a seguir instrui o Elastic Beanstalk a usar npm start para executar o aplicativo, define o tipo de proxy como Apache, habilita a compactação e configura o proxy para servir arquivos estáticos de dois diretórios de origem: arquivos HTML no caminho html sob a raiz do site a partir do diretório de origem statichtml e arquivos de imagem no caminho images 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

Elastic Beanstalk oferece muitas opções de configuração para personalizar seu 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 CLI do EB ou a CLI da AWS. Consulte Opções de configuração para obter mais informações.