Guia Prático: Como Implantar Uma Aplicação Web Completa em 7 Serviços

Neste guia prático, você aprenderá a criar um aplicativo com funcionalidade de compartilhamento de caronas (para unicórnios!), extraído do projeto de amostra Wild Rydes. Utilizaremos sete serviços diferentes – GitHub, Amplify, Cognito, Lambda, IAM, API Gateway e DynamoDB – explicando por que e onde usá-los, e como fazê-los trabalhar em conjunto. À medida que avançamos, construiremos cada serviço, dando a eles a funcionalidade de compartilhamento de caronas para o aplicativo. O objetivo é fornecer um passo a passo detalhado para que você possa implementar sua própria Web application na AWS.

Esta aplicação é implementada no Amazon Amplify, integrado com o repositório GitHub para o pipeline CI/CD. O user pool do Amazon Cognito é usado para autenticação de usuários para se inscreverem ou fazerem login no aplicativo usando nome de usuário ou e-mail, senha e confirmação de senha. O IAM é usado para dar ao Lambda o acesso de gravação à tabela DynamoDB, e o Lambda é usado para colocar itens (dados do usuário) nos logs da tabela DynamoDB. O API Gateway é usado como API Rest, o que ajuda o usuário a invocar a função Lambda para o Unicorn Ride.

Pré-requisitos para criar sua Web application na AWS

Para seguir este projeto, você precisará de:

  1. Um editor de texto (notepad) para anotar IDs, ARN, etc.
  2. Uma conta AWS, logada no Console AWS como um usuário IAM.
  3. Algum conhecimento básico de AWS é preferível, mas você ainda pode acompanhar se for um iniciante absoluto.
  4. Uma conta GitHub e o código do meu repositório GitHub: https://github.com/JosephHonpah/end-to-end-web-app

Visão arquitetural da aplicação: https://main.d2i8yld6dviyk2.amplifyapp.com/

Como copiar o código da aplicação do repositório GitHub

Criando uma nova Web app no AWS Amplify

  • Navegue até o AWS Management Console e procure por Amplify e clique em AWS Amplify.

  • Clique em Deploy an app abaixo para construir a aplicação web.

  • Clique em GitHub, porque o código da aplicação está armazenado no repositório GitHub que você criou acima.

  • Você precisa selecionar sua conta github, que é JosephHonpah para mim.

  • Faça login na sua conta GitHub e clique em confirm.

  • Após o login bem-sucedido, você precisa selecionar o repositório no qual armazenou seu código. Você pode enviar todos os repositórios para o Amplify e selecionar a partir do Amplify, mas é melhor clicar em Only select repositories e escolher o repositório que você deseja construir no Amplify.

  • Role para baixo e clique em next.

  • Nas configurações do aplicativo, deixe tudo como padrão e role para baixo, clique em next.

  • Revise e clique em save and deploy.

  • O Amplify está sendo implementado e pode levar 2 minutos ou mais, dependendo da largura de banda da rede.

  • A aplicação agora pode ser acessada a partir do repositório GitHub usando o nome de domínio Amplify fornecido acima. Ok, vamos lá…

Autenticação de usuários

Você precisa de usuários autenticados para se registrarem e fazerem login na sua aplicação de forma segura e bem-sucedida. Para isso, usaremos o user pool do Amazon Cognito com os seguintes passos abaixo:

  • Navegue mais uma vez até a barra de pesquisa no management console, procure por cognito e abra em uma nova aba.

  • Clique em create user pool.

  • Coloque o nome do cognito user pool app client. Pode ser qualquer nome, mas certifique-se de ter um notepad para anotar.

  • Selecione o tipo de configuração. Como você quer que os usuários se registrem e façam login na sua aplicação e selecionem os atributos. Role para baixo e clique em create.

  • Clique em User pool e certifique-se de copiar o User pool ID para o notepad. Porque você precisa adicionar configurações ao seu código para autenticação à sua aplicação.

  • No canto esquerdo da página, clique em App clients e copie o Client-ID e coloque no notepad.

  • Navegue até seu repositório github no diretório js/config.js e adicione o user pool ID, o client ID e a região AWS que você copiou e colou no note pad.

  • Uma vez feito isso, clique em commit changes no canto superior esquerdo e o Amplify irá implementar automaticamente as alterações feitas no seu código, já que é um serviço de pipeline CI/CD serverless.

  • De volta à aplicação, clique em sign up e registre-se com e-mail e senha, clique em LET’S RYDE.

  • Coloque o código no e-mail e clique em Verify. Você deverá ser capaz de obter o código do Amazon cognito e a mensagem de Verification successful do AWS Amplify, o que significa que o usuário está pronto para ir e fazer login na aplicação.

  • Uma vez logado com as credenciais, você recebe um token e você copia e coloca isso no notepad também para uso futuro. Este token será necessário para invocar o API Gateway para que os usuários façam chamadas de API para corridas de qualquer local no mapa.

Armazenamento de credenciais com DynamoDB

Aqui vamos ver como usar o DynamoDB para armazenar as credenciais dos usuários, pedidos, etc. E o Lambda será um bom serviço para armazenar automaticamente esses detalhes no DynamoDB.

  • Crie uma tabela dynamoDB digitando dynamodb na barra de pesquisa. Clique nela e crie uma tabela.

  • Dê um nome à tabela e um nome de partion key, que será usado para recuperar itens da sua tabela e alocar dados entre os hosts para escalabilidade e disponibilidade. Role para baixo e crie a tabela.

  • Uma vez criada a tabela, clique na tabela, role para baixo e clique em additional Info. Você precisa copiar e colar o ARN da tabela e colar no notepad.

  • Você precisa dar ao Lambda a permissão para escrever no dynamoDB sempre que um usuário se inscreve, faz login, pede uma corrida, detalhes da corrida, etc. Isso será feito no AWS Identity Access Management (IAM). Abra o IAM em uma nova aba a partir do AWS Management Console.

  • Clique em Roles e crie um role.

  • O tipo de entidade confiável deve ser AWS service e o caso de uso deve ser lambda, role para baixo e clique em next.

  • Adicione permissão ao role AWSLambdaBasicExecutionRole.

  • Dê um nome ao lambda role e role para baixo, clique em create role.

  • Após a criação do role, clique em role (webapp2025_lambda) e clique em Add permissions para criar uma Inline policy para o dynamoDB.

  • O caso de uso deve ser DynamoDB e precisamos, para melhor prática, dar permissão para que o lambda coloque itens na tabela dynamodb criada acima.

  • Role para baixo e clique em Add ARNs to restrict access.

  • Clique em Text e cole o ARN da tabela dynamodb que você criou e copiou acima do notepad. Clique em Add ARNs e prossiga para Next.

  • Revise e dê um nome à policy. Role para baixo e prossiga para criar a policy.

Função Lambda para a Web application na AWS

A função Lambda agora é necessária para realizar a mágica na aplicação. Então, mais uma vez, navegue até a barra de pesquisa, procure por lambda e abra em uma nova aba, clique em create function.

  • Autorize a partir do zero e dê um nome à função lambda e eu vou com Node.js 20 x, porque meu código no repositório está configurado para Node.js 20 x e role para baixo.

  • Adicione permissões à função lambda que foi criada acima no IAM. Clique em Use an existing role e selecione o role criado. Role para baixo e clique em create function.

  • Uma vez criada a função, role para baixo, copie e cole o código lambda do repositório github criado desde o início no editor de código lambda e inclua o nome da tabela dynamodb que você criou acima no código, então proceda para Deploy.

  • Na página esquerda, clique em create new event para testar se a função lambda está funcionando corretamente. Dê o nome do evento e role para baixo até o Event Json.

Categories Aplicações Tags , , , ,

Leave a Comment

Exit mobile version