Testar Funções Lambda Localmente com Serverless Framework e Postman

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

  1. Instale o Serverless Framework (caso ainda não tenha):

    npm install -g serverless
    
  2. Instale as dependências do projeto:

    npm install
    
  3. Adicione o plugin serverless-offline ao seu projeto:

    npm install serverless-offline --save-dev
    
  4. Configure o arquivo serverless.yml para usar o plugin:

    Certifique-se de que o arquivo serverless.yml inclui o plugin serverless-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 o serverless-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

  1. Crie uma nova requisição no Postman.

  2. Defina o método HTTP: POST

  3. Defina a URL: http://localhost:3000/2012-11-05/queues/BroadcastSendQueue

  4. Adicione os Headers:

    • Content-Type: application/json
  5. 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.

  6. Clique em "Send".


Configuração Adicional: Plugin serverless-offline-sqs

Para emular melhor o comportamento do SQS, recomendamos usar o plugin serverless-offline-sqs.

  1. Instale o plugin:

    npm install serverless-offline-sqs --save-dev
    
  2. Adicione o plugin no arquivo serverless.yml:

    plugins:
      - serverless-webpack
      - serverless-webpack-prisma
      - serverless-offline
      - serverless-offline-sqs
    
  3. Configure o SQS no custom do serverless.yml:

    custom:
      serverless-offline-sqs:
        autoCreate: true
        endpoint: http://localhost:9324
        region: us-east-1
    
  4. 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

Você achou esse artigo útil?