App Back-End de ECommerce criado CDK e linguagem TypeScript
- Visão Geral (Diagrama)
- Gerenciamento de Produtos (Diagrama)
- AWS CloudFormation
- Recursos Utilizados
- AWS IAM (Identity and Access Management)
- AWS Lambda
- AWS Lambda Layers
- AWS API Gateway
- REST API
- WebSocket API
- AWS DynamoDB
- NoSQL
- Stream
- AWS SNS (Simple Notification Service)
- AWS SQS (Simple Queue Service)
- AWS S3 (Simple Storage Service)
- AWS SES (Simple Email Service)
- AWS Event Bridge
- AWS X-Ray
- AWS CloudWatch Alarms
- AWS Cost Explorer
- Resolução de problemas
Processo automatizado que permite gerenciar o provisionamento implantações de infraestrutura da AWS. O AWS CloudFormation permite usar um arquivo de modelo (template) para criar e excluir uma coleção de recursos juntos como uma única unidade (stack)
Unidade única para organizar e gerenciar recursos relacionados entre si.
- Criação do Template em formato JSON ou YAML
- O template é submetido ao CloudFormation
- Stacks são criadas para gerenciar o processo de provisionamento dos recursos
- Recursos são criados sob Stacks
- Framework para criação de recursos na nuvem
- Modela recursos de infraestrutura utilizando linguagens de programação como: TypeScript, JavaScript, Python, Java e C#/.Net e Go, e transforma em modelos (templates) JSON/YAML
- Utiliza bibliotecas públicas da AWS
aws configure
configura a conta com o access key id e o secret access keymkcd project-name && cdk init app --language typescript
cria um novo projeto utilizando o TypeScript para a geração de Templatescdk list
oucdk ls
lista todas as Stacks do Appcdk diff
compara uma Stack especifica com a Stack implantada ou um arquivo de Template local e retorna se alguma diferença for encontradacdk destroy --all
Destroi todas as Stacks disponíveis, e os serviços sob a mesmacdk bootstrap
implanta a Stack do CDK no ambiente AWScdk deploy --all
implanta todas as pilhas disponíveis em sua conta da AWS
Serviço que ajuda a controlar o acesso aos recursos da AWS de forma segura. O IAM é utilizado para controlar quem é autenticado (fez login) e autorizado (tem permissões) a usar os recursos
Recurso de função com concorrência (tratar mais de uma execução ao mesmo tempo), invocada por trigger/evento, executada dentro de um ambiente de execução (NodeJS no caso). O custo é por tempo de execução e memória consumida, logo, otimizações para redução do tempo de execução e memória consumida são prioridades
Recurso para criação de APIs REST e de WebSocket
- Validação de URI
- Validação de verbos HTTP
- Validação do corpo das requisições
- Integração com outros recursos AWS
- Integração com AWS Cognito para autenticação e autorização de usuários
- Gráficos de monitoramento no Cloud Watch
Operação | URL | Verbo HTTP |
---|---|---|
Listar todos os produtos | /products | GET |
Buscar um produto | /productos/{id} | GET |
Criar um produto | /products | POST |
Alterar um produto pelo id | /products/{id} | PUT |
Apagar um produto pelo id | /products/{id} | DELETE |
Recurso de Banco de Dados NoSQL
- Criação de tabelas, sem a necessidade de um servidor
- Armazenar itens baseados em documentos ou chave-valor
- Altamente escalável e com regras de segurança bem definidas
- Pode excluir itens automaticamente baseado em um TTL
- Modo de capacidade de leitura/escrita sob demanda ou provisionamento
- Unidades de leitura e escrita
- Permite a criação de regras de auto scaling (modo provisionado)
- Utilização de chave primária composta traz benefícios em certos cenários, como balanceamento de tráfego de acesso e facilidade de implementação de algumas pesquisas
// Os campos não são rígidos, é preciso respeitar apenas a chave primária
interface Product {
id: string;
name?: string;
model?: string;
productUrl?: string;
code?: string;
price?: number;
[prop: string]: any;
}