Funções Serverless em TypeScript: AWS Lambda do zero

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução às funções Serverless em TypeScript



A computação Serverless (sem servidor) muda radicalmente a abordagem de desenvolvimento e implantação de aplicações. Em vez de gerenciar servidores, os desenvolvedores se concentram exclusivamente na escrita de código. AWS Lambda é o serviço líder para criar funções serverless, e TypeScript adiciona a confiabilidade da tipagem estática.



Neste artigo, vamos detalhar como criar, configurar e implantar uma função serverless em TypeScript usando AWS Lambda. Você aprenderá a escrever código eficiente, processar eventos e integrar o Lambda com outros serviços AWS.



O que é AWS Lambda e por que TypeScript?



Fundamentos do AWS Lambda



AWS Lambda é um serviço de computação que executa seu código em resposta a eventos e gerencia automaticamente os recursos computacionais. Você paga apenas pelo tempo de execução efetivamente utilizado (arredondado para 1 ms).



Principais características:

  • Arquitetura orientada a eventos — a função é executada quando um evento ocorre (requisição HTTP, upload de arquivo no S3, alteração no DynamoDB)
  • Escalonamento automático — de uma requisição a milhares simultaneamente
  • Suporte a múltiplas linguagens — Node.js (TypeScript), Python, Java, Go, .NET
  • Limite gratuito — 1 milhão de requisições por mês (dentro do Free Tier)


Vantagens do TypeScript para Lambda



TypeScript é uma extensão do JavaScript que adiciona tipagem estática. Para funções serverless, isso oferece:

  • Menos erros em tempo de execução — o compilador detecta incompatibilidades de tipos antes da implantação
  • Melhor documentação do código — os tipos servem como autodocumentação
  • Suporte a recursos modernos — async/await, decoradores, genéricos
  • Integração com AWS SDK — tipos completos para todos os serviços AWS


Criação e configuração de uma função Lambda em TypeScript



Passo 1: Inicialização do projeto



Vamos criar um novo projeto e instalar as dependências necessárias:



mkdir my-lambda-functioncd my-lambda-functionnpm init -ynpm install --save-dev typescript @types/node aws-sdknpm install --save-dev @types/aws-lambda


Passo 2: Configuração do TypeScript



Crie o arquivo tsconfig.json:



{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "lib": ["ES2020"],    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true,    "forceConsistentCasingInFileNames": true,    "resolveJsonModule": true,    "declaration": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist"]}


Passo 3: Escrita da função Lambda



Crie o diretório src e o arquivo src/handler.ts:



import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';

interface UserData { userId: string; name: string; email: string;}

export const handler = async ( event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log('Event:', JSON.stringify(event, null, 2)); console.log('Context:', context);

try { // Parsing do corpo da requisição const body: UserData = JSON.parse(event.body || '{}');

// Validação dos dados if (!body.userId || !body.name || !body.email) { return { statusCode: 400, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify({ message: 'Missing required fields: userId, name, email' }) }; }

Blogs

Book Recommendations