Lambda入門:當溫度數據抵達時自動觸發運算的最小範例
工廠IT技術人員專用AWS LambdaIoT Core規則引擎ATLANTIS 自有品牌
Lambda入門:當溫度數據抵達時自動觸發運算的最小範例
ATLANTIS的品牌使命「Re-Atlantis」,源自對古代理想文明精密秩序的追求。在雲端架構的世界裡,「事件驅動」正是這種秩序的展現——不需要工程師隨時盯著螢幕,系統會在對的時間點自動反應。這也是本篇要帶你認識的核心概念:Lambda無伺服器運算。詳見 ATLANTIS 品牌故事。
一、為什麼是Lambda?無伺服器運算對工廠監控系統的意義
在前兩篇文章中,我們示範了「感測器 → RS-485 → MQTT發布 → AWS IoT Core」的資料流,以及如何用主控台或Python程式「訂閱」驗證資料是否送達。但光是把資料送上雲端還不夠——資料本身不會自動判斷異常、不會自動發送告警。這正是Lambda要解決的問題。
伺服器數量
免費請求額度
Lambda開始執行的延遲
與Lambda函式
Lambda是什麼?用工廠比喻理解「無伺服器」
如果把傳統伺服器比喻成「一台24小時待命的機台」,那Lambda就像是「感應式自動化設備」——只有當特定事件發生(例如溫度數據抵達),系統才會啟動運算,執行完畢後立即釋放資源。你不需要租一台伺服器24小時開機等待溫度數據,也不需要煩惱伺服器當機或維護,AWS會自動處理底層運算資源的配置與回收。
本篇的最小目標
建立一條最簡單的資料路徑:溫度數據透過MQTT發布到AWS IoT Core → 規則引擎偵測到符合條件的訊息 → 自動觸發Lambda函式 → Lambda印出並判斷是否超過警戒值。全程不需要撰寫任何常駐訂閱程式,這也是與第二篇「Python程式訂閱」架構最大的差異:Lambda是「事件觸發」,而非「持續監聽」。
二、架構總覽:從IoT Core規則引擎到Lambda
整條路徑的核心在於③:規則引擎(Rules Engine)。它用類似SQL的語法,從MQTT主題中篩選出符合條件的訊息,並將訊息內容傳遞給Lambda函式作為輸入事件(event)。這一步不需要寫任何程式碼,完全在AWS主控台上用設定完成。
三、建立第一條IoT Core規則:從主題到Lambda
步驟一:撰寫規則的SQL篩選語句
在AWS IoT Core主控台的「規則(Rules)」頁面新增規則時,需要填入一段SQL-like查詢語句,決定要篩選哪些訊息、擷取哪些欄位。以下是本篇範例使用的查詢語句:
規則SQL語句範例
FROM 'factory/+/+/temperature/#'
這段語句代表:「選取所有欄位,並額外附加訊息來源的主題路徑,資料來源為符合factory/+/+/temperature/#樣式的所有主題」。你也可以加上WHERE條件,例如只篩選溫度超過某個數值的訊息,減少不必要的Lambda觸發次數。
進階範例:只篩選溫度超過80度的訊息
FROM 'factory/+/+/temperature/#'
WHERE temperature > 80
把篩選邏輯放在規則引擎這一層,而不是全部交給Lambda判斷,有一個實務上的好處:可以降低Lambda的觸發次數與費用,因為只有真正符合條件的異常訊息才會啟動運算。
步驟二:新增「動作(Action)」,指定觸發的Lambda函式
在規則設定頁面的「動作」區塊,選擇「傳送訊息至Lambda函式(Send a message to a Lambda function)」,並選擇你已建立好的Lambda函式名稱。儲存後,這條規則就會開始運作:只要有符合SQL條件的MQTT訊息進來,就會自動呼叫指定的Lambda函式。
四、撰寫最小可行的Lambda函式
以下是本篇的核心範例:一個不到20行的Lambda函式,接收IoT Core規則引擎傳來的事件,判斷溫度是否異常,並將結果印出到CloudWatch日誌。
範例一:最小溫度異常判斷 Lambda函式
def lambda_handler(event, context):
# event即為規則引擎依SQL語句篩選後傳入的訊息內容
print("收到事件:", json.dumps(event))
device_id = event.get("device_id", "unknown")
temperature = event.get("temperature")
source_topic = event.get("source_topic", "")
if temperature is None:
print("警告:事件中未包含temperature欄位")
return {"statusCode": 400, "body": "缺少temperature欄位"}
if temperature > 80:
print(f"[異常告警] 主題:{source_topic}"
f" 裝置:{device_id} 溫度:{temperature}°C 超過警戒值")
else:
print(f"裝置 {device_id} 溫度正常:{temperature}°C")
return {"statusCode": 200, "body": json.dumps("處理完成")}
這段程式碼刻意保持最小:沒有連接資料庫、沒有發送通知,目的是先確認「規則引擎 → Lambda」這條路徑本身是通的。等你在CloudWatch日誌中看到自己印出的訊息,就代表整個事件驅動架構已經成功打通,接下來才是加上SNS告警、DynamoDB寫入等進階功能(這些會在系列文章後續篇章展開)。
Lambda函式的執行角色(Execution Role)設定
建立Lambda函式時,AWS會要求指定一個「執行角色(Execution Role)」,這個IAM角色決定了Lambda函式可以存取哪些AWS資源。對於本篇的最小範例,只需要最基本的AWSLambdaBasicExecutionRole(允許寫入CloudWatch日誌)即可;後續若要加上SNS告警或DynamoDB寫入,需要額外授權對應的權限。
五、如何測試:不用真的等感測器資料,也能驗證Lambda是否正常運作
Lambda主控台提供「測試事件(Test Event)」功能,可以直接在網頁上模擬一筆規則引擎會傳入的事件內容,不需要真的觸發現場感測器發布數據。
測試事件範例JSON
"device_id": "ATL-STT-001",
"temperature": 92.5,
"unit": "C",
"timestamp": 1784812345,
"source_topic": "factory/taipei-plant1/line1/temperature/ATL-STT-001"
}
在Lambda主控台建立這個測試事件後,點擊「測試(Test)」按鈕執行,即可在畫面下方看到執行結果與print()輸出的日誌內容,快速確認函式邏輯是否正確,而不需要等待真實感測器數據抵達。
三種驗證層次,建議依序完成
| 驗證層次 | 驗證方式 | 目的 |
|---|---|---|
| 第一層:函式邏輯驗證 | Lambda主控台「測試事件」 | 確認程式碼本身邏輯正確,不涉及IoT Core |
| 第二層:規則引擎串接驗證 | 用第一篇的Python發布程式手動發送一筆訊息 | 確認規則引擎能正確篩選並觸發Lambda |
| 第三層:端到端現場驗證 | 從實體ATLANTIS溫度變送器讀取真實數據並發布 | 確認完整資料管線在現場環境穩定運作 |
依序完成這三層驗證,可以大幅降低除錯難度——當某一層出問題時,你能明確知道是「程式邏輯」、「雲端串接」還是「現場環境」的問題,而不是面對整條管線一起除錯。
六、Lambda觸發方式比較:IoT Core規則 vs 其他常見架構
| 觸發方式 | 適用情境 | 延遲特性 | 工廠監控建議 |
|---|---|---|---|
| IoT Core規則引擎直接呼叫 | 即時事件驅動運算(如本文範例) | 毫秒級,最低延遲 | 異常告警、即時判斷首選 |
| Amazon SQS佇列 | 需要緩衝、批次處理大量訊息 | 視佇列處理速度而定 | 高流量、可容忍些微延遲的場景 |
| Amazon Kinesis串流 | 大規模即時串流分析 | 秒級,依串流分片設定 | 多產線、大量感測點的進階分析 |
| 排程觸發(EventBridge) | 定期批次運算,非事件驅動 | 依排程間隔(如每5分鐘) | 定期彙總報表、非即時性統計 |
對於本系列文章設定的「工廠IT技術人員入門」情境,IoT Core規則引擎直接觸發Lambda是最單純、最容易理解的架構,也是後續要加上SNS告警、DynamoDB儲存的基礎骨架。待系統規模擴大、感測點數量大幅增加後,再評估是否需要導入SQS或Kinesis做流量緩衝。
Lambda費用試算:小規模工廠監控通常落在免費額度內
| 情境 | 每月觸發次數估算 | 是否落在免費額度 |
|---|---|---|
| 10支感測器,每30秒觸發一次 | 約86.4萬次/月 | 落在每月100萬次免費請求額度內 |
| 30支感測器,每30秒觸發一次 | 約259萬次/月 | 超出免費額度,需依實際請求數計費 |
| 10支感測器,僅異常時觸發(規則篩選) | 依實際異常事件數量,通常遠低於上述估算 | 幾乎必定落在免費額度內 |
這也是為什麼我們在第三節建議把篩選條件寫在規則引擎的SQL語句中,而不是讓每一筆訊息都觸發Lambda再由函式內部判斷——這樣不僅降低費用,也讓CloudWatch日誌更乾淨,只記錄真正需要關注的事件。實際費率請以AWS官網最新公告為準。
七、ATLANTIS 適合搭配Lambda異常判斷架構的量測產品

ATT-P4/D4系列 管路型溫度傳送器 —— 不鏽鋼外殼搭配德國進口感測元件,可輸出4-20mA或數位訊號,適合搭配規則引擎設定溫度異常門檻

RTD-907A 白金電阻溫度計 —— 4線Pt100歐姆感溫棒設計,消除引線電阻影響,適合需要高精度異常判斷的雲端監控應用

DTS-4ED(0.5) 數位溫度開關 —— 雙組開關輸出搭配LED顯示,本地告警與雲端Lambda判斷可雙重並行,提高異常反應可靠度
DPTX 防爆差壓傳送器 —— 半導體矽材料壓阻效應設計,適用於需要同時監控壓力與觸發雲端異常告警的防爆環境
完整規格請參考 ATLANTIS 產品型錄與精密溫度感測器完整決策指南。
八、案例分享:某南部電子廠的Lambda異常判斷導入過程
以下案例經匿名化處理,客戶為台灣南部一家電子製造廠,主要監控製程冷卻水溫度,原先僅依賴PLC本地告警,導入AWS IoT Core與Lambda後的過程如下。
| 階段 | 作法 | 耗時 | 成效 |
|---|---|---|---|
| 第一週 | 建立IoT Core規則,SQL篩選溫度超過設定門檻的訊息 | 1天 | 確認規則引擎正確路由訊息 |
| 第二週 | 撰寫最小Lambda函式,先僅印出日誌驗證 | 半天 | 確認事件驅動架構打通 |
| 第三週 | Lambda函式加上SNS通知邏輯(下一篇主題) | 1天 | 異常時值班人員手機立即收到簡訊 |
| 第四週 | 正式上線並觀察一週穩定性 | 持續監控 | 異常反應時間從原本PLC本地告警燈的「巡檢才發現」,縮短為「即時簡訊通知」 |
資深工程師分享:「很多工廠IT一開始會想把Lambda函式寫得很複雜,一次把告警、資料庫、報表全部塞進去。但我們建議的做法剛好相反——先寫一個只會print的最小函式,確認整條路徑真的通了,再一層一層往上加功能。這跟儀錶校正的邏輯完全一樣:先確認基準點是對的,才有資格談後面的精密調校。」
資料來源與延伸閱讀
本文技術架構參考 AWS Lambda 官方文件與 AWS IoT Core 規則引擎官方文件(docs.aws.amazon.com)。費用與免費額度數字請以AWS官網最新公告為準。ATLANTIS產品技術規格引用自內部產品規格書與出廠檢驗報告。
十、20 大常見問題 FAQ(Lambda入門與IoT Core規則引擎)
1. Lambda函式的event參數裡面到底是什麼?
event參數就是規則SQL語句SELECT子句所選取出來的欄位內容,格式為JSON物件,可直接用event.get("欄位名稱")取值。2. 規則引擎的SQL語句和一般資料庫SQL一樣嗎?
SELECT、FROM、WHERE等基本子句,以及topic()等內建函式,但不支援複雜的JOIN等操作。3. 一個Lambda函式可以被多條IoT Core規則觸發嗎?
4. Lambda函式執行失敗,規則引擎會重試嗎?
5. AWSLambdaBasicExecutionRole具體允許做什麼?
6. 為什麼建議在規則SQL加WHERE條件,而不是全部交給Lambda判斷?
7. Lambda函式的逾時設定要設多少?
8. 測試事件(Test Event)和真實IoT Core觸發的event格式會不同嗎?
SELECT欄位設計,確保測試情境與正式環境一致。9. Lambda可以同時處理溫度和壓力兩種數據嗎?
FROM子句涵蓋溫度與壓力兩種主題路徑,並在Lambda函式內依事件中是否包含temperature或pressure欄位分流處理邏輯,或分別建立兩條規則對應兩個不同的Lambda函式,依團隊偏好選擇架構。10. CloudWatch日誌要保留多久?會不會產生額外費用?
11. Lambda函式可以直接發簡訊或Email告警嗎?
12. 如果我不熟悉Python,可以用其他語言寫Lambda嗎?
13. 規則引擎的WHERE條件可以用複合條件嗎(例如溫度和壓力同時超標)?
14. Lambda函式版本更新後,正在執行中的舊版本會受影響嗎?
15. 一條IoT Core規則可以同時觸發Lambda和寫入DynamoDB嗎?
16. Lambda函式的記憶體設定要怎麼選?
17. 規則引擎觸發Lambda失敗時,我怎麼知道發生了什麼事?
18. 我可以用同一個Lambda函式服務多個工廠據點嗎?
FROM子句涵蓋所有據點的主題路徑(例如使用萬用字元factory/+/+/temperature/#),並在Lambda函式內依事件中的廠區代號欄位分流處理告警邏輯或儲存位置。19. Lambda函式的程式碼要放在哪裡管理?
20. 學會這篇的Lambda入門後,下一步該學什麼?
十一、下一步:讓 ATLANTIS 協助你完成感測器選型與雲端事件驅動架構規劃
31年工業儀錶製造經驗 × 完整數位輸出產品線
從變送器選型、規則引擎門檻設定,到Lambda異常判斷邏輯規劃,我們可以陪工廠IT團隊完成從硬體到雲端事件驅動的完整驗證流程。
📞 02-2820-3405 免費選型諮詢 📧 線上快速詢價
業務一部 Ian:ian@atlantis.com.tw | 業務二部 Nori:nori@atlantis.com.tw
文章更新時間:2026年7月|作者:ATLANTIS 應用工程團隊|本文為系列教學文章第三篇,下一篇將深入「用AWS Lambda解析Modbus/RS-485感測器封包資料」。