
aws-lambda-power-tuning
自动跑遍内存档位,找出 Lambda 最省钱或最快的配置
AWS Lambda Power Tuning 是一个运行在你自己 AWS 账户中的开源调优工具,专门解决 Lambda 函数内存配置难以确定的问题。它基于 AWS Step Functions 编排,自动用不同内存规格(从 128MB 到 10GB)反复调用目标 Lambda,记录每次的执行时长与费用,再生成可视化图表,帮你找到成本最低、速度最快或两者平衡的配置点。支持 cost、speed、balanced 三种优化策略,可并行执行、可指定内存范围、可设置冷启动预热,结果直接输出到控制台或 S3。整个过程无需部署额外服务器,用完即走,适合对无服务器成本敏感或需要压榨性能的团队。
项目数据
使用教程
环境要求
- 已安装并配置 AWS SAM CLI
- 已安装 AWS CLI 并完成 AWS 凭证配置(aws configure)
- 本地已安装并启动 Docker(sam build -u 依赖)
- 已安装 git 用于克隆仓库
- 一个可用的 AWS 账户及目标 Lambda 函数 ARN
安装与启动步骤
-
1配置 AWS 凭证
用 AWS CLI 交互式配置访问密钥、默认区域与输出格式,这是后续 SAM 部署的前提。
aws configure -
2克隆项目仓库
把 aws-lambda-power-tuning 源码拉到本地,后续构建和部署都在该目录内进行。
git clone https://github.com/alexcasalboni/aws-lambda-power-tuning.git -
3构建依赖
进入项目目录并用 Docker 容器环境构建 Lambda 层与依赖,成功时会输出 Build Succeeded。
cd ./aws-lambda-power-tuning sam build -u -
4部署到 AWS
使用引导式部署,按提示填写唯一的 Stack Name 和 AWS Region,其余提示保持默认即可。
sam deploy -g -
5准备执行参数
在 scripts/sample-execution-input.json 中填入你的 Lambda ARN、内存档位、调用次数和 payload。
cat scripts/sample-execution-input.json -
6运行状态机
执行 scripts 目录下的 execute 脚本,状态机会用不同内存规格反复调用目标函数并给出调优建议。
cd ./aws-lambda-power-tuning ./scripts/execute.sh -
7删除部署
调优完成后可运行 sam delete 清理资源,提示处回答 Y 即可,避免继续占用配额。
sam delete
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
lambdaARN | 是 | 待调优的目标 Lambda 函数 ARN | arn:aws:lambda:us-east-1:123456789012:function:my-function |
powerValues | 否 | 要测试的内存档位列表,取值 128MB~10GB | [128, 256, 512, 1024] |
num | 否 | 每个内存档位重复调用的次数,次数越多结果越稳 | 50 |
payload | 否 | 调用目标 Lambda 时传入的事件负载 | {} |
如何确认成功
sam deploy -g 结束后出现 Successfully created/updated stack 提示,即表示状态机部署成功。
常见问题
Q:sam build -u 构建失败怎么办?
A:该命令依赖 Docker 容器环境,请确认 Docker 已安装并处于运行状态;构建失败时终端会给出具体错误提示,按提示修复后重试。
Q:调优会不会影响我的生产 Lambda?
A:会真实调用你的函数,触发真实 HTTP 请求、SDK 调用和冷启动,建议先在测试函数上评估调用次数与 payload 的影响。
Q:怎么删除已经部署的调优工具?
A:在项目目录下执行 sam delete,并在提示处回答 Y,SAM 会删除本次部署创建的相关资源。
Q:可以调优非 Node.js 的函数吗?
A:可以,状态机与语言无关,只要提供任意 Lambda 函数的 ARN 就能对其进行调优。
Q:部署选项只有 SAM CLI 一种吗?
A:不是,官方提供了 5 种基于基础设施即代码的部署方式,Quick Start 使用的是 SAM CLI,其他方式见 README-DEPLOY.md。
注意事项
- 该工具运行在你自己的 AWS 账户中,调用目标函数会产生真实费用。
- sam build -u 必须依赖 Docker,未启动 Docker 会直接构建失败。
- sam deploy -g 的交互回答会保存到 samconfig.toml,后续部署可复用。
- 状态机支持跨区域调用,并可通过并行执行大幅缩短出结果的时间。
核心亮点
- 基于 Step Functions 编排,无需自建服务器,直接跑在用户自己的 AWS 账户里,数据不出账户
- 支持 cost、speed、balanced 三种策略,并给出可视化图表,直观对比不同内存下的耗时与费用
- 可指定内存范围、并发数、冷启动预热和调用次数,调优粒度细,结果可导出到 S3 供团队复用
不足之处
- 调优过程会产生真实 Lambda 调用费用,对高频函数或大内存档位可能产生额外开销
- 依赖 AWS Step Functions 和 IAM 权限配置,首次使用需要一定 AWS 运维知识
适用场景
- 生产环境 Lambda 成本偏高,需要找到性价比最高的内存配置
- 新上线函数不确定该给多少内存,用数据代替拍脑袋
- 对延迟敏感的服务,想验证加大内存能否显著降低执行时间
替代项目
lambda-cost-calculator、serverless-esbuild、aws-sam-cli
项目介绍
同类项目推荐
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···