Floci é um emulador local de AWS, gratuito e licenciado com MIT, que serve as APIs de AWS em localhost:4566 sem conta, sem token e sem funções bloqueadas. Isso o torna uma alternativa direta ao LocalStack, que desde março de 2026 exige um auth token para sua imagem latest. Se Floci pode substituir o LocalStack no seu pipeline é outra pergunta: depende de quais operações seus testes chamam, não de quantos logos de serviços o README mostra.
Nota de pesquisa: este artigo se baseia na documentação do Floci, suas notas de versão e seu README, além do anúncio público do LocalStack. No yoDEV não instalamos Floci, não executamos uma migração nem reproduzimos nenhum benchmark. As versões e condições de planos são as vigentes em 22 de setembro de 2026.
O que é Floci?
Floci é um emulador de código aberto que executa as APIs de AWS localmente para desenvolvimento, testes e CI. Você aponta sua AWS CLI, seu SDK, Terraform, CDK ou OpenTofu para http://localhost:4566 e os usa como sempre. No momento de publicar esta nota, a versão mais recente é a 2.1.0, publicada em 15 de setembro de 2026, com imagens Docker para amd64 e arm64.
Floci oferece cada serviço de uma de três formas:
- Dentro do processo. Serviços como S3, SQS, SNS, DynamoDB, IAM e KMS são emulados pelo Floci diretamente.
- Contêineres reais de respaldo. Lambda, RDS, ElastiCache, MSK, ECS, EKS e OpenSearch levantam contêineres Docker reais, como Postgres, Valkey ou Redpanda. Você tem um mecanismo de banco de dados real, mas não o serviço gerenciado de AWS que o circunda.
- Stubs. Bedrock Runtime, Textract e Transcribe devolvem respostas fictícias ou predefinidas. Que um serviço de IA apareça na lista não significa inferência de modelos localmente.
Essa divisão importa mais do que qualquer contagem de serviços em uma manchete. A referência canônica é a matriz de serviços, que detalha as operações suportadas por serviço.
Floci ou LocalStack?
Escolha de acordo com os testes em que você precisa confiar, não de acordo com um gráfico de velocidade. Isto é o que a documentação respalda:
| Floci | LocalStack (distribuição unificada) | |
|---|---|---|
| Conta / auth token | Não é necessário | Obrigatório para latest desde março de 2026 |
| Licença | MIT | Plano gratuito restrito a uso não comercial |
| Atualizações | Versões ativas (2.1.0, 15 de setembro de 2026) | As atualizações vão para a imagem autenticada; as tags antigas de Community não recebem patches |
| Referência de cobertura | Matriz de serviços por operação | A documentação do LocalStack |
O README do Floci também anuncia um tempo de inicialização de cerca de 24 ms e 13 MiB de memória em repouso, em comparação com 3,3 s e 143 MiB. São cifras do próprio provedor, medidas contra a imagem congelada do LocalStack Community e não contra a distribuição atual do LocalStack. Não são uma medição de sua carga de trabalho.
Se você também está avaliando outras alternativas do LocalStack, cobrimos o MiniStack separadamente: MiniStack: O Substituto Gratuito do LocalStack que a Comunidade Estava Esperando.
O LocalStack ainda é gratuito?
Depende de como você o usa. De acordo com o próprio anúncio do LocalStack (publicado em dezembro de 2025 e atualizado em março de 2026), várias coisas mudaram:
- Community e Pro foram unificados em uma única imagem, e executar
latestrequer um auth token. - O plano gratuito foi pensado para uso não comercial.
- As tags de versão antigas de Community ainda são executadas sem autenticação, mas não recebem patches de segurança.
- O repositório de Community ainda é público, com manutenção reduzida.
Verifique a página de LocalStack pricing vigente antes de decidir. As condições mudam, e este artigo não cita preços.
Quais testes executar localmente e quais na AWS real?
Execute localmente o que é barato errar e rápido repetir:
- CRUD contra S3, SQS e DynamoDB
- Fluxo de mensagens entre seus próprios componentes
planeapplyde IaC contra recursos descartáveis- Ambientes isolados por teste em CI
Mantenda verificações contra AWS real para o comportamento que um emulador só pode aproximar:
- Casos limite de autorização em IAM
- Redes de VPC, security groups e acesso entre contas
- Tempos, repetições e ordem de entrega de eventos
- Cotas de serviço, throttling e modos de falha dos serviços gerenciados
Que seus testes passem contra Floci prova que seu código funciona contra Floci. Sua suite de compatibilidade (alguns milhares de testes automatizados entre SDKs e ferramentas de IaC) cobre apenas o que esses testes verificam.
Nota de Grego: um emulador gratuito não é infraestrutura sem custo. Alguém em sua equipe é dono da versão fixada, do tempo de CI e de explicar por que um teste passou localmente e falhou na AWS. Orce isso antes de migrar, não descubra depois.
Como instalar Floci?
O caminho mais rápido na documentação oficial é Docker Compose. Fixe a versão que você está avaliando em vez de usar latest:
services:
floci:
image: floci/floci:2.1.0
ports:
- "4566:4566"
docker compose up -d
Em seguida, aponte suas ferramentas de AWS para Floci com credenciais fictícias:
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
A documentação sugere adicionar essas variáveis ao seu perfil de shell. Recomendamos limitá-las ao seu ambiente de testes, para que um comando solto nunca chegue a um endpoint real com suposições equivocadas.
Teste rápido, tomado do quick start:
aws s3 mb s3://my-bucket --endpoint-url $AWS_ENDPOINT_URL
aws s3 ls --endpoint-url $AWS_ENDPOINT_URL
```### Como usar Floci com Testcontainers?
Para isolar cada teste, Floci publica módulos de Testcontainers:
- **Java:** `io.floci:testcontainers-floci`
- **Node.js:** `@floci/testcontainers`
- **Python:** `testcontainers-floci`
- **.NET:** `Testcontainers.Floci`
- **Go:** constava como em desenvolvimento no momento de publicar esta nota.
Cada módulo inicia um contêiner Floci novo por teste e expõe seu endpoint e suas credenciais. Em Python:
```bash
pip install testcontainers-floci
import boto3
from floci import FlociContainer
def test_s3_create_bucket():
with FlociContainer() as floci:
s3 = boto3.client(
"s3",
endpoint_url=floci.get_endpoint(),
region_name=floci.get_region(),
aws_access_key_id=floci.get_access_key(),
aws_secret_access_key=floci.get_secret_key(),
)
s3.create_bucket(Bucket="my-bucket")
Como migrar de LocalStack para Floci?
O guia de migração descreve a maioria dos casos como uma simples mudança de imagem. Revise cada um desses pontos contra sua própria configuração:
- Imagem. Substitua
localstack/localstackporfloci/floci:2.1.0. Se seus scripts de inicialização chamamawsouboto3, usefloci/floci:2.1.0-compat, que inclui a AWS CLI e boto3. - Variáveis de ambiente. Floci traduz automaticamente variáveis de LocalStack como
LOCALSTACK_HOST,PERSISTENCEeLAMBDA_DOCKER_NETWORK. DefinaLOCALSTACK_PARITY=falsepara desativar essa tradução. - Scripts de inicialização. Os scripts em
/etc/localstack/init/são executados sem alterações. - Diretório de estado. LocalStack salva os dados em
/var/lib/localstack; Floci usa/app/data, então atualize seus volumes. - Health checks.
/_localstack/healthe/_localstack/initcontinuam disponíveis. O log também termina com uma linhaReady.no estilo de LocalStack, então a estratégia de espera padrão deLocalStackContainerem Testcontainers continua funcionando. - Diferenças conhecidas.
LAMBDA_REMOTE_DOCKERnão é suportado, a seleção comSERVICESé ignorada (todos os serviços são iniciados) e Lambda sempre funciona no Docker. - Comportamento, não apenas inicialização. Execute novamente sua suíte. Preste atenção à resolução de endpoints, persistência entre reinicializações e caminhos de erro, não apenas ao caso feliz.
É seguro montar o socket do Docker?
É um acesso poderoso ao host e convém tratá-lo assim. Os serviços apoiados por contêineres reais (Lambda, RDS, ElastiCache e outros) precisam montar /var/run/docker.sock dentro de Floci. Qualquer processo com acesso a esse socket pode controlar Docker no host. Algumas regras práticas:
- Monte-o apenas se precisar de serviços apoiados por contêineres.
- Mantenha o listener local.
- Use dados descartáveis e credenciais fictícias.
- Não exponha essa configuração a cargas de CI não confiáveis.
O contêiner Floci funciona por padrão com um usuário sem privilégios. De acordo com a documentação de configuração do Docker, FLOCI_RUN_AS_ROOT=true é apenas para hosts onde o socket é acessível somente para root.
Vale a pena migrar para Floci?
Floci elimina a fricção de conta e token nos testes locais de AWS, e seu ritmo de versões é ativo. Mesmo assim, a decisão se reduz a um inventário: liste as operações exatas que sua aplicação chama, compare-as com a matriz de serviços e execute sua própria suíte em uma versão fixada antes de mudar seu CI.