top of page

Guia Completo: Como Criar e Testar uma AWS Lambda Localmente com AWS SAM

Lambda com AWS SAM Rodando AWS Lambda Localmente com AWS SAM A AWS Lambda é um serviço de computação serverless que permite executar código sem a necessidade de provisionar servidores. No entanto, testar funções Lambda diretamente na AWS pode ser demorado e custoso, pois cada alteração exige um novo deploy. Para resolver esse problema, podemos rodar e testar a Lambda localmente usando a ferramenta AWS SAM (Serverless Application Model) . Testar localmente ajuda a: Reduzir o tempo de desenvolvimento , evitando a necessidade de múltiplos deploys. Depurar problemas mais rapidamente , já que podemos inspecionar logs localmente . Simular interações com serviços AWS , como API Gateway, DynamoDB, entre outros. Para resolver esses problemas, a AWS disponibiliza o AWS SAM (Serverless Application Model) , uma ferramenta que permite rodar e testar Lambdas localmente  antes de implantá-las na nuvem. O AWS SAM: Emula o ambiente da AWS no seu computador, permitindo testes rápidos. Oferece suporte a interações com API Gateway, DynamoDB, S3 e outros serviços da AWS. Facilita a depuração e logs locais, tornando o desenvolvimento mais eficiente. Permite modificações e reexecução da Lambda sem necessidade de novos deploys. Neste guia, você aprenderá a criar uma AWS Lambda do zero , testá-la localmente com AWS SAM  e, opcionalmente, fazer o deploy para a AWS. Passo 1: Como instalar Instalação no Linux Para instalar o AWS SAM no Linux , siga os passos abaixo: Baixar e instalar o SAM CLI curl -Lo aws-sam-cli-linux-x86_64.zip https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip Extrair o arquivo baixado unzip aws-sam-cli-linux-x86_64.zip -d sam-installation Mover para o diretório correto e dar permissão de execução sudo mv sam-installation /usr/local/aws-sam-cli
sudo ln -s /usr/local/aws-sam-cli/bin/sam /usr/local/bin/sam Verificar se a instalação foi bem-sucedida sam --version Instalação no macOS brew install aws/tap/aws-sam-cli Instalação no Windows Baixe o instalador no site oficial da AWS  e siga as instruções. Passo 2: Criando um novo projeto AWS Lambda usando AWS SAM Criando o projeto Abra um terminal e execute o comando abaixo: sam init Escolha a fonte do template: Isso iniciará um assistente interativo. Selecione a opção 1 - AWS Quick Start Templates dentre as opções abaixo: Which template source would you like to use?
1 - AWS Quick Start Templates
2 - Custom Template Location Escolha um template: Selecione   1 - Hello World Example   (ideal para começar com uma Lambda simples) dentre as opções abaixo: Choose an AWS Quick Start application template

1 - Hello World Example
2 - Multi-step workflow
3 - Serverless API
4 - Scheduled task
5 - Infrastructure event management
6 - Lambda Response Streaming
7 - Multi-service API
8 - Serverless Connectors
9 - GraphQL DynamoDB API
10 - Hello World Example with Powertools Escolha linguagem e empacotamento: Use the most popular runtime and package type? (Python and zip) [y/N]: Digite y para manter Python como linguagem e zip como empacotamento. Ao digitar y e confirmar, a seguinte pergunta será feita: Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: Para o nosso tutorial, não precisaremos habilitar esta função, por isso digite N e prossiga.
4. Habilitar CloudWatch Insights? Would you like to enable monitoring using CloudWatch Application Insights?
For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: Esta etapa é sobre habilitar o CloudWatch Insights, neste caso fica a seu critério. CloudWatch é uma ferramenta poderosa da AWS de observabilidade importante para entender os comportamentos das aplicações. Temos que tomar cuidado com custos extras que podem vir em caso de habilitar ferramentas como estas. A ideia aqui do tutorial é apenas mostrar da maneira mais simples de como criar um Lambda e testa-lo localmente, então sugiro digitar N para não usar esta funcionalidade neste momento. 5. Criando o nome do Projeto Digite o nome do projeto que você deseja criar. Project name [sam-app]: Pronto, após digitar e confirmar, uma pasta com o nome do projeto será criada. No meu caso, o meu projeto se chamará lambda-local . Veja a estrutura de arquivos que foi criado: ├── events │   └── event.json ├── hello_world │   ├── app.py │   ├── __init__.py │   └── requirements.txt ├── __init__.py ├── README.md ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py ├── integration │   ├── __init__.py │   └── test_api_gateway.py ├── requirements.txt └── unit ├── __init__.py └── test_handler.py Não iremos explicar o que são todos estes arquivos, mas iremos alterar o arquivo hello_world/ app.py . Passo 3: Escrever a Função Lambda Abra o arquivo hello_world/ app.py e adicione o código abaixo: import json

def lambda_handler(event, context):
return {
"statusCode": 200,
"body": json.dumps({"message": "Hello, AWS Lambda is running locally!"})
} Passo 4: Testar a Lambda Localmente Agora que temos a função pronta, podemos testá-la sem precisar fazer deploy . Pelo terminal, acesse a pasta onde o projeto foi criado e execute o seguinte comando: sam local invoke HelloWorldFunction Isso simula uma execução da Lambda e retorna a seguinte saída esperada: {
"statusCode": 200,
"body": "{\"message\": \"Hello, AWS Lambda is running locally!\"}"
} Testar a Lambda via API Gateway Local Podemos expor a Lambda como uma API local para testá-la com chamadas HTTP. Inicie o servidor local sam local start-api Executando via curl Agora, abra um navegador ou use curl para testar: curl http://127.0.0.1:3000/hello O retorno esperado será: {
"message": "Hello, AWS Lambda is running locally!"
} Massa demais, é possível transformar o Lambda em uma API e rodar localmente! Alterar o código Agora que você sabe como funciona, você pode alterar o código e simplesmente invocar o Lambda novamente já alterado ou iniciar novamente o serviço caso queira usar a API. Passo 5: Deploy do Lambda Como última etapa, podemos subir o AWS Lambda para AWS tornando um recurso produtivo. Para isso é necessário você já ter uma conta criada e caso não tenha, a AWS oferece contas gratuitas visando que você aprenda mais sobre as ferramentas gratuitamente. Acesse este link para criar.

Mesmo que seja gratuita, é de grande importância que você tome bastante cuidado com esta conta e siga todas as boas práticas para a criação da conta e procure sempre apagar cada recurso após criado, caso seja só para testes. Vamos lá, caso tenha a conta criada. Vamos configurar as credenciais, acesse o terminal e digite o comando abaixo: aws configure
Após digitar, você precisará preencher com os dados das suas chaves de acesso: AWS Access Key ID [****************V66Z]:
AWS Secret Access Key [****************DlN7]: Caso você não tenha estas chaves de acesso, basta acessar o link da AWS com o passo a passo. Após preenchido, basta rodar o seguintes comandos abaixo: sam build
sam deploy --guided Você deverá fazer algumas confirmações até finalizar, mas nada sem muito segredo, bem simples.

Veja o Lambda criado na AWS: Console AWS Lambda Perceba que como gatilho, o API Gateway foi incorporado, habilitando o funcionamento do Lambda como uma API, caso queira usar.

Passo 6: Testando o Lambda Para testar é bem simples, no próprio console da AWS na aba Testar , você consegue executar o Lambda facilmente. Resultado do teste: Passo 7: Apagando o Lambda Caso os testes já tenham finalizado, é importante remover o Lambda para evitar cobranças futuras.
Existem algumas forma de remover o Lambda, ou seja, diretamente no painel do serviço do Lambda ou pelo CloudFormation, que é o serviço de provisionamento de recursos da AWS. Caso queira entender mais sobre este recurso, acesse o post Criando recursos utilizando CloudFormation . Neste caso, o AWS SAM utilizou o CloudFormation para criar o Lambda na AWS, por isso é melhor apagar o recurso pelo próprio CloudFormation.

Na AWS, busque por CloudFormation e irá aparecer os recursos criados ou stacks (pilhas), assim como é chamado cada recurso criado via CloudFormation. Console CloudFormation
Apagando pelo CloudFormation, garantimos que qualquer recurso além do próprio Lambda como roles e etc serão removidos.
Quer Aprender Mais? Inscreva-se na nossa Newsletter semanal! Não perca nossas dicas exclusivas de Tech e Data! Inscreva-se Agora na Newsletter da Coffee & Tips Receba semanalmente: Tutoriais práticos e diretos sobre Engenharia de Software e Dados Insights de tecnologia e notícias da semana

Guia Completo: Como Criar e Testar uma AWS Lambda Localmente com AWS SAM
bottom of page