# 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
2
3
4
Lambda Function
|- Function Code
|- Env Variables
|- Layers(0~5 Supports)

一個 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 使用前

image


# Lambda Layer 使用後

image


# 安全與版本管理

  • Immutable versioning: 每次更新 layer 會建立新版本
  • IAM Resource Policy: 可分享 layer 給其他帳號
  • Private Layer: 限定同帳號使用
  • Audit: 與 Lambda Function 相同,Cloud Trail + IAM

# Reference

  • AWS - 使用層管理 Lambda 相依項