#aws-lambda #lambda #aws #cli-tool

程序 cold-stat

CLI 工具,用于静态分析 AWS Lambda 函数的冷启动

3 个版本

0.1.3 2024 年 3 月 28 日
0.1.1 2024 年 3 月 21 日
0.1.0 2024 年 3 月 21 日

795命令行工具 中排名

Download history 49/week @ 2024-04-01

每月 98 次下载

MIT 许可证

46KB
387

cold-stat

Crates.io Version

A CLI 工具,用于静态分析 AWS Lambda 函数的初始化时间,即冷启动。

先决条件

  • 需要 Rust 工具链来安装此工具
  • 需要 AWS 凭证来访问 AWS
  • 以下操作必须在 IAM 策略中授权
    • lambda:GetFunctionConfiguration 以获取函数当前环境变量
    • Lambda.UpdateFunctionConfiguration 更新函数环境变量,强制冷启动
    • lambda:InvokeFunction 调用函数
    • logs:StartQuery 查询 CloudWatch 日志以进行冷启动分析

安装

cargo install cold-stat

用法

cold-stat [OPTIONS] --function <FUNCTION> --payload <PAYLOAD>

# Example
cold-stat --verbose --function=YOUR-FUNC-NAME --iterations=300 \
          --payload='{"foo": "bar"}'

选项

  • -f, --function <FUNCTION>
    • 要调用的函数名称或 ARN
  • -p, --payload <PAYLOAD>
    • 要发送到函数的 JSON 负载
  • --log-group-name<LOG_GROUP_NAME>
    • 要分析的 CloudWatch 日志组名称
    • [默认: /aws/lambda/FUNCTION]
  • --log-stream-filter<LOG_STREAM_FILTER>
    • 用于过滤 CloudWatch 日志组流的正则表达式。当多个函数共享日志组时很有用
    • [示例: /YOUR-FUNCTION-NAME/] 当日志流命名如 2021/01/01/YOUR-FUNCTION-NAME[$LATEST]
  • -i, --iterations <ITERATIONS>
    • 调用函数的迭代次数
    • 建议至少设置 30。因为收集到的冷启动数量通常略短于指定的 ITERATIONS,这是由于 CloudWatch 日志的最终一致性导致的
    • [默认: 100]
  • -v, --verbose
    • 启用时打印调试日志
  • -h, --help
    • 打印帮助
  • -V, --version
    • 打印版本

结果

  • mem
    • 函数的内存大小
  • count
    • 收集到的冷启动次数
  • stddev, min, max
    • 冷启动时间的标准差、最小值和最大值
  • p50, p90, p95, p99, p995, p999
    • 冷启动时间的分位数
    • 例如,p50是50分位数,也称为中位数
    • p995p999分别是99.5和99.9分位数

开发

构建

git clone https://github.com/exoego/cold-stat
cd cold-stat
cargo build

运行

cargo run -- \
  --function=YOUR-FUNC-NAME \
  --iterations=10 \
  --verbose \
  --payload='{"foo": "bar"}'

致谢

依赖项

~26–40MB
~566K SLoC