事件函數可以響應雲端服務產生的各種事件(如檔案上傳至Object Storage Service、監控產品觸發的警示等)。使用事件函數時,您只需編寫處理邏輯代碼,無需關注額外的事件整合、也無需購買及管理底層計算資源。此外,Function Compute僅在需要時運行執行個體並自動擴充,事件處理完畢後會自動銷毀執行個體,您只需按照資源使用量付費。
情境樣本
您有一些檔案需要儲存到OSS。為了加速上傳,您先將檔案壓縮為ZIP格式再上傳,在使用時希望直接使用檔案而不是ZIP包,因此需要一個自動化流程將檔案解壓並儲存回OSS。
採用傳統實現方法時,您需要構建並整合多個程式,以監控和處理OSS上的檔案變動,同時還要考慮這些程式的部署和維護問題。而使用事件函數實現,您可以專註於檔案處理常式。每當檔案上傳至OSS時都會產生事件,如果事件符合您設定的條件,函數將自動觸發並運行您的處理常式,並在完成後自動釋放計算資源,以節省開銷。
考慮到您當前可能沒有OSS Bucket,本文將通過下面的樣本帶您體驗事件函數的實現流程:
建立一個類比OSS檔案上傳的事件,該事件會調用一個事件函數來進行檔案處理,並在控制台列印出檔案名稱、所在Bucket等資訊。
通過實現這個樣本,您將體驗到以下內容:
用控制台完成建立事件函數、編寫請求處理常式、測試函數的完整流程;
瞭解Function Compute運行環境、內建運行時等關鍵概念;
瞭解請求處理常式中的請求參數
event和context。
前提條件
操作指引
1. 選擇函數類型
登入Function Compute控制台,在左側導覽列,選擇,在頂部功能表列,選擇您想要建立函數的地區,單擊建立函數,然後根據介面提示選擇並建立事件函數。
2. 選擇運行環境
Python
運行環境請選擇內建運行時-Python-Python 3.10。

對於事件函數推薦您搭配內建運行時作為函數運行環境,這是因為內建運行時包括了響應其他雲產品事件所必需的依賴(例如Python的oss2模組),更多資訊請參見環境說明。如果使用自訂運行時或自訂鏡像作為函數運行環境,還需要自行安裝所需依賴。關於各種運行環境的詳細對比,請參見運行時環境對比。
Node.js
運行環境請選擇內建運行時-Node.js-Node.js 20

對於事件函數推薦您搭配內建運行時作為函數運行環境,這是因為內建運行時包括了響應其他雲產品事件所必需的依賴(例如Node.js的ali-oss模組),更多資訊請參見環境說明。如果使用自訂運行時或自訂鏡像作為函數運行環境,還需要自行安裝所需依賴。關於各種運行環境的詳細對比,請參見運行時環境對比。
3. 建立函數
選擇Hello, world!樣本建立函數,進階配置保持預設值,單擊建立,然後等待函數建立完成。

建立完成後,可以在代碼頁簽的WebIDE中查看產生的範例程式碼,下圖以Python為例。

Hello, world範例程式碼會自動產生帶有入口程式的函數模板,您可以直接在此模板基礎上通過後續步驟構建您的業務代碼。
4. 修改範例程式碼並部署
Python、Node.js等解釋性語言支援在WebIDE中直接修改代碼並部署,而Java等編譯性語言只支援本地編譯程式碼封裝然後上傳,不支援WebIDE。
Python
在控制台的WebIDE中開啟index.py,將當前代碼替換為以下代碼,然後單擊部署代碼使修改的代碼生效。
Node.js
在控制台的WebIDE中開啟index.mjs,將當前代碼替換為以下代碼,然後單擊部署代碼使修改的代碼生效。
5. 測試函數
為了類比檔案上傳到OSS觸發函數的情境,我們將定義一個類比事件,並使用該事件觸發函數。
除了使用類比事件測試,您也可以使用真實的OSS事件觸發函數來測試,詳情請參見進階操作。
建立類比事件:在函數詳情頁面,單擊代碼頁簽,單擊測試函數右側的下拉框,選擇配置測試參數。在事件模板中選擇Object Storage Service,將自動產生一個類比事件,該事件的格式與真實OSS事件的格式相同。
您可以自訂事件名稱和事件對象中的參數值(例如OSS Bucket名稱和檔案名稱)。完成後單擊確定。

在代碼頁簽,單擊測試函數,將立即觸發函數執行。執行成功後查看返回結果,範例程式碼返回0代表事件處理成功。單擊日誌輸出,查看函數執行過程中輸出的日誌資訊。
測試函數時,Function Compute會將類比事件的內容通過
event參數傳遞給請求處理常式handler,並執行您在前一步驟中定義的代碼,即解析event參數並處理檔案。
6. (可選)清理資源
Function Compute按照實際資源使用量進行計費,已建立的函數資源如果不使用不會產生費用。但請留意您建立函數資源時關聯的其他雲產品或資源,例如儲存在OSS和NAS的資料。
如果您希望刪除函數,請登入Function Compute控制台,選擇,選擇地區,在目標函數的操作列,單擊刪除,然後在彈出的對話方塊,確認要刪除的函數已無任何觸發器等綁定資源後,再次確認刪除。
進階操作
現在您已經通過控制台建立了一個事件函數、修改了請求處理常式、並使用類比event測試了函數。您可以根據業務需求,參考以下進階操作:
添加觸發器:
考慮到您可能沒有OSS Bucket,本文中的樣本採用類比OSS檔案上傳事件的方式進行測試。如果您後續想要應用到您的實際業務中,您需要為函數添加一個OSS觸發器,請參見配置原生OSS觸發器。
除了Object Storage Service,許多阿里雲服務(如多款訊息佇列、Tablestore、SLS等)的事件也可以觸發Function Compute。請參見觸發器簡介,瞭解支援的觸發器列表。
添加依賴:雖然內建運行時包含了事件處理過程中涉及的常用依賴庫,但是在您的實際業務中可能仍然不滿足要求,這時最簡單的辦法是將代碼以及額外的依賴庫打包到一個ZIP檔案中作為程式碼封裝,上傳並部署到Function Compute,具體請參見部署程式碼封裝。如果您想減少程式碼封裝的體積以加速函數的冷啟動,可以通過層來管理依賴,詳情請參見建立自訂層。
配置日誌:為了便於對函數進行調試、排查問題或滿足安全審計等需求,建議您為函數配置日誌,詳細步驟請參見配置日誌功能。
相關文檔
除了使用控制台建立函數,您也可以使用Serverless Devs命令列工具來完成上述操作,請參見快速入門。
推薦您參考以下實踐教程,更深入地瞭解事件函數:

