Configurando as dependências do seu aplicativo no 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á.

Configurando as dependências do seu aplicativo no Elastic Beanstalk

Seu aplicativo pode ter dependências de alguns Node.js módulos, como os que você especifica nas require() instruções. Esses módulos são armazenados em um diretório node_modules. Quando seu aplicativo é executado, Node.js carrega os módulos desse diretório. Para obter mais informações, consulte Carregando das pastas node_modules no Node.js documentação.

Você pode especificar essas dependências usando um arquivo package.json. Se o Elastic Beanstalk detectar esse arquivo e não houver um diretório node_modules presente, o Elastic Beanstalk executa npm install como usuário de aplicativo da web. O comando npm install instala as dependências no diretório node_modules, que o Elastic Beanstalk cria de antemão. O comando npm install acessa os pacotes listados no arquivo package.json do registro npm público ou outros locais. Para obter mais informações, consulte o site npm Docs.

Se o Elastic Beanstalk detectar o diretório node_modules, não executa o npm install, mesmo que exista um arquivo package.json. O Elastic Beanstalk presume que os pacotes de dependências estejam disponíveis no diretório de node_modules Node.js para acessar e carregar.

As seções a seguir fornecem mais informações sobre como estabelecer seu Node.js dependências do módulo para seu aplicativo.

nota

Se você tiver algum problema de implantação quando o Elastic Beanstalk estiver executando o npm install, considere a adoção de uma abordagem alternativa. Inclua o diretório node_modules com os módulos de dependências no pacote de fontes da aplicação. Dessa forma você contorna os problemas de instalação das dependências do registro npm público enquanto você investiga o problema. Como a origem dos módulos de dependências é um diretório local, fazer isso também pode ajudar a reduzir o tempo de implantação. Para ter mais informações, consulte Incluindo Node.js dependências em um diretório node_modules

Especificando Node.js dependências com um arquivo package.json

Use um arquivo package.json na raiz do código-fonte do projeto para especificar pacotes de dependência e para fornecer um comando para iniciar. Quando existe um arquivo package.json presente e não existe um diretório node_modules na raiz da origem do projeto, o Elastic Beanstalk executa npm install como usuário do aplicativo da web para instalar dependências do registro npm público. O Elastic Beanstalk também usa o comando start para iniciar a aplicação. Para obter mais informações sobre o arquivo package.json, consulte Specifying dependencies in a package.json file (Especificar dependências em um arquivo ) no site npm Docs.

Use a palavra-chave scripts para fornecer um comando para iniciar. Atualmente, a palavra-chave scripts é usada em vez da opção herdada NodeCommand no namespace aws:elasticbeanstalk:container:nodejs.

exemplo package.json: Express
{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }
Modo de produção e dependências de desenvolvimento

Para especificar suas dependências no package.json arquivo, use as dependências e devDependenciesos atributos. O atributo dependências designa os pacotes exigidos pelo seu aplicativo em produção. O devDependenciesatributo designa pacotes que são necessários somente para desenvolvimento e teste locais.

O Elastic Beanstalk executa npm install como usuário do aplicativo da web com os seguintes comandos. As opções de comando variam dependendo da versão npm incluída na ramificação da plataforma em que seu aplicativo é executado.

  • npm v6 — O Elastic Beanstalk instala dependências no modo de produção por padrão. Ele usa o comando npm install --production.

  • npm v7 ou superior — o Elastic Beanstalk omite o. devDependencies Ele usa o comando npm install --omit=dev.

Ambos os comandos listados acima não instalam os pacotes que estão devDependencies.

Se você precisar instalar os devDependenciespacotes, defina a propriedade de PRODUCTION ambiente NPM USE _ _ comofalse. Com esta configuração, não usaremos as opções acima ao executar o npm install. Isso resultará na instalação dos devDependenciespacotes.

SSHe HTTPS

A partir do lançamento da plataforma Amazon Linux 2 em 7 de março de 2023, você também pode usar os HTTPS protocolos SSH e para recuperar pacotes de um repositório Git. Ramificação da plataforma Node.js 16 suporta os HTTPS protocolos SSH e. Node.js 14 suporta apenas o HTTPS protocolo.

exemplo package.json — Node.js 16 suporta ambos HTTPS e SSH
... "dependencies": { "aws-sdk": "https://github.com/aws/aws-sdk-js.git", "aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git" }

Versões e intervalos de versões

Importante

O recurso para especificar intervalos de versões não está disponível para ramificações da plataforma Node.js executadas em AL2 023. Só oferecemos suporte a uma versão do Node.js em uma ramificação específica do Node.js em AL2 023. Se o arquivo package.json especificar um intervalo de versões, ele será ignorado e a versão da ramificação da plataforma do Node.js será usada por padrão.

Use a engines palavra-chave no package.json arquivo para especificar a Node.js versão que você deseja que seu aplicativo use. Você também pode especificar um intervalo de versões usando a notação npm. Para obter mais informações sobre a sintaxe dos intervalos de versões, consulte Controle de versão semântico usando npm no Node.js site. A engines palavra-chave no Node.js package.jsono arquivo substitui a NodeVersion opção legada no aws:elasticbeanstalk:container:nodejs namespace.

exemplo package.json— Solteiro Node.js versão
{ ... "engines": { "node" : "14.16.0" } }
exemplo package.json – Node.js gama de versões
{ ... "engines": { "node" : ">=10 <11" } }

Quando um intervalo de versões é indicado, o Elastic Beanstalk instala a versão mais recente Node.js versão que a plataforma tem disponível dentro da faixa. Neste exemplo, o intervalo indica que a versão deve ser maior ou igual à versão 10, mas menor que a versão 11. Como resultado, o Elastic Beanstalk instala o mais recente Node.js versão 10.x.y, que está disponível na plataforma compatível.

Esteja ciente de que você só pode especificar um Node.js versão que corresponde à ramificação da sua plataforma. Por exemplo, se você estiver usando o Node.js ramificação de 16 plataformas, você só pode especificar um 16.x.y Node.js versão. Você pode usar as opções de intervalo de versões suportadas pelo npm para permitir mais flexibilidade. Para válido Node.js versões para cada ramificação da plataforma, consulte Node.jsno guia AWS Elastic Beanstalk de plataformas.

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 do Node.js 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.

Nesse caso, ocorre uma falha na tentativa de atualizar para uma nova versão da plataforma não compatível com a versão do Node.js configurada. Para evitar a necessidade de criar um novo ambiente, altere a configuração da versão Node.jspackage.json para uma versão Node.js suportada pela versão antiga da plataforma e a nova. Você tem a opção de especificar um intervalo de versão Node.js que inclua uma versão suportada, conforme descrito anteriormente neste tópico. Você também tem a opção de remover a configuração e, em seguida, implantar o novo pacote de fonte.

Incluindo Node.js dependências em um diretório node_modules

Para implantar pacotes de dependência em instâncias de ambiente juntamente com o código da aplicação, inclua-os em um diretório chamado node_modules na raiz da fonte de seu projeto. Para obter mais informações, consulte Downloading and installing packages locally (Baixar e instalar pacotes localmente) no site npm Docs.

Quando você implanta um node_modules diretório em um AL2 023/ AL2 Node.js versão da plataforma, o Elastic Beanstalk presume que você está fornecendo seus próprios pacotes de dependências e evita a instalação de dependências especificadas em um arquivo package.json. Node.js procura dependências no node_modules diretório. Para obter mais informações, consulte Carregando das pastas node_modules no Node.js documentação.

nota

Se você tiver algum problema de implantação enquanto o Elastic Beanstalk estiver executando npm install, considere a abordagem descrita neste tópico como uma solução alternativa enquanto investiga o problema.