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/

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more