Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Implantar uma aplicação Node.js com o DynamoDB no Elastic Beanstalk

Modo de foco
Implantar uma aplicação Node.js com o DynamoDB 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á.

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

Este tutorial e seu aplicativo de exemplo nodejs-example-dynamo.zip orientam você pelo processo de implantação de um aplicativo Node.js que usa o AWS SDK para JavaScript em Node.js para interagir com o serviço Amazon DynamoDB. Você criará uma tabela do DynamoDB que está em um banco de dados desacoplado ou externo do ambiente AWS Elastic Beanstalk. Você também configurará o aplicativo para usar um banco de dados desacoplado. Em um ambiente de produção, é uma prática recomendada usar um banco de dados desacoplado do ambiente Elastic Beanstalk para que seja independente do ciclo de vida do ambiente. Essa prática também permite que você execute implantações azul/verde.

O aplicativo de exemplo ilustra o seguinte:

  • Uma tabela do DynamoDB que armazena dados de texto fornecidos pelo usuário.

  • Os arquivos de configuração para criar a tabela.

  • Um tópico do Amazon Simple Notification Service.

  • O uso de um arquivo package.json para instalar pacotes durante a implantação.

Pré-requisitos

Este tutorial requer os seguintes pré-requisitos:

  • Os tempos de execução do Node.js

  • O software gerenciador de pacotes Node.js padrão, npm

  • O gerador de linha de comando Express

  • A Elastic Beanstalk Command Line Interface (EB CLI)

Para obter detalhes sobre como instalar os três primeiros componentes listados e configurar seu ambiente de desenvolvimento local, consulte Configurar seu ambiente de desenvolvimento Node.js para o Elastic Beanstalk. Para este tutorial, você não precisa instalar o AWS SDK para Node.js, que também é mencionado no tópico referenciado.

Para obter detalhes sobre como instalar e configurar a EB CLI, consulte Instalar a interface de linha de comando do Elastic Beanstalk e Configurar a EB CLI.

Criar um ambiente do Elastic Beanstalk

Seu diretório de aplicativos

Este tutorial usa um diretório chamado nodejs-example-dynamo para o pacote de origem do aplicativo. Crie o diretório nodejs-example-dynamo para este tutorial.

~$ mkdir nodejs-example-dynamo
nota

Cada tutorial neste capítulo usa seu próprio diretório para o pacote de origem do aplicativo. O nome do diretório corresponde ao nome do aplicativo de amostra usado pelo tutorial.

Altere seu diretório de trabalho atual para nodejs-example-dynamo.

~$ cd nodejs-example-dynamo

Agora, vamos configurar um ambiente do Elastic Beanstalk executando a plataforma Node.js e o aplicativo de amostra. Usaremos a interface de linha de comando do Elastic Beanstalk (EB CLI).

Para configurar um repositório EB CLI para seu aplicativo e criar um ambiente Elastic Beanstalk executando a plataforma Node.js
  1. Crie um repositório com o comando eb init.

    ~/nodejs-example-dynamo$ eb init --platform node.js --region <region>

    Esse comando cria um arquivo de configuração em uma pasta chamada .elasticbeanstalk que especifica as configurações para a criação de ambientes para a aplicação e cria uma aplicação do Elastic Beanstalk com nome baseado na pasta atual.

  2. Crie um ambiente executando um aplicativo de exemplo com o comando eb create.

    ~/nodejs-example-dynamo$ eb create --sample nodejs-example-dynamo

    Esse comando cria um ambiente com balanceamento de carga com as configurações padrão da plataforma do Node.js e os seguintes recursos:

    • Instância do EC2: uma máquina virtual do Amazon Elastic Compute Cloud (Amazon EC2) configurada para executar aplicações Web na plataforma escolhida.

      Cada plataforma executa um conjunto específico de software, arquivos de configuração e scripts para oferecer suporte a uma versão de linguagem, framework, contêiner da web específicos ou a uma combinação deles. A maioria das plataformas usa o Apache ou o NGINX como um proxy reverso que fica na frente da aplicação Web, encaminha solicitações para ela, atende ativos estáticos e gera logs de acesso e de erro.

    • Grupo de segurança de instância: um grupo de segurança do Amazon EC2 configurado para permitir tráfego de entrada na porta 80. Esse recurso permite que o tráfego HTTP do load balancer chegue à instância do EC2 que executa seu aplicativo Web. Por padrão, o tráfego não é permitido em outras portas.

    • Balanceador de carga: um balanceador de carga do Elastic Load Balancing configurado para distribuir solicitações para as instâncias que executam a aplicação. Um load balancer também elimina a necessidade de expor suas instâncias diretamente à Internet.

    • Grupo de segurança do balanceador de carga: um grupo de segurança do Amazon EC2 configurado para permitir tráfego de entrada na porta 80. Esse recurso permite que o tráfego HTTP da Internet acesse o load balancer. Por padrão, o tráfego não é permitido em outras portas.

    • Grupo de Auto Scaling: grupo de Auto Scaling configurado para substituir uma instância se ela for encerrada ou ficar indisponível.

    • Bucket do Amazon S3: um local de armazenamento do seu código-fonte, logs e outros artefatos criados quando o Elastic Beanstalk é utilizado.

    • Alarmes do Amazon CloudWatch: dois alarmes do CloudWatch que monitoram a carga nas instâncias do ambiente e são acionados quando ela está muito alta ou muito baixa. Quando um alarme é acionado, o seu grupo de Auto Scaling pode aumentar ou diminuir.

    • Pilha do AWS CloudFormation: o Elastic Beanstalk usa o AWS CloudFormation para iniciar os recursos em seu ambiente e propagar alterações de configuração. Os recursos são definidos em um modelo que você pode visualizar no console do AWS CloudFormation.

    • Nome de domínio: um nome de domínio que encaminha para a aplicação Web no formato subdomínio.região.elasticbeanstalk.com.

      Segurança de domínios

      Para aumentar a segurança de suas aplicações do Elastic Beanstalk, o domínio elasticbeanstalk.com é registrado na Lista Pública de Sufixos (PSL).

      Se precisar definir cookies confidenciais no nome de domínio padrão para suas aplicações Elastic Beanstalk, recomendamos usar cookies com um prefixo __Host- para maior segurança. Essa prática defende seu domínio contra tentativas de falsificação de solicitação entre sites (CSRF). Para obter mais informações, consulte a página Set-Cookie na Mozilla Developer Network.

  3. Quando a criação do ambiente for concluída, use o comando eb open para abrir o URL do ambiente no navegador padrão.

    ~/nodejs-example-dynamo$ eb open

Agora você criou um ambiente Node.js Elastic Beanstalk com um aplicativo de amostra. Você pode atualizá-lo com seu próprio aplicativo. Em seguida, atualizamos o aplicativo de exemplo para usar a framework do Express.

Adicionar permissões às instâncias do seu ambiente

Seu aplicativo é executado em uma ou mais instâncias do EC2 por trás de um load balancer, atendendo a solicitações HTTP da Internet. Quando ele recebe uma solicitação que o obriga a usar os produtos da AWS, a aplicação usa as permissões da instância que executa para acessar esses serviços.

A aplicação demonstrativa usa as permissões de instância para gravar dados em uma tabela do DynamoDB e enviar notificações para um tópico do Amazon SNS com o SDK for JavaScript in Node.js. Adicione as políticas gerenciadas a seguir ao perfil da instância padrão para conceder às instâncias do EC2 no ambiente permissão para acessar o DynamoDB e o Amazon SNS:

  • AmazonDynamoDBFullAccess

  • AmazonSNSFullAccess

Para adicionar políticas ao perfil da instância padrão
  1. Abra a página Roles (Funções) no console do IAM.

  2. Escolha aws-elasticbeanstalk-ec2-role.

  3. Na guia Permissions (Permissões), escolha Attach policies (Anexar políticas).

  4. Selecione a política gerenciada para os serviços adicionais que o seu aplicativo utiliza. Para este tutorial, selecione AmazonSNSFullAccess e AmazonDynamoDBFullAccess.

  5. Escolha Anexar política.

Consulte Gerenciar perfis de instância do Elastic Beanstalk para saber mais sobre o gerenciamento de perfis de instância.

Implante o aplicativo de exemplo

Agora seu ambiente está pronto para você implantar e executar o aplicativo de exemplo deste tutorial: nodejs-example-dynamo.zip.

Para implantar e executar o aplicativo de exemplo do tutorial
  1. Altere seu diretório de trabalho atual para o diretório do aplicativo nodejs-example-dynamo.

    ~$ cd nodejs-example-dynamo
  2. Baixe e extraia o conteúdo do pacote de origem da aplicação de exemplo nodejs-exemplo-dynamo.zip para o diretório de aplicações nodejs-example-dynamo.

  3. Implante o aplicativo de exemplo em seu ambiente Elastic Beanstalk com o comando eb deploy.

    ~/nodejs-example-dynamo$ eb deploy
    nota

    Por padrão, o comando eb deploy cria um arquivo ZIP da pasta do seu projeto. Você pode configurar a EB CLI para implantar um artefato do seu processo de compilação, em vez de criar um arquivo ZIP da pasta do projeto. Para ter mais informações, consulte Implantar um artefato, em vez da pasta do projeto.

  4. Quando a criação do ambiente for concluída, use o comando eb open para abrir o URL do ambiente no navegador padrão.

    ~/nodejs-example-dynamo$ eb open

O site coleta informações de contato do usuário e usa uma tabela do DynamoDB para armazenar os dados. Para adicionar uma entrada, escolha Sign up today, insira um nome e um endereço de e-mail e, em seguida, selecione Sign Up!. A aplicação Web grava o conteúdo do formulário na tabela e aciona uma notificação por e-mail do Amazon SNS.

Startup landing page with teaser message and sign-up button for upcoming product launch.

No momento, o tópico do Amazon SNS está configurado com um espaço reservado para notificações de e-mail. Você atualizará a configuração em breve, mas enquanto isso, pode verificar a tabela do DynamoDB e o tópico do Amazon SNS no Console de Gerenciamento da AWS Management Console.

Para visualizar a tabela
  1. Abra a página Tables (Tabelas) no console do DynamoDB.

  2. Encontre a tabela que o aplicativo criou. O nome começa com awseb e contém StartupSignupsTable.

  3. Selecione a tabela, escolha Items e Start search para visualizar todos os itens na tabela.

A tabela contém uma entrada para cada endereço de e-mail enviado no site de inscrição. Além de gravar na tabela, a aplicação envia uma mensagem para um tópico do Amazon SNS que tem duas assinaturas, uma para notificações por e-mail para você e outra para uma fila do Amazon Simple Queue Service que uma aplicação de operador pode ler para processar solicitações e enviar e-mails para os clientes interessados.

Para visualizar o tópico
  1. Abra a página Topics (Tópicos) no console do Amazon SNS.

  2. Encontre o tópico que o aplicativo criou. O nome começa com awseb e contém NewSignupTopic.

  3. Escolha o tópico para visualizar as assinaturas.

O aplicativo (app.js) define duas rotas. O caminho raiz (/) retorna uma página da web renderizada a partir de um modelo JavaScript incorporado (EJS) com um formulário que o usuário preenche para registrar seu nome e endereço de e-mail. A submissão do formulário envia uma solicitação POST com os dados do formulário para a rota /signup, que grava uma entrada na tabela do DynamoDB e publica uma mensagem para o tópico do Amazon SNS para notificar o proprietário da inscrição.

A aplicação demonstrativa inclui os arquivos de configuração que criam a tabela do DynamoDB, o tópico do Amazon SNS e a fila do Amazon SQS usados pela aplicação. Isso permite que você crie um novo ambiente e teste a funcionalidade imediatamente, mas tem a desvantagem de vincular a tabela do DynamoDB ao ambiente. Para um ambiente de produção, você deve criar a tabela do DynamoDB fora do seu ambiente para evitar perdê-lo quando encerrar o ambiente ou atualizar sua configuração.

Criar uma tabela do DynamoDB

Para usar uma tabela do DynamoDB externa com uma aplicação em execução no Elastic Beanstalk primeiro crie uma tabela no DynamoDB. Quando uma instância é criada fora do Elastic Beanstalk, ela é completamente independente do Elastic Beanstalk e dos ambientes do Elastic Beanstalk e não será encerrada pelo Elastic Beanstalk.

Crie uma tabela com as seguintes configurações:

  • Table name (Nome da tabela): nodejs-tutorial

  • chave primária: email

  • Tipo de chave primária: string

Como criar uma tabela do DynamoDB
  1. Abra a página Tables (Tabelas) no console de gerenciamento do DynamoDB.

  2. Escolha Create table.

  3. Digite um nome de tabela e chave primária.

  4. Escolha o tipo de chave primária.

  5. Escolha Criar.

Atualizar os arquivos de configuração do aplicativo

Atualize os arquivos de configuração na origem do aplicativo para usar a tabela nodejs-tutorial em vez de criar uma nova.

Para atualizar o aplicativo de exemplo para uso em produção
  1. Altere seu diretório de trabalho atual para o diretório do aplicativo nodejs-example-dynamo.

    ~$ cd nodejs-example-dynamo
  2. Abra .ebextensions/options.config e altere os valores das configurações a seguir:

    • NewSignupEmail: seu endereço de e-mail.

    • STARTUP_SIGNUP_TABLE: nodejs-tutorial

    exemplo .ebextensions/options.config
    option_settings: aws:elasticbeanstalk:customoption: NewSignupEmail: you@example.com aws:elasticbeanstalk:application:environment: THEME: "flatly" AWS_REGION: '`{"Ref" : "AWS::Region"}`' STARTUP_SIGNUP_TABLE: nodejs-tutorial NEW_SIGNUP_TOPIC: '`{"Ref" : "NewSignupTopic"}`' aws:elasticbeanstalk:container:nodejs: ProxyServer: nginx aws:elasticbeanstalk:container:nodejs:staticfiles: /static: /static aws:autoscaling:asg: Cooldown: "120" aws:autoscaling:trigger: Unit: "Percent" Period: "1" BreachDuration: "2" UpperThreshold: "75" LowerThreshold: "30" MeasureName: "CPUUtilization"

    Isso aplica as seguintes configurações para o aplicativo:

    • O endereço de e-mail que o tópico do Amazon SNS usa para notificações é definido como seu endereço ou aquele que você insere no arquivo options.config.

    • A tabela nodejs-tutorial será usada em vez da criada por .ebextensions/create-dynamodb-table.config.

  3. Remover .ebextensions/create-dynamodb-table.config.

    ~/nodejs-tutorial$ rm .ebextensions/create-dynamodb-table.config

    Na próxima vez que você implantar o aplicativo, a tabela criada por esse arquivo de configuração será excluída.

  4. Implante o aplicativo atualizado em seu ambiente Elastic Beanstalk com o comando eb deploy.

    ~/nodejs-example-dynamo$ eb deploy
  5. Quando a criação do ambiente for concluída, use o comando eb open para abrir o URL do ambiente no navegador padrão.

    ~/nodejs-example-dynamo$ eb open

Quando você implanta, o Elastic Beanstalk atualiza a configuração do tópico do Amazon SNS e exclui a tabela do DynamoDB que ele criou quando a primeira versão da aplicação foi implantada.

Agora, quando você encerrar o ambiente, a tabela nodejs-tutorial não será excluída. Isso permite que você realize implantações azul/verde, modifique os arquivos de configuração ou desative seu site sem o risco de perda de dados.

Abra seu site em um navegador e verifique se o formulário funciona como esperado. Crie alguma entradas e, depois, verifique o console do DynamoDB para verificar a tabela.

Para visualizar a tabela
  1. Abra a página Tables (Tabelas) no console do DynamoDB.

  2. Encontre a tabela nodejs-tutorial.

  3. Selecione a tabela, escolha Items e Start search para visualizar todos os itens na tabela.

Você também pode ver que o Elastic Beanstalk excluiu a tabela que foi criada anteriormente.

Configurar seu ambiente para alta disponibilidade

Por fim, configure o grupo de Auto Scaling do seu ambiente com uma contagem mínima de instâncias mais alta. Execute pelo menos duas instâncias o tempo todo para impedir que os servidores Web em seu ambiente sejam um ponto único de falha e para permitir que você implante alterações sem colocar seu site fora do serviço.

Para configurar o grupo de Auto Scaling de seu ambiente para alta disponibilidade
  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 Capacity (Capacidade), escolha Edit (Editar).

  5. Na seção Auto Scaling group (Grupo de Auto Scaling) defina Min instances (Mínimo de instâncias) como 2.

  6. Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.

Limpeza

Ao terminar de trabalhar com o Elastic Beanstalk, você pode encerrar o ambiente. O Elastic Beanstalk termina todos os recursos da AWS associados ao seu ambiente, como instâncias do Amazon EC2, instâncias de banco de dados, balanceadores de carga, grupos de segurança e alarmes.

Para encerrar seu ambiente Elastic Beanstalk do console
  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. Escolha Actions (Ações) e depois Terminate Environment (Encerrar ambiente).

  4. Use a caixa de diálogo na tela para confirmar o encerramento do ambiente.

Com o Elastic Beanstalk, é possível criar facilmente um ambiente para a aplicação a qualquer momento.

Você também pode excluir as tabelas externas do DynamoDB que você criou.

Como excluir uma tabela do DynamoDB
  1. Abra a página Tables (Tabelas) no console do DynamoDB.

  2. Selecione uma tabela.

  3. Escolha Actions e, em seguida, escolha Delete table.

  4. Escolha Excluir.

Próximas etapas

O aplicativo de exemplo usa os arquivos de configuração para definir as configurações de software e criar recursos da AWS como parte do seu ambiente. Consulte Personalização avançada de ambiente com arquivos de configuração (.ebextensions) para obter mais informações sobre os arquivos de configuração e seu uso.

O aplicativo de exemplo para este tutorial usa a framework da Web Express para Node.js. Para obter mais informações sobre o Express, consulte a documentação oficial em expressjs.com.

Por fim, se você planeja usar seu aplicativo em um ambiente de produção, configure um nome de domínio personalizado para seu ambiente e habilite o HTTPS para conexões seguras.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.