全部產品
Search
文件中心

Function Compute:函數類型選型

更新時間:Jul 06, 2024

為滿足不同情境下的使用者需求,Function Compute提供事件函數和HTTP函數兩種函數類型。本文介紹Function Compute支援的函數類型的適用情境及差異,供您進行技術選型。

選型分析

Function Compute支援兩種類型的函數:事件函數和HTTP函數。

  • 事件函數適用於事件驅動模型中通過事件發生來調用關聯函數。

  • HTTP函數適用於快速構建Web應用等情境。

Function Compute的編程模型中,入口函數的模型由函數名、函數入參和傳回值三部分組成。其中,函數入參也可以調用代碼中定義的其他函數。

事件函數和HTTP函數在觸發方式和函數入參兩方面的區別如下。

函數類型

觸發方式

函數入參

事件函數

您可以通過觸發函數執行來實現某個特定功能。事件函數支援通過定時器、調用API/SDK或其他阿里雲服務的觸發器來觸發函數執行。支援建立任何除HTTP觸發器以外類型的觸發器,例如OSS觸發器、SLS觸發器、CDN事件觸發程序、Tablestore觸發器和EventBridge觸發器等。關於支援的觸發器類型和更多資訊,請參見觸發器簡介。所有支援類型的觸發器均可觸發事件函數。

以Node.js語言為例,一個簡單的入口函數模型如下所示。

exports.handler = function(event, context, callback) {
  callback(null, 'hello world');
}

入參說明

函數入參

解釋說明

event

您調用函數時傳入的事件數目據,您可以根據實際情況對其進行轉換。

context

Function Compute平台定義的函數入參,它的資料結構由Function Compute設計,包含函數運行時的資訊,例如請求ID、臨時密鑰等。

callback

系統定義的函數,作為入口函數的入參用於返回調用函數的結果。

有關Node.js事件函數的更多資訊,請參見事件請求處理常式(Event Handler)。有關其他程式設計語言的函數入參介紹,請參見開發語言列表

HTTP函數

HTTP函數僅支援通過發送HTTP/HTTPS請求來觸發函數執行。您可以自行配置觸發方式,例如GET、POST、PUT、DELETE、HEAD和PATCH方式。

為函數建立HTTP觸發器後,HTTP觸發器通過發送HTTP/HTTPS請求觸發函數執行。一個版本或別名下僅支援建立一個HTTP觸發器。具體資訊,請參見HTTP觸發器概述

以Node.js語言為例,一個簡單的入口函數模型如下所示。

exports.handler = function(request, response, context) {
  response.send(null, 'hello world');
}

入參說明

函數入參

解釋說明

request

請求結構體,包括HTTP要求標頭部索引值對、要求方法和用戶端IP地址等。

response

響應介面,包括HTTP回應標頭部索引值對和HTTP body等。

context

Function Compute平台定義的函數入參,它的資料結構由Function Compute設計,包含函數運行時的資訊,例如請求ID、臨時密鑰等。

有關Node.js HTTP函數的更多資訊,請參見HTTP請求處理常式(HTTP Handler)。有關其他程式設計語言的函數入參介紹,請參見開發語言列表