AWS Lambda 無伺服器運算入門

A comprehensive guide to AWS Lambda serverless computing, covering function creation, supported runtimes, triggers, and pricing models

什麼是 AWS Lambda?

AWS Lambda 是 Amazon Web Services 提供的無伺服器運算服務,讓開發者可以執行程式碼而無需管理伺服器。您只需上傳程式碼,Lambda 會自動處理執行、擴展和高可用性等所有基礎設施管理工作。

Lambda 的核心優勢

  • 無需管理伺服器:完全免除伺服器維護工作
  • 自動擴展:根據請求量自動調整執行實例
  • 按使用量計費:只為實際執行時間付費
  • 高可用性:內建容錯機制與多可用區部署

建立 Lambda 函數步驟

步驟一:登入 AWS 管理控制台

  1. 前往 AWS 管理控制台
  2. 在服務搜尋欄輸入「Lambda」
  3. 點選 Lambda 服務進入控制台

步驟二:建立函數

  1. 點擊「建立函數」按鈕
  2. 選擇建立方式:
    • 從頭開始撰寫:自行編寫程式碼
    • 使用藍圖:使用預先建立的範本
    • 容器映像:使用 Docker 容器映像
    • 瀏覽無伺服器應用程式儲存庫:使用社群分享的應用程式

步驟三:設定基本資訊

1
2
3
4
函數名稱:my-first-lambda-function
執行階段:Python 3.11
架構:x86_64 或 arm64
權限:建立具有基本 Lambda 權限的新角色

步驟四:撰寫程式碼

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import json

def lambda_handler(event, context):
    # 處理傳入的事件
    name = event.get('name', 'World')

    return {
        'statusCode': 200,
        'body': json.dumps({
            'message': f'Hello, {name}!'
        })
    }

步驟五:測試函數

  1. 點擊「測試」標籤
  2. 建立測試事件
  3. 執行測試並檢視結果

支援的執行環境

AWS Lambda 支援多種程式語言執行環境:

執行環境支援版本
Node.js18.x, 20.x
Python3.9, 3.10, 3.11, 3.12
Java11, 17, 21
.NET6, 8
Go1.x
Ruby3.2, 3.3
自訂執行環境Amazon Linux 2, Amazon Linux 2023

使用容器映像

除了原生執行環境外,Lambda 也支援容器映像部署:

  • 映像大小上限:10 GB
  • 支援任何程式語言
  • 可使用自訂相依性

觸發器設定

Lambda 函數可透過多種 AWS 服務觸發執行:

API Gateway

建立 RESTful API 端點來觸發 Lambda:

1
2
3
觸發類型:API Gateway
API 類型:HTTP API 或 REST API
方法:GET, POST, PUT, DELETE 等

S3 事件

當 S3 儲存貯體發生變更時觸發:

  • 物件建立(PUT、POST、COPY)
  • 物件刪除
  • 物件還原

CloudWatch Events / EventBridge

設定排程執行或事件規則:

1
2
3
4
5
# 每 5 分鐘執行一次
rate(5 minutes)

# 每天上午 9 點執行(UTC)
cron(0 9 * * ? *)

其他常見觸發器

  • DynamoDB Streams:資料表變更觸發
  • SQS:訊息佇列觸發
  • SNS:通知服務觸發
  • Kinesis:串流資料觸發
  • ALB:應用程式負載平衡器觸發

定價模式

AWS Lambda 採用按使用量計費的定價模式:

免費方案

每月免費額度(永久免費):

  • 100 萬次請求
  • 40 萬 GB-秒的運算時間

計費項目

1. 請求數量

項目價格
每 100 萬次請求$0.20 USD

2. 持續時間

依據分配的記憶體和執行時間計算:

記憶體每 GB-秒價格
128 MB - 10,240 MB$0.0000166667 USD

計費範例

假設您的函數配置 512 MB 記憶體,每月執行 300 萬次,每次執行 200 毫秒:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
請求費用:
(3,000,000 - 1,000,000) × $0.20 / 1,000,000 = $0.40

運算費用:
記憶體:512 MB = 0.5 GB
時間:200 ms = 0.2 秒
GB-秒:3,000,000 × 0.5 × 0.2 = 300,000 GB-秒
免費額度後:300,000 - 400,000 = 0(未超過免費額度)

總費用:$0.40 / 月

其他費用考量

  • Provisioned Concurrency:預留並行執行能力額外計費
  • 資料傳輸:跨區域或對外傳輸資料需付費
  • 其他 AWS 服務:如 API Gateway、S3 等使用費用另計

最佳實踐

  1. 優化冷啟動時間

    • 減少程式碼套件大小
    • 使用 Provisioned Concurrency
    • 選擇適當的執行環境
  2. 有效管理相依性

    • 使用 Lambda Layers 共享程式庫
    • 只包含必要的相依性
  3. 適當配置記憶體

    • 更多記憶體 = 更多 CPU 效能
    • 進行效能測試找出最佳配置
  4. 實作錯誤處理

    • 使用 Dead Letter Queue(DLQ)
    • 設定適當的重試策略

結論

AWS Lambda 提供了強大且彈性的無伺服器運算能力,適合各種使用情境,從簡單的 API 端點到複雜的事件驅動架構。透過本文的介紹,您應該已經了解如何建立、設定和優化 Lambda 函數。開始您的無伺服器之旅吧!

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy