ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

fakecloud AWS模拟器配置参考:CLI标志与环境变量完整清单(速查手册)

fakecloud AWS模拟器配置参考:CLI标志与环境变量完整清单(速查手册)

【免费下载链接】fakecloud

Free, open-source AWS emulator. LocalStack alternative: 107 services, 7,657 operations, true 100% Smithy conformance (258,545/258,545 variants pass). No account, no auth token, no paid tier.

项目地址:https://gitcode.com/gh_mirrors/fak/fakecloud
点击查看免费下载

fakecloud是一款免费、开源的 AWS 模拟器(LocalStack 替代方案),单机即可模拟 107 个 AWS 服务、7,657 个操作,无需账号、无需鉴权 token、无付费层级。本文是 fakecloud 的完整配置速查手册,按场景分组整理全部 CLI 标志(flags)与环境变量,帮助你快速完成安装、启动与调优,随查随用。

📌 先懂规则:fakecloud 配置怎么生效

在动手之前,只需记住三条规则:

  • CLI 标志优先:当标志和环境变量同时设置时,标志生效。
  • 一一对应:几乎所有 CLI 标志都有对应的FAKECLOUD_前缀环境变量,便于 Docker / CI 场景注入。
  • 默认即可用:零配置直接运行fakecloud即可启动(默认0.0.0.0:4566、us-east-1、内存存储),安全类特性默认全部关闭。

📖 标志定义源码:crates/fakecloud-server/src/cli.rs;官方文档:website/content/docs/reference/configuration.md

🧭 基础连接配置:地址、区域与日志

最常用的四个基础标志,决定 fakecloud 监听哪里、以什么身份运行:

标志环境变量默认值说明
--addrFAKECLOUD_ADDR0.0.0.0:4566监听地址与端口
--regionFAKECLOUD_REGIONus-east-1对外宣称的 AWS 区域
--account-idFAKECLOUD_ACCOUNT_ID123456789012使用的 AWS 账号 ID
--log-levelFAKECLOUD_LOGinfo日志级别(trace/debug/info/warn/error)
# 只绑定本机 fakecloud --addr 127.0.0.1:4566 # 换区域与账号 fakecloud --region eu-west-1 --account-id 999999999999

💾 存储与持久化配置:状态如何保存

标志环境变量默认值说明
--storage-modeFAKECLOUD_STORAGE_MODEmemorymemory全内存;persistent镜像状态到磁盘
--data-pathFAKECLOUD_DATA_PATH—持久化目录,启用persistent时必填
--s3-cache-sizeFAKECLOUD_S3_CACHE_SIZE268435456(256 MiB)持久化模式下 S3 对象内容的内存 LRU 缓存(纯字节数)
--dynamodb-import-pathFAKECLOUD_DYNAMODB_IMPORT_PATH—启动时批量加载单个 AWS 格式 DynamoDB 导出
--dynamodb-import-describe-tableFAKECLOUD_DYNAMODB_DESCRIBE_TABLE—配合上一项,提供表结构的 JSON 文件
--dynamodb-import-dirFAKECLOUD_DYNAMODB_IMPORT_DIR—从根目录批量加载多张表的导出
# 启用持久化存储 fakecloud --storage-mode persistent --data-path /var/lib/fakecloud

📎 持久化细节见 website/content/docs/reference/persistence.md;DynamoDB 启动导入见 website/content/docs/services/dynamodb.md。

🔐 安全相关配置:SigV4 验签与 IAM 模式

标志环境变量默认值说明
--verify-sigv4FAKECLOUD_VERIFY_SIGV4false加密学验证 SigV4 签名,非法签名拒绝为SignatureDoesNotMatch
--iamFAKECLOUD_IAMoffIAM 身份策略评估模式:off/soft/strict

--iam三种模式的区别:

  • off(默认):策略只存储、不评估;
  • soft:评估并输出审计日志,但放行请求;
  • strict:评估并直接返回AccessDeniedException。

⚠️ 两种模式下,保留的test/test根身份始终绕过校验。详见 website/content/docs/reference/security.md。

🐳 实例凭证与 IMDS:让应用不改代码

这一组标志让在容器/EC2 内运行的应用无需改代码就能走通 AWS SDK 的默认凭证链:

标志环境变量默认值说明
--credentials-role-arnFAKECLOUD_CREDENTIALS_ROLE_ARNarn:aws:iam::<account>:role/fakecloud/_fakecloud/credentials端点发放凭证所对应的角色 ARN
--imds-instance-idFAKECLOUD_IMDS_INSTANCE_ID稳定的合成i-…EC2 实例元数据服务(IMDS,/latest/*)报告的实例 ID
--imds-link-localFAKECLOUD_IMDS_LINK_LOCALfalse额外绑定169.254.169.254:80(IMDS)与169.254.170.2:80(ECS 凭证)等链本地地址,需 root 运行

📎 完整指南见 website/content/docs/guides/instance-credentials.md。

🌐 DNS 解析器配置:Route 53 记录真实生效

开启后,fakecloud 会运行一个真实 DNS 解析器,把你在 Route 53 中创建的记录解析到本地目标:

标志环境变量默认值说明
--dnsFAKECLOUD_DNSfalse启用 DNS 解析器(A/AAAA/CNAME/MX/TXT等)
--dns-addrFAKECLOUD_DNS_ADDR0.0.0.0:53解析器绑定地址(UDP + TCP);非 root 建议127.0.0.1:15353
--dns-upstreamFAKECLOUD_DNS_UPSTREAM/etc/resolv.conf首个 nameserver,否则8.8.8.8:53非本地域名的上游转发目标

📎 用法示例见 website/content/docs/guides/dns.md。

📊 Service Quotas 强制配置:配额约束开关

标志环境变量默认值说明
--enforce-quotasFAKECLOUD_ENFORCE_QUOTASfalse强制全部可检查的配额
--enforce-quotaFAKECLOUD_ENFORCE_QUOTA无单条强制,格式SERVICE_CODE/QUOTA_CODE(如vpc/L-0EA8095F),可重复;环境变量用逗号分隔
--ignore-quotaFAKECLOUD_IGNORE_QUOTA无单条豁免,即使已开--enforce-quotas,可重复
--quota-requestsFAKECLOUD_QUOTA_REQUESTSauto配额提升请求的决定方式:auto(提交时自动批准)或manual(留待人工审批)
fakecloud --enforce-quotas \ --enforce-quota vpc/L-2AFB9258 \ --ignore-quota vpc/L-0EA8095F \ --quota-requests manual

📎 配额强制细节见 website/content/docs/services/servicequotas.md。

⚙️ 容器与 Kubernetes 后端环境变量

以下变量仅能通过环境变量设置(无对应 CLI 标志),控制 Lambda、ECS、RDS、ElastiCache、EC2 等容器支撑型服务的执行后端:

环境变量默认值说明
FAKECLOUD_CONTAINER_CLI自动探测容器 CLI(docker或podman),自动探测顺序为 docker → podman
FAKECLOUD_CONTAINER_BACKEND未设置(docker)全局执行后端,设为k8s则以原生 K8s Pod 运行
FAKECLOUD_LAMBDA_BACKEND继承全局仅 Lambda 的后端覆盖(k8s/docker)
FAKECLOUD_ECS_BACKEND/FAKECLOUD_RDS_BACKEND/FAKECLOUD_ELASTICACHE_BACKEND/FAKECLOUD_EC2_BACKEND继承全局对应服务的后端覆盖
FAKECLOUD_EC2_DEFAULT_IMAGEamazonlinux:2023EC2 实例启动的基础容器镜像
FAKECLOUD_ECR_REGISTRY_HOST127.0.0.1容器引擎拉取 fakecloud-ECR 镜像的主机
FAKECLOUD_K8S_NAMESPACEdefaultK8s 后端创建 Pod 的命名空间
FAKECLOUD_K8S_SELF_URL—集群内 fakecloud Service 的 URL,K8s 后端必填
FAKECLOUD_K8S_PULL_SECRET/FAKECLOUD_K8S_NODE_SELECTOR/FAKECLOUD_K8S_TOLERATIONS/FAKECLOUD_K8S_ANNOTATIONS未设置Pod 拉取密钥、节点选择器、容忍度、注解(均支持FAKECLOUD_<SERVICE>_K8S_*按服务覆盖)

📎 Kubernetes 后端完整指南见 website/content/docs/guides/kubernetes-backend.md。

🛠️ 高级调优环境变量

环境变量默认值说明
FAKECLOUD_LAMBDA_MAX_CONCURRENCY10每个 Lambda 函数保留的最大暖实例数
FAKECLOUD_MAX_REQUEST_BODY_BYTES1073741824(1 GiB)缓冲请求体上限,超出返回 413;流式路由(S3 上传、ECR blob)不受限
FAKECLOUD_EXTERNAL_URL未设置渲染进 SQSQueueUrl等返回值的外部基础 URL,适配 compose/远程访问
FAKECLOUD_PERSIST_DB_VOLUMES/FAKECLOUD_PERSIST_EC2_VOLUMES持久化模式默认开用持久卷为 RDS 数据目录 / EC2 实例目录做持久化
FAKECLOUD_EC2_INSTANCE_DATA_DIR/var/lib/fakecloud/ec2EC2 实例内由持久卷支撑的目录
FAKECLOUD_S3_EAGER_DELIVERY关闭设为1可同步投递 S3 访问日志与清单报告
FAKECLOUD_CLOUDFRONT_DISABLE_DATAPLANE开启数据面设为1关闭进程内 CloudFront 数据面
FAKECLOUD_EC2_SG_ENFORCEMENT关闭设为1启用 EC2 安全组强制(需CAP_NET_ADMIN,见 Dockerfile)
FAKECLOUD_IN_CONTAINER—官方镜像内部使用,标识 fakecloud 运行在容器中

⚡ 快速上手示例

# 最简启动(零配置) fakecloud # 详细日志 FAKECLOUD_LOG=trace fakecloud # 本机回环 + 指定区域 fakecloud --addr 127.0.0.1:4566 --region eu-central-1 # 完整持久化 + 安全校验 fakecloud --storage-mode persistent --data-path /var/lib/fakecloud \ --verify-sigv4 --iam soft

📎 Docker 启动方式参考 docker-compose.yml 与 examples/docker-compose.yml。

⚠️ 常见坑点与排查清单

  1. --storage-mode persistent必须搭配--data-path,否则启动直接报错。
  2. DynamoDB 导入标志互斥:--dynamodb-import-path(+--dynamodb-import-describe-table)与--dynamodb-import-dir不能同时使用。
  3. 同一配额不能既强制又豁免:同时出现在--enforce-quota和--ignore-quota会启动失败。
  4. 未知或不可强制的配额代码会阻止启动,报错信息含unknown quota/not enforceable,按提示核对SERVICE_CODE/QUOTA_CODE。
  5. 绑定 53 端口需要 root:非 root 场景请将--dns-addr改为127.0.0.1:15353之类的端口。
  6. 优先级记牢:命令行标志 > 环境变量 > 默认值,排查配置冲突时按此顺序。

📁 源码与文档路径速查

  • CLI 标志与环境变量定义:crates/fakecloud-server/src/cli.rs
  • 配置参考文档:website/content/docs/reference/configuration.md
  • 持久化模式:website/content/docs/reference/persistence.md
  • 安全(SigV4 / IAM):website/content/docs/reference/security.md
  • 实例凭证 / IMDS:website/content/docs/guides/instance-credentials.md
  • DNS 解析器:website/content/docs/guides/dns.md
  • 服务配额:website/content/docs/services/servicequotas.md
  • Kubernetes 后端:website/content/docs/guides/kubernetes-backend.md

收藏本页,下次配置 fakecloud 时按分组对照即可,一分钟找到你要的标志或环境变量。✅

【免费下载链接】fakecloud

Free, open-source AWS emulator. LocalStack alternative: 107 services, 7,657 operations, true 100% Smithy conformance (258,545/258,545 variants pass). No account, no auth token, no paid tier.

项目地址:https://gitcode.com/gh_mirrors/fak/fakecloud
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进