DEV Community

Kleber Bonassi
Kleber Bonassi

Posted on

Localstack, a "AWS" local para desenvolvimento em cloud

Neste artigo vamos abordar a Localstack, que simula localmente alguns dos serviços da cloud AWS.

Assim como o uso de containers tornou-se um padrão de ambiente para desenvolvimento de software desde alguns anos atrás, creio que podemos dizer o mesmo da Localstack quando o foco é o desenvolvimento para a cloud AWS.

A Localstack é um conjunto de ferramentas que simula o ambiente cloud AWS, com isto podemos desenvolver e testar localmente soluções como microsserviços ou funções, acessando serviços existentes na AWS, em nossa própria máquina para então quando estiver tudo ok, fazer o deploy na cloud AWS.

A maneira que considero mais fácil e rápida para termos a Localstack rodando, é fazendo uso da imagem oficial para containers. Para isso podemos criar um arquivo com o nome compose.yml para o Podman com o conteúdo abaixo:

version: "3.8"

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack:1.3.1
    ports:
      - "127.0.0.1:4566:4566"            # LocalStack Gateway
      - "127.0.0.1:4510-4559:4510-4559"  # external services port range
    environment:
      - DEBUG=${DEBUG-}
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
Enter fullscreen mode Exit fullscreen mode

Aqui estou usando o gerenciador de containers Podman, caso você utilize o Docker nomeie o arquivo acima como docker-compose.yml

E então via podman-compose subir o container com o comando:

podman-compose up -d
Enter fullscreen mode Exit fullscreen mode

Novamente, se você usa Docker substitua no comando acima podman-compose por docker-compose

Certo, agora temos a Localstack operante em nossa máquina local, mas como podemos interagir com ela? Bem, da mesma forma que interagimos com a cloud AWS. Pode ser pela AWS CLI, por AWS SDK e outra forma que muitas pessoas gostam é através de uma console web e para isso temos uma console disponível, onde você pode fazer um cadastro gratuito e então essa console web interage com a sua Localstack rodando na sua máquina local. Alguns "serviços" requerem uma assinatura paga para utilização, mas vários serviços trivais são gratuitos.

Para a instalação do AWS CLI, que é super fácil, você pode seguir o tutorial da própria AWS, link nas referências ao final do artigo.

Creio que seja uma boa prática você criar um perfil próprio para a Localstack pois facilita a separação do seu Localstack para uma possível conta na cloud AWS e você pode criar este perfil com o comando abaixo:

aws configure --profile localstack
Enter fullscreen mode Exit fullscreen mode

Sugestão de preenchimento dos valores que são pedidos na criação do perfil:

AWS Access Key ID [None]: teste_access_id
AWS Secret Access Key [None]: teste_access_secret
Default region name [None]: us-east-1
Default output format [None]: json
Enter fullscreen mode Exit fullscreen mode

Agora para testar vamos criar um bucket S3 na nossa Localstack:

aws s3api create-bucket \
    --endpoint=http://localhost:4566 \
    --bucket meu-bucket \
    --profile localstack
Enter fullscreen mode Exit fullscreen mode

A saída deste comando deverá ser:

{
    "Location": "/meu-bucket"
}
Enter fullscreen mode Exit fullscreen mode

E para listarmos nossos buckets S3 utilizamos o comando abaixo:

aws s3 ls \
    --endpoint=http://localhost:4566 \
    --profile localstack
Enter fullscreen mode Exit fullscreen mode

E teríamos uma saída como:

2023-11-05 15:20:06 meu-bucket
Enter fullscreen mode Exit fullscreen mode

Era isso que eu queria trazer neste artigo, mostrar mesmo que de forma superficial o poder e a utilidade da Localstack para podermos desenvolver e testar localmente antes de subirmos para a cloud AWS.

Referências

  1. https://localstack.cloud/
  2. https://github.com/localstack/localstack
  3. https://docs.aws.amazon.com/pt_br/cli/latest/userguide/getting-started-install.html
  4. https://docs.aws.amazon.com/cli/latest/reference/
  5. https://app.localstack.cloud/sign-in/

Top comments (0)