Funções Serverless em TypeScript: AWS Lambda do A ao Z

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 com AWS Lambda

\n\n

A arquitetura serverless tornou-se o padrão do desenvolvimento moderno em nuvem. O AWS Lambda permite executar código sem gerenciar servidores, e o TypeScript adiciona tipagem estrita e facilidade de desenvolvimento. Neste artigo, abordaremos todo o processo: desde a criação da primeira função até o deploy em produção. Você aprenderá a escrever funções serverless eficientes em TypeScript, trabalhar com triggers e tratar erros.

\n\n

As funções serverless são ideais para microsserviços, processamento de eventos, webhooks e tarefas em segundo plano. O TypeScript torna o código mais seguro e previsível, o que é essencial para soluções em produção.

\n\n

1. Configuração do ambiente para AWS Lambda em TypeScript

\n\n

Antes de começar, instale as ferramentas necessárias. Você precisará do Node.js (versão 18+), npm e AWS CLI.

\n\n

1.1. Instalação de dependências

\n\n
npm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n
\n\n

1.2. Configuração do TypeScript

\n\n

Crie o arquivo tsconfig.json com as configurações para Lambda:

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

1.3. Instalação do AWS CLI

\n\n

Baixe e configure o AWS CLI a partir da fonte oficial. Após a instalação, execute:

\n\n
aws configure\n
\n\n

Insira seu Access Key ID, Secret Access Key, região (por exemplo, us-east-1) e formato de saída (json).

\n\n

2. Criação da primeira função serverless em TypeScript

\n\n

A estrutura do projeto deve ser assim:

\n\n
my-lambda-project/\n├── src/\n│   └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n
\n\n

2.1. Handler básico do Lambda

\n\n

Crie o arquivo src/handler.ts com uma função simples:

\n\n
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface HelloResponse {\n  message: string;\n  timestamp: string;\n  eventType: string;\n}\n\nexport const handler = async (\n  event: APIGatewayProxyEvent,\n  context: Context\n): Promise<APIGatewayProxyResult> => {\n  console.log('Event:', JSON.stringify(event, null, 2));\n  console.log('Context:', context);\n\n  const response: HelloResponse = {\n    message: 'Hello from AWS Lambda with TypeScript!',\n    timestamp: new Date().toISOString(),\n    eventType: event.httpMethod || 'UNKNOWN'\n  };\n\n  return {\n    statusCode: 200,\n    headers: {\n      'Content-Type': 'application/json',\n      'Access-Control-Allow-Origin': '*'\n    },\n    body: JSON.stringify(response)\n  };\n};\n
\n\n

2.2. Compilação do TypeScript

\n\n

Adicione scripts ao package.json:

\n\n
"scripts": {\n  "build": "tsc",\n  "watch": "tsc --watch",\n  "clean": "rm -rf dist"\n}\n
\n\n

Execute a compilação:

\n\n
npm run build\n
\n\n

Verifique se o arquivo handler.js foi criado na pasta dist.

\n\n

3. Deploy da função Lambda na AWS

\n\n

Existem várias formas de fazer deploy. Vamos considerar a mais simples — via AWS CLI.

\n\n

3.1. Empacotamento da função

\n\n

Crie um arquivo ZIP com o código:

\n\n
cd dist\nzip -r ../function.zip .\ncd ..\n
\n\n

3.2. Criação da função Lambda

\n\n

Execute o comando AWS CLI:

\n\n
aws lambda create-function \\\n  --function-name hello-typescript \\\n  --runtime nodejs18.x \\\n  --role arn:aws:iam::Y                

Blogs

Book Recommendations