aws-lambda-managed-instances

aws-lambda-managed-instances

熱門

評估、配置並將工作負載遷移至 AWS Lambda Managed Instances (LMI)。在使用者帳戶內的 EC2 執行個體上執行 Lambda 函式,同時由 AWS 負責處理資源配置、系統修補、自動擴展、路由與負載平衡。當查詢提及 Lambda Managed Instances、LMI、容量提供者 (capacity providers)、多重並列執行環境、EC2 支撐的 Lambda、持久性 Lambda 執行個體、PerExecutionEnvironmentMaxConcurrency、CapacityProviderConfig、透過專用執行個體消除冷啟動、將標準 Lambda 遷移至託管執行個體,或是比較標準 Lambda 與搭配 Savings Plans 或 Reserved Instances 的 LMI 成本時觸發。

2253星標
225分支
更新於 2026/8/6
SKILL.md
唯讀
名稱
aws-lambda-managed-instances
描述

評估、配置並將工作負載遷移至 AWS Lambda Managed Instances (LMI)。在使用者帳戶內的 EC2 執行個體上執行 Lambda 函式,同時由 AWS 負責處理資源配置、系統修補、自動擴展、路由與負載平衡。當查詢提及 Lambda Managed Instances、LMI、容量提供者 (capacity providers)、多重並列執行環境、EC2 支撐的 Lambda、持久性 Lambda 執行個體、PerExecutionEnvironmentMaxConcurrency、CapacityProviderConfig、透過專用執行個體消除冷啟動、將標準 Lambda 遷移至託管執行個體,或是比較標準 Lambda 與搭配 Savings Plans 或 Reserved Instances 的 LMI 成本時觸發。

版本
1

AWS Lambda Managed Instances (LMI)

在使用者帳戶內的 EC2 執行個體上執行 Lambda 函式,同時由 AWS 負責處理資源配置、修補、自動擴展、路由與負載平衡。完美結合了 Lambda 優秀的開發者體驗與 EC2 彈性的計費及硬體選項。

最適合搭配 AWS MCP 伺服器 使用,以進行沙盒化 CLI 執行與稽核紀錄。所有指引也完全適用於標準 AWS CLI 或 SAM CLI。

注意: 在正式環境部署前,請務必比對 AWS 官方最新文件,確認區域可用性、配額與支援的執行個體類型。

快速決策:LMI 適合此工作負載嗎?

訊號 相當適合 LMI 建議使用標準 Lambda
流量 穩定、可預測、每月請求量 50M+ 突發性、不可預測、長時間無流量
成本 規模化下執行時間花費極高 呼叫頻率低或不定期
冷啟動 完全無法接受(LMI 透過預置容量消除冷啟動) 可接受
運算資源 需要最新 CPU、特定家族、高網路頻寬或 GPU 需求 標準 Lambda 的記憶體/CPU 即可滿足
隔離性 帳戶內專用的 EC2 執行個體,擁有完整 VPC 控制權 可接受共享的 Firecracker 微型虛擬機器 (micro-VMs)
歸零擴展 (Scale-to-zero) 無法自動歸零,但可利用 AWS 官方方案建立自訂排程 必須支援(閒置時完全免付費)
程式碼準備度 具備執行緒安全性(Node.js/Java/.NET)或任何 Python 程式碼 非執行緒安全程式碼,且重構成本過高

路由索引

閱讀與使用者任務完全匹配的單一參考文件,請勿預先載入多個參考檔。

使用者需求 動作
成本比較、計費分析、Savings Plans、Reserved Instances 閱讀 cost-comparison.md
執行個體類型、記憶體大小規劃、vCPU 比例、擴展調校、容量提供者設定 閱讀 configuration-guide.md
執行緒安全性、並行模型、程式碼審查清單、多重並行準備度 閱讀 thread-safety.md
遷移前後程式碼範例、特定執行環境遷移、連線池 (Connection Pooling) 閱讀 migration-patterns.md
IAM 角色、VPC 設定、CLI 命令、SAM 範本、CDK 範例 閱讀 infrastructure-setup.md
錯誤排除、限流 (Throttling)、除錯、部署停滯 閱讀 troubleshooting.md

疑難排解速查小知識(診斷問題時請務必提及):

  • 容量提供者卡在 CREATING 狀態 → 最常見原因為私有子網路缺少 NAT 閘道路由(執行個體需要外網連線以拉取映像檔並與 Lambda 服務通訊)
  • 函式無法自動擴展 → 請檢查是否已發布版本 (PublishToLatestPublished: true)
  • 記憶體不足錯誤 → LMI 的記憶體下限為 2048 MB

工作流程

步驟 1:評估工作負載

在提出建議之前,請先收集以下關鍵訊號:

  1. 流量型態:穩定還是突發?每秒請求數 (RPS) 有多少?
  2. 目前成本:每月 Lambda 花費?是否已有現成的 Savings Plans?
  3. 執行環境 (Runtime):Node.js、Java、.NET 還是 Python?
  4. 記憶體/CPU:需要多少記憶體?屬 CPU 密集型還是 I/O 密集型?
  5. 執行時間:平均與 P99 執行時間?
  6. 並行準備度:程式碼是否具備執行緒安全性?有無共享 /tmp 路徑?每次呼叫是否建立獨立的資料庫連線?
  7. VPC:是否已部署在 VPC 內?是否需要存取私有資源?

推薦使用 LMI 時,務必提醒:為了確保跨可用區域 (AZ) 的高可用性,最少需要 3 個執行環境(正式環境中不可低於 3 個)。

步驟 2:建立成本比較

必要步驟:在推薦 LMI 前,必須先提供成本比較報告。

經驗法則:在流量穩定且每月請求量達 5,000 萬至 1 億次 (50-100M+) 以上時,LMI 才開始具備成本競爭力。請使用 LMI 定價計算機 以取得精確比較。

步驟 3:配置部署參數

  • 執行個體家族(400+ 種類型,.large 以上):C 系列(運算優化)、M 系列(通用型)、R 系列(記憶體優化)。建議優先選用 ARM (Graviton) 以取得最佳性價比。
  • 使用 Graviton 執行個體時,函式設定必須同步指定 Architectures: [arm64]
  • 記憶體與 vCPU 比例:2:1(運算型)、4:1(通用型,預設)、8:1(記憶體型)。最小值 2 GB,最大值 32 GB。
  • 單一 vCPU 的多重並行上限:Node.js 64、Java 32、.NET 32、Python 16。這些是系統硬性上限 —— 實際設定值為 PerExecutionEnvironmentMaxConcurrency(針對每個執行環境,而非每個 vCPU)。
  • 針對 I/O 密集型工作負載:使用 Runtime 預設值或提高 PerExecutionEnvironmentMaxConcurrency(例如 Node.js 設為 10),因為每個請求在等待網路傳輸時佔用的 CPU 極少。
  • 針對 CPU 密集型工作負載:將 PerExecutionEnvironmentMaxConcurrency 設為每個 vCPU 1-2,因為每個請求都會使 CPU 接近飽和。
  • 擴展設定:MinExecutionEnvironments(預設 3)、MaxVCpuCount(選填,預設 400 —— 建議明確設定作為最佳實踐)、TargetResourceUtilization。

步驟 4:遷移程式碼

審查程式碼的並行安全性。LMI 會在每個執行環境中同時執行多個呼叫:

  • Python:基於處理程序 (Process) 的隔離 —— 全域變數不會共享。無需修改執行緒安全性。重點在於排查 /tmp 衝突與記憶體配置。
  • Node.js:Worker 執行緒 —— 全域變數在同一個 Worker 內共享。需要確保非同步 (Async) 安全性。
  • Java/.NET:作業系統執行緒 / Tasks —— Handler 會跨執行緒共享。需要完整的執行緒安全性。

步驟 5:建立基礎設施

  1. 建立兩個 IAM 角色:執行角色(供函式使用)與操作員角色(供容量提供者管理 EC2 使用)
  2. 設定涵蓋 3 個以上可用區域 (AZ) 子網路的 VPC
  3. 建立容量提供者,配置 VPC 參數與擴展上限
  4. 建立或更新函式,並附加至容量提供者
  5. 發布新版本(將觸發執行個體配置)

步驟 6:驗證與流量切換

  1. 先部署至非正式環境 (Non-production)
  2. 監控 CloudWatch:CPU 使用率、記憶體、並行數、限流率 (Throttle rate)
  3. 使用加權別名 (Weighted aliases) 進行平滑流量切換(10% → 50% → 100%)
  4. 在正式環境運作 1-2 週取得數據後比較成本
  5. 運作穩定後,退役舊有的標準 Lambda

最佳實踐

計費(討論成本時務必提及)

  • 三大計費元件:EC2 執行個體時數 + 15% 管理費 + $0.20 / 百萬次請求
  • Savings Plans:Compute Savings Plans 適用於 EC2 部分(最高可享 60-72% 折扣)
  • 15% 管理費:按 EC2 成本額外加收,用於支付 AWS 代為管理配置、修補、擴展與生命週期的費用

自動擴展(討論擴展或流量時務必提及)

  • LMI 能立即吸收 50% 的突發流量,並在 5 分鐘內將容量翻倍 —— 若流量翻倍的速度快於此限制,請求將會遭到限流
  • 標準 Lambda 可瞬間突發擴展至 3000 —— LMI 無法達到此瞬間速度
  • 在已知流量高峰前,先透過 MinExecutionEnvironments 進行預熱 (Pre-warm)
  • MaxVCpuCount(預設 400)—— 務必明確設定以作為成本天花板
  • 離峰調節:在非尖峰時段調低 MinExecutionEnvironments 以降低容量(為維持跨 AZ 高可用性,最低不得少於 3)

執行個體大小規劃

  • 每台執行個體需預留 1 vCPU + 1 GB 給作業系統開銷使用(函式無法使用此部分資源)
  • 可用容量 = 總資源 - 系統開銷

設定建議

  • 建議從 4:1 比例與 Runtime 預設並行數開始
  • 除非有特定 x86 依賴,否則優先使用 ARM (Graviton)
  • 除非需要特定硬體,否則讓 Lambda 自動選擇執行個體類型
  • 設定 MaxVCpuCount 以控制成本上限
  • 切勿將 MinExecutionEnvironments 設低於 3(否則會破壞 AZ 高可用性)

遷移策略

  • 優先從 I/O 密集型函式入手(最能從多重並行中獲益)
  • 在附加至容量提供者之前,務必審查程式碼的並行安全性
  • 使用加權別名進行漸進式流量切換
  • 在所有日誌輸出中包含 Request ID
  • 在 Handler 外部初始化資料庫連線池與 SDK 客戶端

運維監控

  • 設定 CloudWatch 警報:限流率 > 1% 以及 CPU 使用率 > 80%
  • 規劃 14 天的執行個體自動輪替機制
  • 切勿手動終止 LMI 創立的 EC2 執行個體(如需刪除,請直接刪除容量提供者)
  • 務必發布版本 —— 未發布版本的函式無法在 LMI 上執行

限制速查表

資源 限制
記憶體 最小 2 GB,最大 32 GB
執行環境 最少 3 個 (MinExecutionEnvironments,確保 AZ 高可用性)
執行個體壽命 14 天(系統自動替換)
並行數/vCPU 64 (Node.js), 32 (Java/.NET), 16 (Python)
執行環境 (Runtimes) Node.js 22+, Java 21+, .NET 8+, Python 3.13+, Rust (provided.al2023)
執行個體家族 C, M, R (.large 以上)
擴展速度 突發緩衝容量等於 TargetResourceUtilization 未使用的容量;新執行個體會在數分鐘內啟動

安全性考量

  • 操作員角色範圍限制:在信任策略中加入 aws:SourceAccountaws:SourceArn 條件,防範混淆代理人 (Confused Deputy) 攻擊。
  • VPC 出站流量 (Egress):將安全群組的出站流量限制在 VPC 端點安全群組或 AWS 前綴清單 (Prefix lists),而非開放 0.0.0.0/0。
  • 憑證管理:使用 AWS Secrets Manager 或 Parameter Store 管理資料庫憑證 —— 絕不將敏感憑證直接寫在環境變數中。
  • 加密:對靜止資料開啟 SQS SSE、CloudWatch Logs 加密 (KMS) 以及 S3 預設加密。
  • 日誌管理:設定 CloudWatch Log 群組的保留策略。避免記錄個人可識別資訊 (PII) 或憑證。為 Lambda 開啟 CloudTrail 資料事件。
  • 執行個體輪替:14 天自動輪替機制可確保在無需人工干預的情況下自動套用安全性修補程式。
  • 參考資料Lambda 安全性最佳實踐IAM 最佳實踐

檔案列表

檔案 內容
cost-comparison.md 定價分析、損益平衡計算、Savings Plans/RI 影響評估
configuration-guide.md 執行個體選擇、記憶體比例、擴展調校、容量提供者設定
thread-safety.md 各 Runtime 並行模型、程式碼審查清單、Powertools 相容性
migration-patterns.md 各 Runtime 遷移前後程式碼範例、連線池、平滑切換
infrastructure-setup.md IAM 角色、VPC 設定、SAM 範本、CLI 命令
troubleshooting.md 常見錯誤、限流、除錯、部署停滯處理