Treinamento AWS Serverless: Crie aplicações com AWS Lambda e NodeJS

Serviços principais do treinamento: API Gateway, Cognito, AWS Lambda, DynamoDB, CodePipeline, CDK e X-Ray

Sobre o curso:

Se você deseja treinar os colabores da sua empresa sobre como desenvolver aplicações serverless na AWS, você está no lugar certo!

Nesse treinamento são abordados os seguintes recursos e serviços da AWS:

  • AWS Lambda: com funções Lambda é possível executar código sem a necessidade de servidores, para construir aplicações serverless;
  • API Gateway: utilizando o AWS API Gateway é possível proteger os serviços das aplicações com chaves de acesso e quotas, além de fazer validações;
  • AWS Cognito: para adicionar uma camada de autenticação no acesso às APIs da aplicação, basta utilizar o AWS Cognito em conjunto com o API Gateway;
  • CloudWatch: responsável por concentrar os logs das aplicações e métricas dos recursos utilizados;
  • Alarmes do CloudWatch: com os alarmes do CloudWatch será possível monitorar ocorrências anormais de aplicações e recursos;
  • Lambda Insights: com ele é possível agregar informações de monitoramento de aplicações em execução em funções Lambda;
  • DynamoDB: o DynamoDB é um poderoso serviço de gerenciado de banco de dados NoSQL;
  • DynamoDB Stream: com o DynamoDB Stream é possível receber eventos de registros armazenados em tabelas do DynamoDB, sem a necessidade de consultas periódicas;
  • SQS: o SQS, ou Simple Queue Service, é um serviço de filas que permite a comunicação assíncrona entre aplicações, para troca de eventos e mensagens;
  • SNS: com o SNS, ou Simple Notification Service, é possível criar tópicos e publicar mensagens que podem ser recebidas por diversos recursos e aplicações;
  • S3: o S3, ou Simple Storage Service, permite o armazenamento de arquivos sem a necessidade de provisionamento de servidores. Além disso o S3 pode gerar notificações quando arquivos são adicionados a ele;
  • SES: com o SES, ou Simple Email Service, é possível enviar e-mails de forma simples e descomplicada, a partir de aplicações;
  • X-Ray: o X-Ray é um serviço que permite a analise e depuração de aplicações distribuídas;
  • IAM: o Identity Access Management da AWS permite o gerencimento de papéis e permissões atribuídas a usuários e serviços para acessarem outros recursos da AWS;
  • CodePipeline: com o CodePipeline é possível criar uma pipeline de deployment dos serviços e recursos na AWS.

Se você deseja oferecer esse treinamento a seus colaboradores, entre em contato agora mesmo.

Além disso, são utilizadas as seguintes ferramentas, frameworks e linguagens:

  • AWS CDK: utilizando TypeScript como linguagem de programação, o AWS Cloud Development Kit será utilizado para a construção da infraestrutura dos recursos na AWS;
  • NodeJS: esse será a para construção das funções das funções Lambda, utilizando o JavaScript como linguagem;
  • Postman: ele será utilizado para se comportar como cliente dos serviços a serem consumidos;
  • Visual Studio Code: o Visual Studio Code será a IDE onde todos os projetos serão criados.

Projeto do curso:

Durante o curso será criado um projeto de backend para um e-commerce fictício, contendo os seguintes serviços:

  • Cadastro de produtos;
  • Cadastro de pedidos;
  • Importação de arquivos de notas fiscais;
  • Autenticação de usuário;
  • Notificação dos usuários por e-mail;
  • Geração de eventos, como cadastramento de pedidos, produtos e importação de notas fiscais.

A seguir um diagrama simplificado da solução:

Arquitetura de exemplo com AWS Lambda, DynamoDB, API Gateway, Cognito e SES

Esse projeto será utilizado para aplicação prática dos conceitos a serem abordados durante o curso. Dessa forma o aluno poderá construir todo o sistema proposto e monitorá-lo na sua conta da AWS.

Ementa completa do curso:

A seguir os tópicos detalhados da ementa do curso.

a) AWS Lambda:

Nesse tópico serão abordados os seguintes conceitos:

  • Criação de funções e infraestrutura com AWS CDK;
  • Função;
  • Application;
  • Ambiente de execução com NodeJS e Lambda Layers;
  • Triggers;
  • Eventos;
  • Concorrência;
  • Memória e CPU;
  • Tempo de execução;
  • Monitoramento com CloudWatch;
  • Monitoramento com X-Ray;
  • Monitoramento com o CloudWatch Lambda Insights;
  • Execução e invocação síncrona e assíncrona de outra função Lambda;
  • Enfileiramento de execuções do Lambda;
  • Paralelismo de execuções do Lambda;
  • Permissões de acesso a recursos;
  • Log do requestId do Lambda;
  • Log do requestId do API Gateway;
  • Correlação dos requestId do Lambda e do API Gateway;
  • Integração com o AWS API Gateway;
  • Integração com o AWS Cognito;
  • Integração com o AWS SNS;
  • Integração com o AWS SQS;
  • Integração com o AWS S3;
  • Integração com o DynamoDB Stream;
  • Noções de custo de execução.

b) API Gateway:

Nesse tópico serão abordados os seguintes conceitos:

  • Criação e configuração do API Gateway com AWS CDK;
  • Validação de URI;
  • Validação de verbo HTTP;
  • Integração com Lambda;
  • Controle de acesso com API key;
  • Autenticação de usuários com AWS Cognito
  • Quotas e limites de acesso diário;
  • Throttling;
  • Path parameters;
  • Query parameters;
  • Logs no CloudWatch;
  • Noções de custo.

c) DynamoDB:

Os seguintes temas serão abordados sobre DynamoDB:

  • Criação e configuração de tabelas com o AWS CDK;
  • Chave primária composta (partition key e sort key);
  • Pesquisas pela partition key;
  • Pesquisas pela partition key e sort key;
  • Configuração com capacidade provisionada;
  • Configuração com capacidade provisionada e auto-scaling;
  • Configuração com capacidade on-demand;
  • Global Secondary Index;
  • Técnicas de single table;
  • Permissões de acesso baseadas no item;
  • Técnica do consistent read;
  • Como calcular tamanho de itens e capacidade consumida;
  • Noções sobre custo.

d) Simple Notification Service:

Os seguintes temas serão abordados sobre SNS:

  • Criação de tópicos no SNS com o AWS CDK;
  • Publicação de eventos em tópicos do SNS;
  • Inserção de atributos nas mensagens, para filtros de inscrição;
  • Coleta da identificação das mensagens publicadas para tracing distribuído.

e) Simple Queue Service:

Nesse tópico serão abordados os seguintes temas sobre SQS:

  • Consumo de mensagens da fila com funções Lambda;
  • Criação, configuração e inscrição das filas em tópicos do SNS, utilizando o AWS CDK;
  • Monitoramento dos gráficos das filas;
  • Utilização do mecanismo de Dead Letter Queues para capturar falhas de tratamento de mensagens;
  • Filtragem de mensagens baseados em parâmetros que foram publicados no SNS.

f) Simple Storage Service:

Nesse tópico serão abordados os seguintes temas sobre S3:

  • Criação de buckets para importação de arquivos, utilizando o AWS CDK;
  • Configuração de eventos para invocação de funções Lambda, a serem gerados a cada importação de arquivo;
  • Configuração de regras de acesso através de URL pré-assinada.

g) DynamoDB Stream:

Os seguintes temas serão abordados sobre DynamoDB Stream:

  • Configuração do DDB Stream com o AWS CDK, para que inserções, alterações e exclusões de registros gerem eventos;
  • Tratamento de eventos do DDB Stream com funções Lambda, que serão invocadas automaticamente.

h) Alarmes com o CloudWatch:

Aqui serão explicados como criar e monitorar alarmes no CloudWatch baseados em:

  • Logs gerados pelas funções Lambda;
  • Quantidade de mensagens em filas do SQS;
  • Tempo de vida de mensagens em filas do SQS;
  • Invocações concorrentes de lambdas;
  • Métricas de tabelas do DynamoDB.

i) AWS Cognito:

Nesse tópico serão abordados os seguintes temas sobre AWS Cognito:

  • Integração com o AWS API Gateway para autenticação de usuários;
  • Utilização de Lambda triggers para interação no fluxo de autenticação;
  • Autenticação OAuth 2.0 das requisições ao API Gateway;
  • Criação e configuração do user pool com o AWS CDK.

j) Simple Email Service:

Nesse tópico serão abordados os seguintes temas sobre AWS SES:

  • Envio de e-mails através de funções Lambda;
  • Configuração dos recursos utilizando o AWS CDK.

k) AWS CodePipeline:

Os seguintes temas serão abordados sobre AWS CodePipeline:

  • Criação de pipelines para o deployment dos recursos na AWS;
  • Utilização do AWS CDK para geração dos templates de deployment.

l) AWS Identity and Access Management:

Todos os serviços e recursos que forem criados na AWS terão regras de acesso muito bem definidas, através de papéis com políticas de acesso restritas ao que for necessário de ser feito. Tudo isso pode ser obtido com a utilização do AWS IAM, que será configurado durante o processo de criação desses recursos com o AWS CDK.

m) AWS Cloud Development Kit:

Os serviços e recursos que forem criados durante esse curso serão construídos utilizando o AWS CDK, com a linguagem TypeScript. Com ele, esses recursos serão modelados e organizados em stacks do CloudFormation, facilitando a organização e o processo de deployment.

n) AWS X-Ray:

Com o AWS X-Ray será possível criar gráficos, como o exibido a seguir, com a interação entre funções Lambda e recursos da AWS, como o S3 e o DynamoDB.

Gráfico de serviços do X-Ray

Através dos traces do X-Ray, será possível observar a execução das funções Lambda, tendo discriminados exatamente o consumo de tempo em cada operação ou interação com os serviços da AWS, como pode ser visto na figura a seguir:

Traces de execução da função Lambda no X-Ray

Treine os colaboradores da sua empresa:

Esse curso foi construído para oferecer uma experiência prática aos alunos, sem deixar de passar conceitos teóricos.

Turmas e horários flexíveis, de acordo com a necessidade de sua empresa. Entre em contato para maiores informações.

As práticas e conceitos apresentados durante o curso representam o que há de mais moderno na construção de aplicações serverless na AWS.

Quem sou eu, o instrutor:

  • Trabalhei diariamente com as tecnologias apresentadas nesse curso por quase 4 anos, atuando como desenvolvedor de soluções hospedadas na AWS;
  • Tenho lecionado disciplinas de cloud computing, principalmente AWS, em curso de pós-graduação há quase 10 anos;
  • Tenho livros publicados sobre o assunto;
  • Faço parte da comunidade global AWS Community Builder 2020/2021, criada pela própria AWS.