Skip to content

IKauedev/terra-form-simulation-localstack-aws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🌩️ Projeto de Infraestrutura Local com LocalStack + Terraform

Este projeto simula um ambiente AWS completo localmente usando LocalStack e Terraform. Ideal para testar sua aplicação com S3, SQS, Lambda, DynamoDB, etc., sem custos e sem depender da nuvem real.


📦 Estrutura do Projeto

projeto-infra-local/
├── docker-compose.yml     # LocalStack rodando como container
├── infra/                 
│   ├── main.tf
│   ├── provider.tf
├── app/
│   └── src/...
└── README.md

🚀 O que é provisionado?

Neste exemplo inicial:

  • 🪣 S3 Bucket: meu-bucket-local
  • 📬 SQS Queue: fila-local
  • (Você pode adicionar Lambda, DynamoDB, API Gateway, etc.)

🛠️ Pré-requisitos

Você precisa ter instalado:


🐳 Subindo o LocalStack com Docker

docker-compose up -d

Isso vai rodar o LocalStack na porta 4566 com os serviços AWS simulados.


⚙️ Criando a Infra com Terraform

  1. Entre na pasta de infraestrutura:
cd infra/
  1. Inicialize o Terraform:
terraform init
  1. Aplique a infraestrutura:
terraform apply

Confirme com yes. Isso criará os recursos (S3, SQS, etc.) no LocalStack.


🧪 Testando os recursos com AWS CLI

Listar buckets S3:

aws --endpoint-url=http://localhost:4566 s3 ls

Ver filas SQS:

aws --endpoint-url=http://localhost:4566 sqs list-queues

🧩 Conectando sua aplicação

Python (boto3)

import boto3

s3 = boto3.client(
    "s3",
    region_name="us-east-1",
    endpoint_url="http://localhost:4566",
    aws_access_key_id="test",
    aws_secret_access_key="test"
)

print(s3.list_buckets())

Node.js (AWS SDK v3)

import { S3Client } from "@aws-sdk/client-s3";

const s3 = new S3Client({
  region: "us-east-1",
  endpoint: "http://localhost:4566",
  credentials: {
    accessKeyId: "test",
    secretAccessKey: "test",
  },
  forcePathStyle: true,
});

Java (AWS SDK v2)

S3Client s3 = S3Client.builder()
    .endpointOverride(URI.create("http://localhost:4566"))
    .region(Region.US_EAST_1)
    .credentialsProvider(
        StaticCredentialsProvider.create(
            AwsBasicCredentials.create("test", "test")
        )
    )
    .build();

🎯 Usando variáveis de ambiente

Para facilitar a alternância entre produção e local, use variáveis:

export AWS_ENDPOINT=http://localhost:4566

E no código, use AWS_ENDPOINT se estiver definido, ou padrão da AWS se não estiver.


☁️ Indo para produção

Quando quiser aplicar na AWS real:

  1. Remova os endpoints do provider.tf
  2. Configure suas credenciais reais (IAM)
  3. Rode terraform apply novamente

🧼 Limpando tudo

terraform destroy
docker-compose down -v

📌 Dica final

Você pode adicionar qualquer serviço da AWS no SERVICES= do docker-compose.yml, como:

environment:
  - SERVICES=s3,sqs,dynamodb,lambda,apigateway,iam,cloudwatch

About

enviroment develop terraform is localstack aws

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages