Skip to content

Performance optimization

Optimize your Lambda functions for better performance, reduced cold start times, and lower costs. These techniques help minimize package size, improve startup speed, and reduce memory usage.

Reduce cold start times

  1. Minimize package size by excluding unnecessary files
  2. Use compiled dependencies when possible
  3. Leverage Lambda SnapStart or Provisioned concurrency when possible

Build optimization

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash

# Remove unnecessary files to reduce package size
find build/ -name "*.pyc" -delete
find build/ -name "__pycache__" -type d -exec rm -rf {} +
find build/ -name "*.dist-info" -type d -exec rm -rf {} +
find build/ -name "tests" -type d -exec rm -rf {} +
find build/ -name "test_*" -delete

# Remove documentation and examples
find build/ -name "docs" -type d -exec rm -rf {} +
find build/ -name "examples" -type d -exec rm -rf {} +

echo "✅ Package optimized"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash

# Create optimized layer structure
mkdir -p layer/python/

# Install only production dependencies
pip install aws-lambda-powertools[all] -t layer/python/ --no-deps
pip install pydantic -t layer/python/ --no-deps

# Remove unnecessary files from layer
find layer/ -name "*.pyc" -delete
find layer/ -name "__pycache__" -type d -exec rm -rf {} +
find layer/ -name "tests" -type d -exec rm -rf {} +

# Create layer zip
cd layer && zip -r ../optimized-layer.zip . && cd ..

echo "✅ Optimized layer created: optimized-layer.zip"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

# Remove unnecessary files
find build/ -name "*.pyc" -delete
find build/ -name "__pycache__" -type d -exec rm -rf {} +
find build/ -name "*.dist-info" -type d -exec rm -rf {} +
find build/ -name "tests" -type d -exec rm -rf {} +
find build/ -name "test_*" -delete

# Remove debug symbols from compiled extensions
find build/ -name "*.so" -exec strip --strip-debug {} \; 2>/dev/null || true
find build/ -name "*.so.*" -exec strip --strip-debug {} \; 2>/dev/null || true

# Remove additional bloat from common packages
rm -rf build/*/site-packages/*/tests/
rm -rf build/*/site-packages/*/test/
rm -rf build/*/site-packages/*/.git/
rm -rf build/*/site-packages/*/docs/
rm -rf build/*/site-packages/*/examples/
rm -rf build/*/site-packages/*/*.md
rm -rf build/*/site-packages/*/*.rst
rm -rf build/*/site-packages/*/*.txt

# Calculate size reduction
echo "📊 Package optimization completed"
du -sh build/ 2>/dev/null || echo "✅ Advanced optimization applied"