Ainda implantando funções Lambda manualmente?

meme

Todos nós já passamos por isso: zipando código manualmente, fazendo upload para S3, configurando triggers, configurando API Gateway… é o suficiente para fazer você questionar se serverless realmente vale a pena. Ou pior, escrevendo centenas de linhas de Terraform só para implantar uma função simples.

Conheça o AWS SAM CLI

AWS Serverless Application Model (SAM) CLI resolve boa parte desse pesadelo. É como um Docker Compose para funções Lambda.

# Instalação
brew install aws-sam-cli

A aplicação serverless de 30 segundos

Crie um novo projeto:

sam init

Escolha o “Hello World Example” com Python, e você terá uma estrutura de projeto assim:

my-app/
├── hello_world/
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── events/
│   └── event.json
├── template.yaml
└── tests/

A mágica está no template.yaml, que define toda sua aplicação:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      Events:
        HelloWorld:
          Type: Api
          Properties:
            Path: /hello
            Method: get

Teste localmente (sim, é verdade!)

sam local invoke

Ou inicie uma API local (precisa de Docker):

sam local start-api

Deploy com um único comando

sam deploy --guided

Isso compila seu código, empacota, cria/atualiza a stack do CloudFormation e te dá um endpoint de API. Tudo com um comando!

Dica pro: Use SAM Accelerate para iterações mais rápidas

sam sync --watch

Fica monitorando as alterações nos arquivos e sincroniza com a nuvem automaticamente, sem precisar reimplantar tudo do zero. Na prática, você altera o código e em alguns segundos já tá rodando na AWS.