stamatios
← Voltar ao feed
Réplica em miniatura de torre de controle aeroportuária sobre mesa de dev, Floci emula AWS localmente como open source
Open Source

Floci emula AWS localmente com compatibilidade drop-in open source

resumo de ~3 min

O que é o Floci

Floci é um emulador local da AWS, gratuito e de código aberto (licença MIT), destinado a desenvolvimento, testes e CI. Ele expõe serviços com o formato da AWS em http://localhost:4566, sem exigir conta na nuvem, token de autenticação ou desbloqueio de recursos pagos - bastando um docker compose up ou o comando floci start do CLI oficial. Ferramentas existentes como SDKs da AWS, CLI, Terraform, CDK e OpenTofu continuam funcionando apontando para o endpoint local, com credenciais que aceitam valores não vazios quaisquer. O projeto é o membro AWS de uma família de emuladores que também cobre Azure, GCP e OCI (portas 4577, 4588 e 4599).

Por que existe: o fim da edição comunitária do LocalStack

A justificativa central do projeto é o encerramento da edição comunitária do LocalStack em março de 2026, que passou a exigir token de autenticação e congelou atualizações de segurança. O Floci se apresenta como alternativa "sem amarras" e, sobretudo, como substituto drop-in: basta trocar a imagem no Docker Compose. O projeto traduz automaticamente variáveis de ambiente do LocalStack (como LOCALSTACK_HOST e PERSISTENCE), roda scripts de init montados em /etc/localstack/init/ sem alterações, mantém os endpoints /_localstack/init e /_localstack/health e encerra os logs com uma linha Ready. compatível com estratégias de espera existentes, como a do LocalStackContainer do Testcontainers. Há um modo de compatibilidade (latest-compat) que inclui AWS CLI e boto3 para scripts de inicialização que dependam deles.

Arquitetura e execução real em Docker

O projeto diferencia três categorias de serviços. Serviços sem estado (SSM, SQS, SNS, IAM, STS, KMS, Secrets Manager, Cognito, Step Functions, CloudFormation, API Gateway, entre muitos outros) e com estado (S3, DynamoDB e DynamoDB Streams) rodam em processo. Serviços nos quais a fidelidade importa usam contêineres Docker reais: Lambda (com imagens de runtime oficiais e pool de contêineres mornos), RDS (PostgreSQL, MySQL, MariaDB com imagens reais dos bancos), ElastiCache e MemoryDB (Valkey), Neptune (Gremlin Server ou Neo4j para openCypher), DocumentDB (MongoDB), MSK (Redpanda), Amazon MQ (RabbitMQ), ECS, EC2, EKS (via k3s), OpenSearch, CodeBuild, Managed Service for Apache Flink e MWAA (Airflow real com Postgres). Há também sidecars: Athena executa SQL real sobre S3 e Glue por meio de um sidecar DuckDB, e Verified Permissions usa um sidecar para parsing de políticas Cedar.

A imagem nativa, construída com base em Quarkus (o roteador HTTP usa JAX-RS/Vert.x), inicia em cerca de 24 ms, com cerca de 13 MiB de memória ociosa e imagem de aproximadamente 90 MB - números que o README compara a ~3,3 s, ~143 MiB e ~1,0 GB do LocalStack Community. A persistência é configurável em quatro modos: memory (para CI), persistent (gravação imediata em disco), hybrid (flush assíncrono a cada 5 segundos) e wal (write-ahead log, maior durabilidade). Há ainda isolamento multi-conta: se a AWS_ACCESS_KEY_ID tiver exatamente 12 dígitos, ela é tratada como ID de conta, tornando recursos de uma conta invisíveis para outra, incluindo credenciais temporárias via AssumeRole.

Cobertura, console e ecossistema

A lista de serviços emulados é extensa: aplicações, dados e eventos, identidade, infraestrutura, segurança e governança (WAF v2, GuardDuty, Organizations, Control Tower), além de custos e faturamento (Budgets, Pricing, Cost Explorer, Cost and Usage Reports com colunas CUR 2.0 e FOCUS 1.2). Alguns serviços de IA aparecem como stubs: Bedrock Runtime e AgentCore respondem com dados fictícios, e Textract, Transcribe e Comprehend também são emulações de API sem processamento real. Outros, como AWS FIS, simulam o plano de controle de forma segura, sem injetar falhas de verdade.

Floci inclui um console web (sidecar iniciado sob demanda a partir do socket Docker) que segue um "contrato de console" aberto, permitindo alternativas como StackPort e Floci Dash com apenas variáveis de ambiente. Existem módulos Testcontainers para Java, Node.js, Python e .NET, com o módulo Go em progresso. A suíte de compatibilidade do repositório reúne 2.576 testes automatizados em cinco SDKs (Java, JavaScript, Python, Go e AWS CLI) e três ferramentas de IaC (Terraform, OpenTofu e CDK).

Governança do projeto

O projeto se declara open source independente, financiado por patrocinadores que, segundo o README, não recebem funcionalidades, prioridade ou influência no roadmap. As versões seguem Conventional Commits via semantic-release, com lançamentos estáveis na primeira e terceira terça-feira de cada mês e tags nightly para acompanhar a branch principal. Não há branches de manutenção: todos os releases saem da main.