# AWS - Lambda Layer
# Lambda Layer
AWS Lambda Layer 是提供 Lambda Function 中可重複使用的程式碼或是相依套件的封裝,使用 Lambda Layer 可以讓多個 Lambda Function 共用,避免每個 Lambda Function 都獨立打包依賴。
Lambda Layer 可以包含
- Library/Dependencies
- Runtime shared code
- Machine Learning Model
- CA Certificate or font file
# 概念架構
1 | Lambda Function |
一個 Function 最多支援 5 個 Layers
Lambda 執行會將 Layer 解壓縮到 /opt
# 為什麼要用 Lambda Layer
| 問題 | Layer 解法 |
|---|---|
| 每個 function 都 bundle depdencies 佔記憶體且升級麻煩 | 套件集中管理,減少重複部署 |
| 大 Library 導致部署包過大 | 程式碼精簡,提升部署速度 |
| 多 functions 共享邏輯難維護 | 單一更新,所有 functions 使用 |
最佳化部署大小 + 效能 + 維運性
- 減少了大量依賴 -> 更快冷啟動
- 避免 code package > 250 MB 限制 (已含 layers)
- 此外 Lambda Layer 不額外收費,成本仍由 Lambda 執行使用期間決定
# Lambda Layer 使用前

# Lambda Layer 使用後

# 安全與版本管理
- Immutable versioning: 每次更新 layer 會建立新版本
- IAM Resource Policy: 可分享 layer 給其他帳號
- Private Layer: 限定同帳號使用
- Audit: 與 Lambda Function 相同,Cloud Trail + IAM
# Reference
- AWS - 使用層管理 Lambda 相依項