首頁文章關於報價聯絡我們🌐 EN
返回首頁AWS
AWS Lambda 入門指南:無伺服器運算教學、定價、使用場景【2025】

AWS Lambda 入門指南:無伺服器運算教學、定價、使用場景【2025】

📑 目錄

AWS Lambda 入門指南:無伺服器運算教學、定價、使用場景【2025】AWS Lambda 入門指南:無伺服器運算教學、定價、使用場景【2025】

不想管伺服器?用 Lambda。上傳程式碼,AWS 幫你執行。沒有請求就不收錢,有請求自動擴展到幾千個並行。每月 100 萬次請求免費,超過的部分每百萬次只要 0.2 美元。

這篇文章會帶你認識 Lambda——從它是什麼、怎麼收費、支援什麼語言,到實際建立一個 Lambda 函式的完整步驟。



什麼是 AWS Lambda?

💡 重點摘要:Lambda 是 AWS 的無伺服器運算服務。你只要上傳程式碼,Lambda 會在有請求時自動執行,執行完畢就釋放資源。

無伺服器(Serverless)的意思

「無伺服器」不是真的沒有伺服器,而是你不用管伺服器

面向傳統方式(EC2)無伺服器(Lambda)
伺服器管理你要自己設定、維護AWS 全部處理
擴展手動或設定 Auto Scaling自動,無需設定
付費方式執行個體運行時間實際執行的毫秒數
閒置成本有(即使沒流量也收錢)無(沒請求不收錢)
容量規劃需要預估流量不需要

Lambda 的運作原理

觸發事件 → Lambda 啟動容器 → 執行你的程式碼 → 回傳結果 → 釋放資源
   │              │                │              │
   │         (冷啟動)        (計費開始)    (計費結束)
   │
HTTP 請求、S3 上傳、排程、訊息佇列...

Lambda 在背後使用 AWS 自己的容器技術 Firecracker(也用在 Fargate),可以在毫秒內啟動執行環境。

什麼時候該用 Lambda?

適合 Lambda:

不適合 Lambda:

Lambda vs EC2:如何選擇?

考量因素選 Lambda選 EC2
執行時間< 15 分鐘可能很長
請求模式不穩定、有尖峰穩定持續
維運能力不想管伺服器有能力維運
成本考量請求量低或不穩定持續高負載
特殊需求需要 GPU、特殊硬體

經驗法則:



Lambda 核心概念

函式與執行環境

Lambda 函式 是你上傳的程式碼,包含:

執行環境 是 Lambda 用來跑你程式碼的容器,包含:

支援的程式語言

Lambda 原生支援以下 Runtime:

Runtime版本說明
Node.js18.x, 20.x, 22.x最熱門選擇
Python3.9, 3.10, 3.11, 3.12資料處理常用
Java11, 17, 21企業應用
.NET6, 8C# 開發者
Go1.x高效能需求
Ruby3.2, 3.3Ruby 開發者
Rust透過 Custom Runtime極致效能

使用其他語言:

記憶體與執行時間配置

記憶體(Memory)

執行時間上限(Timeout)

配置建議:

場景記憶體Timeout
簡單 API 回應256-512 MB10 秒
資料處理1024-2048 MB1-5 分鐘
圖片處理2048-3008 MB1-3 分鐘
機器學習推論4096-10240 MB1-5 分鐘

並行執行(Concurrency)

Lambda 可以同時處理多個請求,每個請求用一個獨立的執行環境。

預設並行上限: 1,000(可申請提高)

Reserved Concurrency: 為特定函式保留並行配額

Provisioned Concurrency: 預先啟動執行環境,避免冷啟動

冷啟動(Cold Start)

當沒有現成的執行環境時,Lambda 需要啟動新環境,這叫「冷啟動」。

冷啟動時間:

減少冷啟動影響:

  1. 使用較輕量的 Runtime(Node.js、Python)
  2. 減少部署套件大小
  3. 使用 Provisioned Concurrency(付費)
  4. 保持函式「溫暖」(定期呼叫)


Lambda 定價模式

Lambda 的計費非常細緻,只算實際執行的時間。

計費項目

Lambda 費用 = 請求費 + 運算費 + (Provisioned Concurrency 費)

請求費用

每次呼叫 Lambda 都算一次請求。

價格:$0.20 / 百萬次請求

Free Tier:每月 100 萬次請求免費

運算費用

按「GB-秒」計費,也就是記憶體大小乘以執行時間。

價格:$0.0000166667 / GB-秒

Free Tier:每月 40 萬 GB-秒免費

計算方式:

GB-秒 = (記憶體 MB / 1024) × 執行時間(秒)
費用 = GB-秒 × 單價

費用計算範例

情境一:輕量 API

請求費 = (5,000,000 - 1,000,000) × $0.0000002 = $0.80
GB-秒 = 5,000,000 × 0.25 GB × 0.1 秒 = 125,000 GB-秒
運算費 = (125,000 - 400,000) = 0(未超過免費額度)
總計 ≈ $0.80/月

情境二:資料處理

請求費 = 0(未超過免費額度)
GB-秒 = 1,000,000 × 1 GB × 2 秒 = 2,000,000 GB-秒
運算費 = (2,000,000 - 400,000) × $0.0000166667 = $26.67
總計 ≈ $26.67/月

情境三:高流量 API

請求費 = (100,000,000 - 1,000,000) × $0.0000002 = $19.80
GB-秒 = 100,000,000 × 0.5 GB × 0.2 秒 = 10,000,000 GB-秒
運算費 = (10,000,000 - 400,000) × $0.0000166667 = $160.00
總計 ≈ $179.80/月

Provisioned Concurrency 費用

如果需要避免冷啟動,可以使用 Provisioned Concurrency:

額外費用:$0.000004646 / GB-秒(持續計費)

以 512 MB、10 個 Provisioned Concurrency 為例:

通常只在對延遲極度敏感的場景使用。



Lambda 觸發器介紹

Lambda 是事件驅動的,需要「觸發器」來啟動執行。

API Gateway

最常見的觸發方式,把 Lambda 變成 HTTP API。

用戶 → HTTP 請求 → API Gateway → Lambda → 回應

使用場景:

設定方式:

  1. 建立 API Gateway(REST 或 HTTP API)
  2. 建立路由和方法
  3. 整合後端選 Lambda
  4. 部署 API

S3 Event

當 S3 Bucket 發生事件(上傳、刪除)時觸發 Lambda。

用戶上傳檔案 → S3 → 觸發 Lambda → 處理檔案

使用場景:

可觸發的事件:

👉 實作範例:AWS S3 完整教學

EventBridge(CloudWatch Events)

排程執行或根據 AWS 服務事件觸發。

使用場景:

排程範例:

SQS / SNS

從訊息佇列或通知服務觸發。

SQS(Simple Queue Service):

Producer → SQS Queue → Lambda(批次處理)

SNS(Simple Notification Service):

Publisher → SNS Topic → Lambda(fan-out)

使用場景:

DynamoDB Streams

當 DynamoDB 表格有變更時觸發。

應用程式 → 寫入 DynamoDB → Stream → Lambda

使用場景:

其他觸發器

觸發器使用場景
Kinesis即時串流資料處理
Cognito用戶認證事件
CloudFront邊緣運算(Lambda@Edge)
IoTIoT 設備事件
Alexa語音助理技能


Lambda 建立教學

以下是建立第一個 Lambda 函式的完整步驟。

步驟一:登入 AWS Console

  1. 前往 AWS Console
  2. 搜尋「Lambda」,點擊進入

步驟二:建立函式

  1. 點擊「Create function」
  2. 選擇「Author from scratch」

基本資訊:

權限:

  1. 點擊「Create function」

步驟三:撰寫程式碼

在 Code source 區塊,你會看到預設的 Hello World 程式:

import json

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

參數說明:

修改為實用範例:

import json

def lambda_handler(event, context):
    # 取得請求參數
    name = event.get('queryStringParameters', {}).get('name', 'World')

    # 處理邏輯
    message = f'Hello, {name}!'

    # 回傳結果
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({
            'message': message
        })
    }

點擊「Deploy」儲存變更。

步驟四:測試函式

  1. 點擊「Test」標籤
  2. 建立測試事件:
{
  "queryStringParameters": {
    "name": "CloudSwap"
  }
}
  1. 點擊「Test」執行
  2. 查看執行結果:
{
  "statusCode": 200,
  "headers": {
    "Content-Type": "application/json"
  },
  "body": "{\"message\": \"Hello, CloudSwap!\"}"
}

步驟五:設定觸發器(API Gateway)

  1. 點擊「Add trigger」
  2. 選擇「API Gateway」
  3. 選擇:
    • API type:HTTP API
    • Security:Open
  4. 點擊「Add」

完成後會得到一個 API endpoint URL,可以直接在瀏覽器測試:

https://xxxxx.execute-api.us-east-1.amazonaws.com/default/my-first-lambda?name=Test

步驟六:查看監控

在 Monitor 標籤可以看到:



Lambda 使用場景

圖片處理

用戶上傳圖片到 S3,Lambda 自動產生縮圖。

架構:

用戶 → S3 (uploads/) → Lambda → S3 (thumbnails/)

程式碼範例(Python):

import boto3
from PIL import Image
import io

s3 = boto3.client('s3')

def lambda_handler(event, context):
    # 取得上傳的檔案資訊
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    # 下載原圖
    response = s3.get_object(Bucket=bucket, Key=key)
    image = Image.open(io.BytesIO(response['Body'].read()))

    # 產生縮圖
    image.thumbnail((200, 200))

    # 上傳縮圖
    buffer = io.BytesIO()
    image.save(buffer, 'JPEG')
    buffer.seek(0)

    thumbnail_key = key.replace('uploads/', 'thumbnails/')
    s3.put_object(Bucket=bucket, Key=thumbnail_key, Body=buffer)

    return {'statusCode': 200}

API 後端

搭配 API Gateway 建立 REST API。

架構:

前端 → API Gateway → Lambda → DynamoDB

優勢:

排程任務

每天定時執行的任務。

範例:每天清理過期資料

EventBridge 排程:cron(0 3 * * ? *)(每天凌晨 3 點)

import boto3
from datetime import datetime, timedelta

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('sessions')

def lambda_handler(event, context):
    # 計算過期時間(7 天前)
    expiry = datetime.now() - timedelta(days=7)

    # 掃描並刪除過期資料
    response = table.scan(
        FilterExpression='created_at < :expiry',
        ExpressionAttributeValues={':expiry': expiry.isoformat()}
    )

    for item in response['Items']:
        table.delete_item(Key={'session_id': item['session_id']})

    return {'deleted': len(response['Items'])}

資料處理管線

處理上傳的 CSV 檔案,轉換後存入資料庫。

架構:

用戶上傳 CSV → S3 → Lambda → 處理資料 → DynamoDB


Lambda 最佳實踐

效能優化

1. 減少部署套件大小

2. 重用連線

# 在 handler 外初始化,可重用
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('my-table')

def lambda_handler(event, context):
    # 使用已初始化的連線
    table.put_item(Item={...})

3. 選擇適當的記憶體

錯誤處理

1. 使用結構化日誌

import json
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    logger.info(json.dumps({
        'event': 'processing_started',
        'request_id': context.aws_request_id
    }))

2. 設定死信佇列(DLQ)

3. 實作重試邏輯

import time

def call_external_api(retry=3):
    for attempt in range(retry):
        try:
            # 呼叫外部 API
            return response
        except Exception as e:
            if attempt < retry - 1:
                time.sleep(2 ** attempt)  # 指數退避
            else:
                raise

安全性

1. 最小權限原則

2. 使用環境變數存機密資訊

import os
api_key = os.environ['API_KEY']

3. 啟用 VPC(如需存取私有資源)

👉 進階設定:AWS VPC 入門教學

無伺服器架構適合你嗎?讓專家幫你評估

Lambda 不是萬能的。什麼時候該用 Lambda、什麼時候該用 EC2、什麼時候該用容器?這需要根據你的具體需求來判斷。

CloudSwap 團隊有豐富的 Serverless 架構經驗,預約免費諮詢,讓我們幫你設計最適合的架構。



常見問題

Lambda 可以連接資料庫嗎?

可以。但要注意連線管理:

Lambda 冷啟動怎麼解決?

  1. 選擇較輕量的 Runtime(Python、Node.js)
  2. 減少依賴套件大小
  3. 使用 Provisioned Concurrency(付費)
  4. 定期呼叫保持「溫暖」(非正式做法)

Lambda 可以跑超過 15 分鐘嗎?

不行。如果任務需要更長時間:

Lambda 如何存取 VPC 資源?

在 Lambda 設定 VPC、子網路和安全群組。但注意:



下一步

Lambda 開啟了無伺服器架構的大門。掌握 Lambda,你就能建構更有彈性、更省成本的雲端應用。

建議的學習路徑:

  1. 實作:建立一個簡單的 API(API Gateway + Lambda + DynamoDB)
  2. 事件驅動:設定 S3 觸發 Lambda 處理檔案
  3. 排程任務:用 EventBridge 定時執行 Lambda
  4. 進階:學習 Step Functions 協調多個 Lambda

Serverless 架構規劃需要協助?

從 Lambda 函式設計、觸發器選擇到成本優化,Serverless 架構有很多細節需要考量。CloudSwap 團隊幫助過多家企業設計和優化無伺服器架構。

預約免費架構諮詢,讓我們幫你規劃最適合的 Serverless 方案。



延伸閱讀



AWSAzureDocker
上一篇
AWS 費用完整指南:定價模式、計算器教學、省錢技巧【2025】
下一篇
AWS vs GCP vs Azure 2025 完整比較:功能、價格、優缺點一次看