DEV Community

Cover image for Simulando um ambiente AWS com LocalStack
Gilson Silva
Gilson Silva

Posted on

Simulando um ambiente AWS com LocalStack

Se você está desenvolvendo aplicações que utilizam serviços da AWS, mas deseja evitar custos ou a complexidade de configurar recursos diretamente na nuvem, o LocalStack é uma excelente solução. Ele permite simular um ambiente AWS localmente, oferecendo suporte a diversos serviços como S3, Lambda, DynamoDB, entre outros. Neste artigo, vamos explorar como configurar e usar o LocalStack para simular um ambiente AWS.


O que é o LocalStack?

O LocalStack é uma ferramenta que emula serviços da AWS em um ambiente local. Ele é amplamente utilizado para desenvolvimento e testes, permitindo que você crie, configure e interaja com recursos da AWS sem precisar de uma conta ou conexão com a nuvem.


Passo a Passo para Configurar o LocalStack

1. Pré-requisitos

Antes de começar, certifique-se de ter os seguintes itens instalados:

  • Docker: O LocalStack é executado como um contêiner Docker.
  • AWS CLI: Para interagir com os serviços simulados.
  • LocalStack CLI (opcional): Para gerenciar o LocalStack de forma mais eficiente.

2. Instalando o LocalStack

Execute o seguinte comando para iniciar o LocalStack usando Docker:

docker run --rm -it -p 4566:4566 -p 4571:4571 localstack/localstack
Enter fullscreen mode Exit fullscreen mode

Isso iniciará o LocalStack e disponibilizará os serviços na porta 4566.


3. Configurando a AWS CLI

Configure a AWS CLI para apontar para o LocalStack:

aws configure

Access Key ID: test
Secret Access Key: test
Default region: us-east-1
Output format: json
Enter fullscreen mode Exit fullscreen mode

Em seguida, adicione o endpoint do LocalStack ao executar comandos. Por exemplo:

aws s3 ls --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

4. Criando Recursos Simulados

Agora você pode criar e interagir com recursos simulados. Por exemplo, para criar um bucket S3:

aws s3api create-bucket --bucket my-local-bucket --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

Para listar os buckets:

aws s3api list-buckets --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

5. Testando Funções Lambda

Você também pode testar funções Lambda localmente. Primeiro, crie uma função Lambda simulada:

aws lambda create-function \
  --function-name my-function \
  --runtime python3.8 \
  --role arn:aws:iam::123456789012:role/execution_role \
  --handler lambda_function.lambda_handler \
  --code S3Bucket=my-local-bucket,S3Key=lambda-code.zip \
  --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

Vantagens do LocalStack

  • Custo Zero: Evita custos associados ao uso de serviços reais da AWS.
  • Desenvolvimento Offline: Ideal para ambientes sem conexão com a internet.
  • Rápida Configuração: Recursos podem ser criados e destruídos rapidamente.
  • Integração com Ferramentas: Funciona bem com ferramentas como Terraform, AWS CLI e SDKs.

Exemplo de Configuração Completa

Aqui está um exemplo de configuração completa para simular um ambiente AWS com LocalStack:

Dockerfile

FROM public.ecr.aws/docker/library/node:21-slim

RUN npm install -g npm@latest --loglevel=error
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --loglevel=error
COPY . .

RUN NODE_OPTIONS=--openssl-legacy-provider REACT_APP_API_URL=http://localhost:4566 SKIP_PREFLIGHT_CHECK=true npm run build --prefix client
RUN mv client/build build
RUN rm -rf client/*
RUN mv build client/

EXPOSE 8080
CMD [ "npm", "start" ]


Buildspec para Testes

version: 0.2
phases:
install:
commands:
- echo Installing Node 21 e npm.....
- curl -fsSL https://rpm.nodesource.com/setup_21.x | sudo bash -
- sudo yum install -y nodejs
build:
commands:
- echo Build iniciado em date
- npm install --loglevel=error
- REACT_APP_API_URL=http://localhost:3001 SKIP_PREFLIGHT_CHECK=true npm run build --prefix client
- echo Rodando testes unitários.....
- npm test
- echo Testes unitários concluídos em date


Conclusão

O LocalStack é uma ferramenta poderosa para simular serviços da AWS localmente, permitindo que desenvolvedores testem e validem suas aplicações sem depender de um ambiente real. Com ele, você pode economizar tempo e dinheiro enquanto mantém a flexibilidade de trabalhar com os serviços da AWS.

Para mais informações, visite o site oficial do LocalStack: https://www.localstack.cloud

Top comments (0)