Funções Serverless em JavaScript: 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: O que é Serverless e AWS Lambda?

\n\n

Serverless (computação sem servidor) é um modelo de computação em nuvem onde o desenvolvedor abstrai completamente o gerenciamento da infraestrutura de servidores. Você simplesmente escreve o código, o envia para a nuvem, e o provedor (AWS, Google Cloud, Azure) o executa automaticamente em resposta a eventos, escalando recursos sob demanda. Você paga apenas pelo tempo real de execução do código (e pelo número de requisições).

\n\n

AWS Lambda é o serviço serverless flagship da Amazon Web Services. Ele permite executar código em várias linguagens, incluindo JavaScript (Node.js), sem a necessidade de provisionar e gerenciar servidores. Lambda é ideal para processar requisições HTTP (via API Gateway), tarefas em segundo plano, processamento de arquivos do S3, reações a alterações no banco de dados DynamoDB e muitos outros cenários.

\n\n

Neste artigo, abordaremos AWS Lambda em JavaScript do A ao Z: desde a criação da primeira função até seu deploy, monitoramento e otimização.

\n\n

Parte principal: Criação e gerenciamento de funções Lambda em Node.js

\n\n

1. Criando sua primeira função Lambda

\n\n

Acesse o console AWS Lambda e clique em "Criar função". Selecione a opção "Do zero". Dê um nome (por exemplo, my-first-lambda) e escolha o ambiente de execução Node.js 20.x (ou a versão estável mais recente).

\n\n

A estrutura básica de uma função em Node.js é assim:

\n\n
exports.handler = async (event, context) => {\n    // event - dados passados para a função (ex: requisição HTTP)\n    // context - informações sobre o ambiente de execução (ex: ID da requisição)\n\n    console.log('Evento recebido:', JSON.stringify(event, null, 2));\n\n    // Sua lógica de negócio\n    const response = {\n        statusCode: 200,\n        body: JSON.stringify({\n            message: 'Olá do Lambda!',\n            input: event\n        }),\n    };\n\n    return response; // AWS Lambda espera o retorno de um valor\n};\n
\n\n

Neste exemplo simples, a função recebe um evento e retorna uma resposta JSON. Se a função for chamada via API Gateway, o event conterá o método HTTP, cabeçalhos, corpo da requisição, etc.

\n\n

Importante: Sempre use async/await para operações assíncronas (consultas a banco de dados, APIs). Se a função não for assíncrona, ela deve retornar uma Promise ou usar callback.

\n\n

2. Triggers e integrações

\n\n

O poder do Lambda se revela através dos triggers — eventos de outros serviços AWS que acionam sua função. Vamos ver três opções mais populares em JavaScript.

\n\n

2.1. Requisições HTTP via API Gateway

\n

Este é o cenário mais comum para criar APIs REST. Você anexa à Lambda o trigger API Gateway. Neste caso, o event conterá a estrutura da requisição HTTP. Exemplo de processamento:

\n\n
exports.handler = async (event) => {\n    const httpMethod = event.httpMethod;\n    const path = event.path;\n    const queryParams = event.queryStringParameters || {};\n    const body = event.body ? JSON.parse(event.body) : {};\n\n    console.log(`Método: ${httpMethod}, Caminho: ${path}`);\n\n    if (httpMethod === 'GET' && path === '/hello') {\n        return {\n            statusCode: 200,\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify({ message: `Olá, ${queryParams.name || 'mundo'}!` })\n        };\n    }\n\n    return {\n        statusCode: 404,\n        body: JSON.stringify({ error: 'Not Found' })\n    };\n};\n
\n\n

2.2. Processamento de arquivos do S3

\n

Lambda pode ser acionada automaticamente ao fazer upload ou excluir arquivos em um bucket S3. Isso é ideal para criar miniaturas de imagens, converter vídeos ou indexar dados.

\n\n
const AWS = require('aws-sdk');\nconst s3 = new AWS.S3();\n\nexports.handler = async (e                

Blogs

Book Recommendations