程式碼¶
程式碼 (Code) 任務讓你直接在工作流程 (Workflow) 的執行環境中跑一段 Python 程式碼。和 Lambda 任務(呼叫外部 AWS 函式)不同,這個任務會在平台內部即時執行你貼上的程式碼,適合做小型資料轉換、計算衍生欄位或寫一段內建任務不好表達的處理邏輯。
這頁能幫你做什麼¶
- 用一段 Python 程式碼即時處理、轉換上一步傳來的資料。
- 計算總計、整理欄位、做條件判斷等小型邏輯,不必另外部署到 AWS。
- 在正式抽成 Lambda 或自訂工具之前,快速試做原型。
開始前¶
需要會寫一小段 Python
這個任務要求你提供一個名為 handler 的 Python 函式。它接收一筆資料、處理後回傳結果。若不熟悉 Python、只想原樣傳遞或在傳遞時補欄位,可改用 Pass 任務。
操作步驟¶
-
在工作流程編輯器中新增一個程式碼任務(如何新增請見 任務使用指南)。

-
點選節點,右側開啟設定表單,停在「設定」分頁。
- 在「名稱」欄位為這個步驟取一個好辨識的名字。
-
在「執行環境」選擇要用「安全模式」還是「進階模式」(預設未選,見下方說明)。

上圖是下拉點開之後的樣子。以非管理員帳號登入時清單裡只有「安全模式」一張選項卡,看起來像沒東西可選,這是正常的(見下方權限說明),不是你點錯地方。
-
選定執行環境後,下方才會出現「程式碼」與「資料」欄位。在「程式碼」編輯器裡撰寫你的
handler函式——欄位不是空的,平台已經預帶一份骨架(含一行提醒函式必須叫handler的註解,以及一個接收data、回傳結果的空函式),照著改最快;不會寫 Python 也可以用「產生」()按鈕請系統代寫(見下方用「產生」讓系統幫你寫程式碼)。
-
視需要在「資料」欄位指定要傳進
handler的輸入(可用 JSONPath 從上一步取值,路徑寫法見 JSONPath 語法)。 - 設定「下一個狀態」。
- 可用表單上方的「測試任務」按鈕()試跑,確認輸出符合預期。
完整欄位說明¶
設定分頁¶
| 欄位 | 必填 | 預設 | 說明 |
|---|---|---|---|
| 名稱 | 是 | 無 | 這個步驟在工作流程中的識別名稱,須在同一工作流程內唯一。詳見 任務通用設定。 |
| 執行環境 | 是 | 空白(未選) | 選擇程式碼的執行模式。預設未選任何模式,需先選「安全模式」或「進階模式」,下方的「程式碼」「資料」欄位與「產生」鈕才會出現。兩者在功能、效能與安全性上不同,見下方「執行環境選項」。 |
| 程式碼 | 是 | 無 | 要執行的 Python 程式碼。必須定義一個名為 handler 的函式,由它接收輸入資料並回傳結果。相依欄位:先選定「執行環境」後才會出現。不會寫 Python 時,可用「產生」()鈕以文字描述請系統代寫,見用「產生」讓系統幫你寫程式碼。 |
| 資料 | 否 | {}(空 JSON 物件) | 要傳進 handler 處理的資料。欄位一出現就預帶一個空物件 {},不是空白。可填固定 JSON,也可把滑鼠移到欄位上、打開標籤右側出現的「JSONPath」開關從工作流程輸入動態帶入(開關平常隱藏,滑鼠移開就消失,見 任務通用設定)。維持 {} 代表不額外指定資料。相依欄位:先選定「執行環境」後才會出現。 |
| 下一個狀態 | 是 | 無 | 這步完成後要前往的下一個步驟。詳見 任務通用設定。 |
| 附註 | 否 | 空白 | 給這個步驟的備註說明,不影響執行。 |
用「產生」讓系統幫你寫程式碼¶
「程式碼」欄位旁有一顆「產生」按鈕()。它是給不會寫 Python 的人用的:用中文描述你要做什麼,系統就產生對應的 handler 函式。
-
點「產生」,會跳出一個對話框,裡面有三個欄位:
欄位 必填 說明 描述 是 用白話寫你要這段程式碼做什麼,例如「把每筆訂單的單價乘數量加總,回傳小計與品項數」。寫得越具體,產出越接近你要的。 輸入結構 否 這段程式碼會收到的資料長什麼樣(JSON 結構)。填了它,產生出來的程式碼才知道欄位名稱。 輸入範例 否 一筆實際的輸入資料範例,作用同上,用真實資料比描述結構更好懂。 -
按對話框的送出鈕,按鈕會變成「產生中...」;完成後產生的程式碼會直接覆蓋「程式碼」欄位裡原本的內容。
產生會蓋掉你原本寫的程式碼
「產生」不是在原有內容後面附加,而是整個取代。如果欄位裡已經有你自己改過的程式碼,先用編輯器工具列的複製鈕()備份一份再產生。產生出來的結果也務必按「測試任務」按鈕()跑一次確認,它是模型寫的,不保證正確。
執行環境選項¶
「執行環境」下拉選單預設未選任何模式,有兩個選項可選:
| 選項 | 說明 |
|---|---|
| 安全模式 | 在受限制的 Python 沙箱中執行,僅允許基本語法與內建函式,禁止網路請求、系統指令與檔案存取等高風險操作。適合資料清洗、格式轉換等常見處理,執行較安全穩定,但功能受限。 |
| 進階模式 | 在完整的 Python 執行環境中執行,支援安裝與使用外部套件、進行網路請求、檔案系統操作等進階功能。適合需要高度客製化或整合外部資源的情境,但可能帶來安全風險與不穩定,請確認程式碼來源可信。僅管理員可選。 |
「進階模式」僅管理員看得到
「執行環境」下拉只會對管理員帳號列出「進階模式」。若你的下拉只有「安全模式」一個選項,代表目前帳號不是管理員,這是正常的權限限制,不是故障。需要進階模式請洽管理員。
安全模式到底允許哪些套件?
平台沒有在畫面上列出白名單,實際可用的內建函式與套件以執行環境的沙箱設定為準。實務做法是先按「測試任務」按鈕()跑一次:若程式碼用到被擋掉的東西,測試輸出的 errors 欄位會直接告訴你是哪一行、哪個名稱不被允許,再據此改寫(例如把網路請求改成用 HTTPS API 任務 做、把檔案存取改成用儲存庫資源)。需要沙箱以外的套件時請洽管理員改用「進階模式」。
建議優先用「安全模式」
「進階模式」不會沙箱化你的程式碼。只有在程式碼完全可信、且安全模式缺少所需套件或功能時,才改用進階模式。
執行設定(摺疊區塊)¶
展開「設定」分頁底部的「執行設定」可看到下列共用欄位,完整說明見 任務通用設定。
| 欄位 | 必填 | 預設 | 說明 |
|---|---|---|---|
| 上傳輸出至外部記憶體 | 否 | 關閉 | 開啟後這步的輸出改存到外部記憶體,適合輸出資料量很大時使用。 |
| 在任務開始階段開啟即時輸出串流 | 否 | 關閉 | 開啟後,任務開始時把任務定義以串流方式即時送到執行頁面顯示。 |
| 在任務結束階段開啟即時輸出串流 | 否 | 關閉 | 開啟後,任務結束時把結果以串流方式即時送到執行頁面顯示。 |
| 錯誤時中止 | 否 | 開啟 | 開啟(預設)代表這步出錯時整個工作流程中止;關閉後改用下方「預設輸出」繼續往下走。 |
| 預設輸出 | 否 | 無 | 只在關閉「錯誤時中止」時出現,指定出錯時要改用的替代輸出值。 它展開後是一組英文標籤的子欄位(Errors + 這個任務的輸出欄位),見 預設輸出的子欄位。 |
輸入與輸出、錯誤處理¶
切到「輸入與輸出」、「錯誤處理」分頁可調整資料流與重試/捕捉規則,皆為各任務共用設定,完整說明見 任務通用設定。
實際範例¶
把訂單明細加總,計算小計與品項數量。
- 執行環境:安全模式
- 資料:
$.order - 程式碼:
def handler(data):
items = data.get("items", [])
subtotal = sum(i["price"] * i["quantity"] for i in items)
return {
"order_id": data["order_id"],
"subtotal": subtotal,
"item_count": sum(i["quantity"] for i in items),
}
當這步收到:
{
"order": {
"order_id": "ord-123",
"items": [
{"price": 49.99, "quantity": 2},
{"price": 19.99, "quantity": 1}
]
}
}
handler 會回傳 order_id、subtotal(119.97)與 item_count(3),交給下一步使用。