Chuyển tới nội dung chính
Dev Templates
DevOps4 phút đọc

Floci: AWS emulator chạy local, mã nguồn mở, không giới hạn CI

Một bản thay thế LocalStack cho nhu cầu mock AWS khi dev và chạy test — miễn phí hoàn toàn, không feature gate, không cần account, không telemetry.

Bởi Phạm Thanh Tùng

Test code gọi S3, DynamoDB hay Lambda trên account AWS thật là cách nhanh nhất để đốt budget và vướng permission. Lâu nay dân dev dùng LocalStack để mock — nhưng nhiều tính năng thú vị (event sourcing, multi-region, team feature) nằm sau paywall, và có kha khá giới hạn về telemetry, CI quota.

Floci là một lựa chọn mới trong khúc đó: AWS emulator chạy local, MIT license, toàn bộ tính năng mở cho tất cả, không cần account hay token.

Floci là gì

Một Docker image emulate 31 AWS servicehttp://localhost:4566 — bao gồm S3, DynamoDB, Lambda, API Gateway, RDS, ECS và các service khác. Hỗ trợ đầy đủ REST JSON, Query, XML, và wire proxy cho database.

Workflow quen thuộc với bất kỳ ai từng dùng LocalStack: pull image, viết một file docker-compose.yml, trỏ AWS SDK của bạn vào endpoint local. Không còn bước nào khác.

Quick start

# docker-compose.yml
services:
  floci:
    image: floci/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./floci-data:/var/lib/floci

Rồi trỏ AWS SDK về http://localhost:4566:

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

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

Chạy docker compose up, SDK gọi vào container thay vì AWS thật — không phát sinh chi phí, không lệ thuộc mạng.

Khác gì LocalStack

Không feature gate — mọi service, mọi tính năng mở cho tất cả. LocalStack tách thành Community/Pro/Team, nhiều API quan trọng bị khoá ở bản Community.

Không telemetry — container không gửi dữ liệu sử dụng về đâu cả. Với team làm financial hay healthtech, đây là điểm quan trọng.

Không giới hạn CI — chạy bao nhiêu pipeline cũng được, không tính theo API call.

MIT license — fork, sửa, vendor vào repo riêng đều ok.

Khi nào nên dùng

Khi bạn muốn dev loop nhanh với AWS SDK mà không trả tiền cho mỗi test run. Khi CI pipeline cần chạy integration test hàng chục lần một ngày. Khi team có yêu cầu compliance về telemetry outbound.

Khi không nên: test các feature cutting-edge vừa release trên AWS (emulator luôn chạy sau). Và nếu test của bạn đụng tới limit/quota thật của AWS (ví dụ throttling behavior), emulator không thay được môi trường thật.

Xem thêm

Trang chủ và tài liệu tại floci.io/floci. Cài qua Docker Hub, source mở trên GitHub.

Thẻ

  • AWS
  • Local Dev
  • Open Source
  • DevOps

Bài viết khác