floci v2.3.0 介绍与选型指南

梳理 floci v2.3.0 定位、真实容器执行架构、服务覆盖面,并给出与 LocalStack/Moto 的量化选型对比,全文联网溯源(2026-10-25)。

floci自托管云原生CLI命令运维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/flociGitHub 仓库页
命令行工具仓库github.com/floci-io/floci-cliGitHub 仓库页
官方文档站floci.io(MkDocs Material 构建)文档站页脚
最新稳定版v2.3.0shields.io github/v/release 徽章返回 v2.3.0
GitHub 星数27kshields.io github/stars 徽章返回 27k
开放 Issue 数121shields.io github/issues 徽章返回 121
镜像拉取量5.1Mshields.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 等工具不做任何改动即可把请求打到本机。它由三件套组成:

  1. 模拟器主体(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 等);
  2. floci CLI(v0.4.0):安装、启动、状态检查、环境变量输出、快照、重置、升级检查的一站式命令行;
  3. 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 会真正运行函数代码——函数写错时会返回真实的 Python SyntaxError 回显,而不是模拟器"假装成功";
  • 真实端口直连: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.0LocalStack(社区版)Moto
GitHub 星数27k65k8.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]
专用 CLIfloci 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 在"真实执行"这一维度上是三者中唯一全量免费开放的。

五、适用与不适用场景

适合:

  1. CI/CD 集成测试:流水线里起一套 floci,跑 aws s3/dynamodb/sqs 断言,不需要真实 AWS 账号、不产生费用、不泄露密钥;
  2. Lambda 与容器负载联调:函数真实执行、S3 事件触发通知、Step Functions 编排都能在本机走通;
  3. 内网隔离环境:无法出公网访问 AWS 的研发/交付现场,floci 提供协议兼容端点;
  4. Terraform/CDK 本地验证:provider 指向本地端点即可 plan/apply,配合 floci reset --yes 在用例间重置状态;
  5. 教学与演示:免费 Web 控制台让学员浏览器里直接看桶、队列、消息。

不适合:

  1. 生产工作负载:模拟器不承诺 AWS 级 SLA 与数据可靠性,资源有上限保护(如数据库实例总数默认上限 30,可用 FLOCI_SERVICES_DB_MAX_TOTAL_INSTANCES 调整);
  2. 计费/组织级/合规类服务:账单、Organizations、IAM 强制策略引擎等企业面能力不在模拟范围;
  3. 其他云厂商:floci 只模拟 AWS 协议,Azure/GCP 需另选工具。

六、上手路径

本专栏按「认知 → 部署 → 配置 → CLI 实操」编排:

七、来源清单(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 命令的全部命令与回显)