floci v2.3.0 介绍与选型指南
梳理 floci v2.3.0 定位、真实容器执行架构、服务覆盖面,并给出与 LocalStack/Moto 的量化选型对比,全文联网溯源(2026-10-25)。
floci v2.3.0 介绍与选型指南
目标:面向需要在自建服务器上「本地模拟 AWS 云环境」的后端与 DevOps 工程师,梳理 floci 的产品定位、真实容器执行架构、服务覆盖面,并给出与 LocalStack、Moto 的量化选型对比。本文为 A1 认知篇,全部事实性内容均于 2026-10-25 联网溯源取得并逐项标注来源(GitHub 仓库页 floci-io/floci 与 floci-io/floci-cli、shields.io 徽章、官方文档站 floci.io、Docker Hub);部署、配置与命令实测内容见本专栏后续各篇。
一、溯源信息与环境基线
| 项目 | 取值 | 来源(2026-10-25 查询) |
|---|---|---|
| 项目仓库 | github.com/floci-io/floci | GitHub 仓库页 |
| 命令行工具仓库 | github.com/floci-io/floci-cli | GitHub 仓库页 |
| 官方文档站 | floci.io(MkDocs Material 构建) | 文档站页脚 |
| 最新稳定版 | v2.3.0 | shields.io github/v/release 徽章返回 v2.3.0 |
| GitHub 星数 | 27k | shields.io github/stars 徽章返回 27k |
| 开放 Issue 数 | 121 | shields.io github/issues 徽章返回 121 |
| 镜像拉取量 | 5.1M | shields.io docker/pulls 徽章返回 5.1M |
| 许可证 | MIT | 仓库页 License 徽章(主仓库与 CLI 仓库均为 MIT) |
| 官方镜像 | floci/floci(Docker Hub) | README 徽章与 Docker Hub 仓库页 |
| 评测环境 | Ubuntu 22.04 LTS(x86_64)+ Docker Engine 29.1.3 | 实验服务器 |
一句话概括官方定位(README 原文):"Any Cloud. Locally. Light, fluffy, and always free. No account. No auth token. No feature gates."——本地跑云、完全免费、无账号、无鉴权令牌、无功能门禁,docker compose up 即可启动。
二、floci 是什么
floci 是一个免费开源的 AWS 本地模拟器(AWS Local Emulator),在自建服务器或 CI 机器上提供与 AWS API 协议兼容的端点,让 aws CLI、boto3、SDK、Terraform、CDK 等工具不做任何改动即可把请求打到本机。它由三件套组成:
- 模拟器主体(
floci/floci):一个 Quarkus native 服务(实测日志标识floci 2.3.0 native (powered by Quarkus 3.40.1),启动毫秒级),监听 4566 端口,内置 127 项 AWS 服务(实测floci services输出Floci AWS Services (127 enabled),覆盖 S3、DynamoDB、Lambda、EC2/ECS/EKS、SQS/SNS、IAM、SSM、Secrets Manager、KMS、CloudWatch、Step Functions、ElastiCache/MemoryDB、RDS 系列、Neptune、DocumentDB、Redshift、Kinesis、Athena、Glue、EMR、SageMaker、Bedrock、Cognito、CloudFormation、Route53、Organizations、Transfer、DMS 等); - floci CLI(v0.4.0):安装、启动、状态检查、环境变量输出、快照、重置、升级检查的一站式命令行;
- Web 控制台(
floci/floci-ui,v0.7.0):浏览器里浏览 S3 桶/对象、SQS 消息、Lambda、日志等资源的面板,默认随模拟器按需拉起,不收费。
与"用假响应模拟 AWS"不同,floci 的核心卖点是真实执行:Lambda 函数由真实语言运行时(如 python3.12 镜像)在隔离环境里真正跑一遍并返回结果;EC2 实例、ElastiCache 集群、MSK 集群、RDS 系列数据库都对应一个真实运行的引擎进程。这一点是与 LocalStack、Moto 划开界限的根本差异,也是下文选型对比的核心维度。
三、架构:真实执行模型怎么工作
floci 采用「控制面 + 数据面」双层结构:
- 控制面:模拟器主体接收 AWS API 请求,维护桶/表/队列/密钥等资源的元数据,并通过服务器上的 Docker 引擎管理数据面进程;
- 数据面:Lambda 函数、EC2 实例、ElastiCache(真实 Valkey 引擎)、MSK(真实 Apache Kafka 3.7)、RDS 系列(真实 MySQL 8.0 / PostgreSQL 15 / Oracle Free)、OpenSearch、DocumentDB 等按需以真实引擎或真实运行时进程执行,访问入口端口由 floci 从预配置端口池(如 ElastiCache 取 6379-6399、MySQL 取 3306-3399、PostgreSQL 取 5432-5599)动态分配。
由此带来的三个可感知特性(均在本系列实测中验证):
- Lambda 真实执行:调用
aws lambda invoke会真正运行函数代码——函数写错时会返回真实的 PythonSyntaxError回显,而不是模拟器"假装成功"; - 真实端口直连:ElastiCache 建集群后可用
redis-cli直接PING/SET/GET,与操作一台真实 Redis 无异; - 状态持久化与多区域:
persistent模式把模拟状态落盘,实测跨重启存活(桶/表/对象全保留,见部署篇第五章);FLOCI_DEFAULT_REGION/FLOCI_REGIONS支持多区域,且区域是硬隔离的(us-east-1 与 cn-north-1 的同名桶互不可见,切换AWS_DEFAULT_REGION后资源列表随之切换)。另注:CLI 提供floci snapshot子命令,但 v2.3.0 服务端尚未开放快照接口(实测报Snapshot API not available on this server version),快照能力以官方 issue 进度为准。
安全方面,floci 默认接受任意 Access Key(开发友好),同时提供 FLOCI_AUTH_VALIDATE_SIGNATURES 开关:开启后对携带签名的请求校验 SigV4 签名正确性,实测用伪造签名发起 PUT 会收到 403 AccessDenied,而匿名无签名请求仍按设计放行。
四、量化选型对比:floci vs LocalStack vs Moto
星数与许可证数据取自 shields.io 徽章(2026-10-25 查询),其余行为差异为各项目公开文档声明与本次实测结论:
| 对比维度 | floci v2.3.0 | LocalStack(社区版) | Moto |
|---|---|---|---|
| GitHub 星数 | 27k | 65k | 8.7k |
| 许可证 | MIT(全开源) | 主仓库 Apache-2.0,Pro 功能闭源收费 | Apache-2.0(全开源) |
| 商业分层 | 无:全部功能免费,无账号/令牌/门禁 | Community 免费;RDS、EKS、IAM 强制执行、完整 Web 控制台等在 Pro/Team 付费层 | 无 |
| 实现原理 | 控制面 API + 真实引擎/真实运行时进程执行 | 单进程 Python 模拟 AWS API 响应 | Python 库,进程内 mock,或 moto_server 起轻量假服务 |
| Lambda | 真实执行(真实语言运行时镜像,报错即真实报错) | Community 版基于 Docker 执行但兼容性子集有限,完整兼容为 Pro | 不执行,仅返回 mock 结果 |
| ElastiCache / RDS 系列 / MSK | 真实引擎(Valkey、MySQL 8.0、PostgreSQL 15、Oracle Free、Kafka 3.7,可原生客户端直连) | Community 不含 RDS/MSK,ElastiCache 为模拟 | 无真实引擎 |
| Web 控制台 | 内置 floci-ui(免费,含 S3/SQS/Lambda/日志/KMS/网络等面板) | Dashboard 收费 | 无 |
| 状态持久化与快照 | persistent 落盘模式实测跨重启存活(另有 hybrid/wal 模式);floci snapshot 子命令在 v2.3.0 服务端未开放 | Cloud Pod 云状态同步为付费功能 | 无 |
| 部署方式 | 官方安装脚本装 CLI 后 floci start,或一份 Compose 文件 | pip install localstack / 镜像运行 | pip install moto[server] |
| 专用 CLI | floci CLI v0.4.0(install/start/doctor/env/snapshot/reset/update 一应俱全) | localstack CLI | 无(纯库用法为主) |
| 适配场景 | 要「真跑」的集成测试、Lambda/容器负载联调、内网隔离环境 | 轻量 API 级单测、快速冒烟 | Python 单元测试进程内 mock |
怎么选:
- 需要 Lambda 真正执行、需要 ElastiCache/数据库/Kafka 真实引擎可直连、不想为 Pro 功能付费、希望有免费 Web 控制台和落盘持久化——选 floci;代价是宿主机要为控制面与数据面预留内存(建议 ≥ 8GB),且数据面按需拉起真实引擎(磁盘占用随用随增);
- 只做 API 协议级冒烟、资源极少、机器内存紧张——LocalStack 社区版启动快、体量小;
- Python 单元测试里想把 AWS 调用 mock 掉、连网络请求都不想发——Moto 最合适,它本来就不是"一台服务"而是测试库。
三者的星数差距(65k vs 27k vs 8.7k)主要反映入场时间与社区规模,不代表功能覆盖差距——floci 在"真实执行"这一维度上是三者中唯一全量免费开放的。
五、适用与不适用场景
适合:
- CI/CD 集成测试:流水线里起一套 floci,跑
aws s3/dynamodb/sqs断言,不需要真实 AWS 账号、不产生费用、不泄露密钥; - Lambda 与容器负载联调:函数真实执行、S3 事件触发通知、Step Functions 编排都能在本机走通;
- 内网隔离环境:无法出公网访问 AWS 的研发/交付现场,floci 提供协议兼容端点;
- Terraform/CDK 本地验证:provider 指向本地端点即可 plan/apply,配合
floci reset --yes在用例间重置状态; - 教学与演示:免费 Web 控制台让学员浏览器里直接看桶、队列、消息。
不适合:
- 生产工作负载:模拟器不承诺 AWS 级 SLA 与数据可靠性,资源有上限保护(如数据库实例总数默认上限 30,可用
FLOCI_SERVICES_DB_MAX_TOTAL_INSTANCES调整); - 计费/组织级/合规类服务:账单、Organizations、IAM 强制策略引擎等企业面能力不在模拟范围;
- 其他云厂商:floci 只模拟 AWS 协议,Azure/GCP 需另选工具。
六、上手路径
本专栏按「认知 → 部署 → 配置 → CLI 实操」编排:
- 部署:《floci v2.3.0 Docker Compose 部署指南》(
floci start一键起与 Compose 持久化两条路径,floci doctor11 项自检实测); - 配置:《floci v2.3.0 配置参数详解》(
FLOCI_*环境变量全表 + 存储模式/多区域/SigV4 校验实测); - CLI 实操:《floci v2.3.0 常用 CLI 命令详解》(floci CLI 全子命令 + aws cli 对拍 S3/DynamoDB/Lambda/ElastiCache 实测回显)。
七、来源清单(2026-10-25)
- GitHub 仓库页:
github.com/floci-io/floci(README 定位原文、MIT License、架构说明、文档导航) - GitHub 仓库页:
github.com/floci-io/floci-cli(CLI v0.4.0、安装脚本入口、子命令参考) - shields.io 徽章:
github/stars/floci-io/floci(27k)、github/v/release/floci-io/floci(v2.3.0)、github/issues/floci-io/floci(121)、docker/pulls/floci/floci(5.1M)、github/stars/localstack/localstack(65k)、github/stars/getmoto/moto(8.7k) - 官方文档站 floci.io:Environment Variables Reference(服务覆盖面)、Storage(存储模式)
- Docker Hub:
hub.docker.com/r/floci/floci(官方镜像、标签) - 实测:本专栏 B2/C1/D1 三篇(部署、配置、CLI 命令的全部命令与回显)