Implantar uma aplicação Web no AWS Elastic Beanstalk
GUIA DE CONCEITOS BÁSICOS
Módulo 3: Implantar a aplicação Web
Neste módulo, implantaremos a aplicação na nuvem.
Introdução
Neste módulo, você aprenderá a empacotar a aplicação NodeJS para implantá-la. Também veremos como usar o AWS CDK para provisionar todos os recursos do AWS Elastic Beanstalk criados no Módulo 2.
O que você aprenderá
- Empacotar a aplicação NodeJS
- Criar e implantar a aplicação do CDK
- Atualizar a implementação da aplicação NodeJS
Tempo para a conclusão
10 minutos
Pré-requisitos do módulo
- Conta da AWS com acesso de administrador**
- Navegador recomendado: versão mais recente do Chrome ou Firefox
[**]Talvez as contas criadas nas últimas 24 horas ainda não tenham acesso aos serviços necessários para este tutorial.
Implementação
Empacotar a aplicação NodeJS
No Módulo 2, vimos que usaremos o módulo S3Assets do AWS CDK para carregar a aplicação como um arquivo ZIP no S3.
Para isso, você precisa criar o arquivo ZIP da aplicação NodeJS e colocá-lo no diretório raiz da aplicação do AWS CDK. Dê ao arquivo ZIP o nome “app.zip”. Para fazer isso, execute o seguinte comando:
zip -r ../app.zip ./*

Iniciar o CDK na sua conta
Caso seja a primeira vez que você está usando o AWS CDK na conta e na região, será preciso iniciá-lo. Para implantar aplicações do AWS CDK em uma conta e uma região da AWS, o CDK precisa provisionar os recursos necessários para realizar implementações. Os recursos são os seguintes: um bucket do Amazon S3 para armazenar os arquivos da implementação e IAM roles para conceder as permissões necessárias para realizar implementações. O provisionamento desses recursos iniciais é chamado de inicialização.
Para iniciar sua conta e sua região da AWS, execute
cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1
A saída deve ter esta aparência:
cdk bootstrap aws://123456789012/us-east-1
É possível obter o número da conta pela AWS Management Console e o nome da região desta lista.
Criar e implantar a aplicação do CDK
Depois de empacotar a aplicação NodeJS, colocá-la na raiz do diretório da aplicação CDK e iniciar a conta e a região da AWS, você poderá criar e implantar a aplicação CDK.
Primeiro, crie a aplicação CDK.
node run build
Caso não haja nenhum erro na aplicação, a ação será bem-sucedida, e você poderá implantar a aplicação CDK na nuvem.
cdk deploy
Primeiro, você precisará confirmar se quer fazer alterações no nível de segurança da conta, pois criamos uma role.

Insira “y” para iniciar a implementação. Ela levará alguns minutos para ser concluída. Após a conclusão, você receberá uma mensagem do nome do recurso da Amazon (ARN) da pilha do CloudFormation que a implementação criou.
Abra a management console do CloudFormation. Você verá que há duas novas pilhas nela.

A pilha chamada CdkEbInfraStack contém todos os recursos do Elastic Beanstalk criados no módulo anterior: a aplicação, a versão da aplicação, o perfil da instância e o ambiente do Elastic Beanstalk.
A outra pilha (com a string aleatória) foi criada pelo Elastic Beanstalk e contém todos os recursos de que a aplicação precisa: grupos de auto scaling, instâncias, alarmes e métricas do Amazon CloudWatch, balanceadores de carga e grupos de segurança.
Ver a aplicação na nuvem
Caso você queira ver a aplicação implantada na nuvem, primeiro identifique o URL da aplicação Web. Para isso, acesse o serviço Elastic Beanstalk na Console AWS e procure o ambiente chamado MyWebAppEnvironment.

O URL se encontrará na lista. Clique nele para executar a aplicação.
Atualizar a implementação da aplicação NodeJS
Se você quiser fazer alterações na aplicação Web e implantá-la novamente na nuvem, siga estas etapas:
- Faça as alterações na aplicação Web
- Empacote-a em um arquivo app.zip
- Coloque o arquivo app.zip no diretório raiz da aplicação CDK
- Crie o projeto do CDK: npm run build
- Implante o projeto do CDK: cdk deploy
Agora você pode ver que há uma nova versão da aplicação do Elastic Beanstalk implantada. Acesse o URL da aplicação Web para conferir a nova versão implantada. Esse processo leva um tempo, então fique de olho na console para saber quando ele for concluído.

Erros comuns
Compactar a aplicação
Você pode receber o erro a seguir ao carregar a aplicação NodeJS no Elastic Beanstalk.
Failed to find package.json. Node.js may have issues starting. Verify package.json is valid or place code in a file named server.js or app.js.
Talvez o problema seja o formato da compactação da aplicação. Remova o package-lock.json e o diretório node_modules e execute o comando a seguir no diretório da aplicação Web.
zip -r app.zip .
Os arquivos serão compactados corretamente para o Elastic Beanstalk.
Módulos de nós ao empacotar a aplicação
É possível empacotar o diretório node_modules com todas as dependências baixadas no arquivo ZIP da aplicação Web.
Quando esse diretório existe, o Elastic Beanstalk entende que não é necessário baixar dependências.
Leia as instruções sobre como lidar com dependências NodeJS nos pacotes do Elastic Beanstalk.
Conclusão
Neste guia, você aprendeu a empacotar uma aplicação Web NodeJS, a implantá-la com o Elastic Beanstalk e a implantar toda a infraestrutura como uma aplicação CDK.
A seguir: Limpar os recursos