Olá, pessoal! Quanto tempo hein!? Pois é, o tempo tem sido curto para mim ultimamente, muito trabalho 😒 … mas vamos lá! Sem choro hehe… decidi trazer esse tema aqui no blog pois tenho sido muito exposto aos SAMs ultimamente e tenho tentado divulgar sorrateiramente sua facilidade de uso para engenheiros de software e engenheiros de devsecops.
Pensando bem, eu nunca abordei esse assunto no meu blog, então escrevi este post como uma resenha.
Neste post, irei apresentar os conceitos básicos de SAM (Serverless Application Model), realizando a construção de manifestos, métodos de teste locais e melhores práticas operacionais para que até mesmo usuários iniciantes possam usá-lo com confiança. Espero que o conteúdo deste blog ajude os leitores a entender um pouco mais sobre SAM 😊
Introdução ao AWS SAM | Noções básicas sobre como criar aplicações Serverless
AWS SAM (Serverless Application Model) é uma CLI com estrutura fornecida pela AWS para gerenciar centralmente recursos serverless, como funções Lambda, Amazon API Gateway, Amazon DynamoDB e Amazon S3. Estende o AWS CloudFormation para fornecer uma sintaxe exclusiva que permite declarar concisamente recursos serverless, como funções Lambda e tabelas API Gateway e DynamoDB.
Você pode definir um aplicativo inteiro com um modelo SAM (no formato YAML) e automatizar a compilação e a implantação com os comandos sam build e sam deploy. Isso evita o incômodo de escrever à mão modelos complexos do CloudFormation e aumenta drasticamente a produtividade do desenvolvimento serverless.
Os principais componentes do SAM são os seguintes.
- Arquivo de modelo: configurado por template.yaml. Descreva definições de recursos, parâmetros, resultados, etc.
- Tipo de recurso: AWS::Serverless::Function, AWS::Serverless::Api, AWS::Serverless::SimpleTable, etc.
- Ferramentas CLI: Criação de modelo de projeto com sam init, empacotamento de dependências com sam build, implantação na AWS com sam deploy.
Além disso, usar o comando sam local do SAM CLI facilita o teste e a depuração local, aumentando muito a eficiência do desenvolvimento.
Hello World Lambda + Build API Gateway
Vamos começar criando um aplicativo serverless com uma configuração mínima e verificar se funciona. O procedimento aqui apresentado segue o guia do SAM CLI para formatos interativos, portanto, mesmo pela primeira vez, você não hesitará em prosseguir.
- Criação de projeto
- Selecione o tempo de execução desejado, como Python ou Node.js
- Especifique o nome do projeto e o caminho padrão da API
- Editar modelo
- Recursos de função adicionados e definições de endpoint de API
- Defina variáveis de ambiente e camadas conforme necessário
- Construir
- Armazenando dependências em cache no ambiente local e gerando pacotes reproduzíveis
- Deploys A opção –guiada permite a determinação interativa do bucket S3 e do nome da stack, bem como da região.
Então, vamos seguir em frente.
Instalação do AWS SAM CLI
Se você já possúi esses requisitos instalados, pule essa etapa …
Antes de começarmos a criar aplicações serverless, precisamos instalar o AWS SAM CLI. Vou mostrar como fazer isso nos principais sistemas operacionais.
Pré-requisitos
Antes de instalar o SAM CLI, certifique-se de ter:
- AWS CLI instalado, configurado e autenticado com sua conta de usuário.
- Docker instalado (para testes locais)
- Python 3.7+ ou Node.js 14+ (dependendo da linguagem escolhida)
Windows
Opção 1: Usando o instalador MSI (Recomendado)
- Baixe o instalador MSI oficial:
|
|
-
Execute o instalador e siga as instruções
-
Verifique a instalação:
|
|
Opção 2: Usando Chocolatey
|
|
Opção 3: Usando pip
|
|
Linux (Ubuntu/Debian)
Método 1: Download direto (Recomendado)
|
|
Método 2: Usando pip
|
|
Docker (Qualquer SO)
Se preferir usar Docker sem instalar localmente:
|
|
Verificação da Instalação
Após a instalação, verifique se tudo está funcionando:
|
|
Hello World Lambda + Build API Gateway
1. Criação do projeto (vamos preparar nosso lab)
Quando você executa o sam init, um projeto é criado interativamente.
Desta vez, depois de selecionar 1 - AWS Quick Start Templates > 1 - Hello World Example, crie todos os outros itens usando valores padrão.
No exemplo abaixo, estou utilizando a versão do python “3.12” porque é a qual tenho instalado em meu computador mas … você pode utilizar outra versão:
|
|
Referência do output:
|
|
2. Editar modelo (template.yaml)
Desta vez, usaremos o modelo criado por padrão. Essa é a estutura de arquivos criados dentro do diretório gerado:
|
|
Agora, vamos editar o arquivo gerado: “template.yaml”
3. Edição de código (/hello-world/app.py)
Repare que dentro do diretório: “hello_world”, foi gerado um arquivo python: “app.py”. Pois é, esse é nosso arquivo de código “hello world”, “serveless” em python 😎
Agora vamos editar esse arquivo app.py. Exemplo:
Aqui vou tentar explicar um pouco do que se trata nosso arquivo de código: “app.py gerado pelo nosso querido SAM-CLI:
Este arquivo app.py é uma função AWS Lambda que implementa um endpoint de API REST simples. Aqui está um resumo do que ele faz:
Funcionalidade Principal
- Função Handler:
lambda_handleré o ponto de entrada que o AWS Lambda chama quando a função é executada - API Gateway Integration: Está configurada para trabalhar com API Gateway como proxy, recebendo requisições HTTP e retornando respostas HTTP
O que retorna atualmente
- Status Code: 200 (sucesso)
- Body: JSON com a mensagem “hello world”
- Código comentado: Há uma funcionalidade comentada que faria uma requisição para obter o endereço IP público usando
requests.get("http://checkip.amazonaws.com/")
Estrutura
- Recebe dois parâmetros:
event(dados da requisição) econtext(informações do runtime do Lambda) - Retorna um objeto no formato esperado pelo API Gateway Lambda Proxy
- Inclui documentação detalhada sobre os formatos de entrada e saída
Propósito
É um exemplo básico de uma API serverless que pode ser deployada na AWS usando o SAM (Serverless Application Model), retornando uma simples mensagem “hello world” quando chamada via HTTP.
4. Build && Deploy
Aqui nesse step, repare que as verificações de aplicabilidade do conjunto de alterações são exibidas interativamente durante a implantação. Se não houver problemas, digite y e implante.
|
|
Se tudo ocorrer bem, esse é o output esperado:
|
|
E agora vamos para o deploy:
|
|
Output esperado:
|
|
Agora, quando acesso o endpoint do API Gateway, ele retorna “Hello World”. Os parâmetros podem ser definidos no formato interativo CLI e a implantação inicial pode prosseguir sem hesitação.

Aplicação em funcionamento 😎 Em outro post, detalho um pouco mais sobre como usar o AWS Sam em pipelines de CI/CD. Não sei quando, mas um dia sai hehe 😎
Referência: Guia do Usuário (AWS)
Modelo de aplicativo sem servidor AWS (AWS SAM): https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html