Este guia explica como configurar e testar funções Lambda localmente utilizando o Serverless Framework, o plugin serverless-offline
e o Postman.
Configuração Básica do Serverless Framework
-
Instale o Serverless Framework (caso ainda não tenha):
npm install -g serverless
-
Instale as dependências do projeto:
npm install
-
Adicione o plugin
serverless-offline
ao seu projeto:npm install serverless-offline --save-dev
-
Configure o arquivo
serverless.yml
para usar o plugin:Certifique-se de que o arquivo
serverless.yml
inclui o pluginserverless-offline
. Exemplo:plugins: - serverless-webpack - serverless-webpack-prisma - serverless-offline
Sua função
broadcast
está configurada para ser acionada por uma fila SQS e utilizar oserverless-offline
.
Executar Localmente o Serverless Offline
Execute o seguinte comando para iniciar o ambiente local:
npm run serverless:offline
Este comando emula o comportamento do API Gateway e do SQS, criando endpoints locais para teste. Você verá algo como:
Serverless: Offline [HTTP] listening on http://localhost:3000
Serverless: Offline [SQS] listening on http://localhost:9324
No caso de funções acionadas por filas SQS, o Serverless cria endpoints HTTP para enviar mensagens manualmente às filas configuradas. Por exemplo:
http://localhost:3000/2012-11-05/queues/BroadcastSendQueue
Explicação sobre a Data no Endpoint
A data 2012-11-05
no endpoint refere-se à data da versão da API do SQS. A AWS lança versões datadas para suas APIs, e essa é a versão específica usada pelo plugin para emular o SQS localmente. Essa configuração é definida internamente pelo plugin serverless-offline-sqs
e não requer alterações por parte do usuário.
Testar com o Postman
Para testar sua função Lambda localmente, siga os passos abaixo:
Configuração da Requisição no Postman
-
Crie uma nova requisição no Postman.
-
Defina o método HTTP:
POST
-
Defina a URL:
http://localhost:3000/2012-11-05/queues/BroadcastSendQueue
-
Adicione os Headers:
Content-Type
:application/json
-
Defina o corpo (Body) no formato JSON. Exemplo:
{ "MessageBody": "{\"key\": \"value\"}" }
O campo
MessageBody
é obrigatório e deve conter a mensagem que será enviada para a fila. -
Clique em "Send".
Configuração Adicional: Plugin serverless-offline-sqs
Para emular melhor o comportamento do SQS, recomendamos usar o plugin serverless-offline-sqs
.
-
Instale o plugin:
npm install serverless-offline-sqs --save-dev
-
Adicione o plugin no arquivo
serverless.yml
:plugins: - serverless-webpack - serverless-webpack-prisma - serverless-offline - serverless-offline-sqs
-
Configure o SQS no
custom
doserverless.yml
:custom: serverless-offline-sqs: autoCreate: true endpoint: http://localhost:9324 region: us-east-1
-
Reinicie o Serverless Offline:
npm run serverless:offline
Verificar a Execução
Ao enviar a mensagem para o endpoint local da fila no Postman, a função Lambda associada (é o caso da função broadcast
) será acionada automaticamente. Confira os logs do terminal onde o serverless offline
está rodando para verificar se a função foi executada corretamente e para depurar quaisquer erros.
Com essas etapas, você pode testar suas funções Lambda localmente antes de implantá-las na AWS.
https://app.cw2tecnologia.com.br/wiki/fab14d4f-c20e-11ef-9dd1-005056481eaa