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

app cold-stat

CLI to statically analyze cold start of AWS Lambda functions

3 releases

0.1.3 Mar 28, 2024
0.1.1 Mar 21, 2024
0.1.0 Mar 21, 2024

#711 in Command line utilities

Download history 204/week @ 2024-03-18 151/week @ 2024-03-25 49/week @ 2024-04-01

98 downloads per month

MIT license

387 lines


Crates.io Version

A CLI tool to statically analyze the initialization time, known as cold-start, of AWS Lambda functions.


  • Rust toolchain is required to install the tool
  • AWS credential is required to access AWS
  • Following actions must be granted in IAM policy
    • lambda:GetFunctionConfiguration to fetch the current env vars of the function
    • Lambda.UpdateFunctionConfiguration to update the env vars of the function, to force cold-start
    • lambda:InvokeFunction to invoke tha function
    • logs:StartQuery to query CloudWatch Logs for cold start analysis


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>
    • Name or ARN of function to invoke
  • -p, --payload <PAYLOAD>
    • JSON payload to send to the function
  • --log-group-name <LOG_GROUP_NAME>
    • Name of CloudWatch log group to analyze
    • [default: /aws/lambda/FUNCTION]
  • --log-stream-filter <LOG_STREAM_FILTER>
    • Regex to filter CloudWatch log group stream. Useful when log group is shared by multiple functions
    • [example: /YOUR-FUNCTION-NAME/] when log streams are named like 2021/01/01/YOUR-FUNCTION-NAME[$LATEST]
  • -i, --iterations <ITERATIONS>
    • Number of iterations to invoke the function
    • It is recommended to set 30 at least. Because the number of collected cold starts often is a bit shorter than the specified ITERATIONS due to eventual consistency of CloudWatch Logs
    • [default: 100]
  • -v, --verbose
    • Print debug logs if enabled
  • -h, --help
    • Print help
  • -V, --version
    • Print version


  • mem
    • Memory size of the function
  • count
    • Number of cold starts collected
  • stddev, min, max
    • Standard deviation, minimum, and maximum of cold start time respectively
  • p50, p90, p95, p99, p995, p999
    • Percentiles of cold start time
    • For example, p50 is 50 percentile, also known as the median
    • p995 and p999 are 99.5 and 99.9 percentiles, respectively



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"}'



~572K SLoC