Function Compute支援應用型負載平衡 ALB(Application Load Balancer)作為事件來源,即支援將Function Compute設定為ALB的後端服務。ALB會將請求轉寄到Function Compute中的函數,並且同步返回函數調用結果。本文介紹如何配置ALB觸發函數執行。
前提條件
Function Compute
應用型負載平衡 ALB(Application Load Balancer)
使用限制
ALB執行個體和Function Compute服務屬於同一個地區。
Function Compute作為ALB後端伺服器的使用限制:
僅支援建立通過HTTP請求觸發的函數。
Function Compute要求用戶端在訪問函數時,HTTP要求標頭中包含Date頭域。Date頭域表示訊息發送的時間。
ALB使用Function Compute的使用限制:
ALB中伺服器群組類型選擇Function Compute類型,且後端伺服器組和監聽僅支援HTTP協議。
ALB僅支援添加一個Function Compute作為後端伺服器。
步驟一:編寫函數代碼並測試
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
- 在函數管理頁面,單擊目標函數名稱。
在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼。
代碼修改樣本如下。
var getRawBody = require('raw-body'); var getFormBody = require('body/form'); var body = require('body'); /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (req, resp, context) => { console.log('hello world'); var params = { path: req.path, queries: req.queries, headers: req.headers, method : req.method, requestURI : req.url, clientIP : req.clientIP, log : ("Hello World.This is FC!"), } getRawBody(req, function(err, body) { for (var key in req.queries) { var value = req.queries[key]; resp.setHeader(key, value); } resp.setHeader("Content-Type", "text/plain"); params.body = body.toString(); resp.send(JSON.stringify(params, null, ' ')); }); /* getFormBody(req, function(err, formBody) { for (var key in req.queries) { var value = req.queries[key]; resp.setHeader(key, value); } params.body = formBody; console.log(formBody); resp.send(JSON.stringify(params)); }); */ }單擊函數代碼頁簽的測試函數。
執行完成後,您可以在函數代碼頁簽的上方查看執行結果。
步驟二:建立Function Compute類型的伺服器組
在應用型負載平衡ALB控制台的左側導覽列選擇伺服器組,在頂部功能表列選擇目標地區,單擊建立伺服器組。
在左側導覽列,選擇。
在伺服器組頁面,單擊建立伺服器組,完成以下配置,然後單擊建立。

配置項
說明
伺服器群組類型
選擇伺服器群組類型。本文選擇Function Compute類型。
伺服器組名稱
自訂。
選擇後端協議
選擇一種後端協議。本文選擇HTTP。
選擇資源群組
選擇歸屬的資源群組。
配置健全狀態檢查
開啟健全狀態檢查
開啟或關閉健全狀態檢查。本文保持預設配置,即關閉健全狀態檢查。
進階配置
如果需要開啟健全狀態檢查,請按需修改進階配置中的資訊。更多資訊,請參見建立和管理伺服器組。
在伺服器組建立成功對話方塊單擊添加後端伺服器。
在後端伺服器頁簽,單擊設定Function Compute。
在添加後端伺服器面板,選擇以下任意一種方式完成配置,然後單擊確定。
通過選擇資源
配置項
說明
配置方式
選擇通過選擇資源。
服務
選擇目標函數所屬的服務。
版本
選擇LATEST。新建立的服務,預設只有一個LATEST版本。
函數
選擇目標函數。
備忘
自訂。
通過ARN配置
配置項
說明
配置方式
選擇通過ARN配置。
ARN
輸入目標函數的ARN。關於如何擷取函數ARN,請參見擷取函數ARN。
備忘
自訂。
添加後端伺服器面板會顯示添加成功!,單擊關閉,您可以在後端伺服器頁簽,查看已配置的後端伺服器。
步驟三:建立ALB執行個體並配置監聽
在頂部功能表列選擇所屬地區。本文選擇華東1(杭州)。
在執行個體頁面,單擊建立應用型負載平衡。
在應用型負載平衡(隨用隨付)購買頁面,完成參數配置。
此處僅列出和本文強相關的配置項。關於其餘參數的配置,請參見建立和管理ALB執行個體。
地區:本文選擇華東1(杭州)。
執行個體網路類型:本文選擇公網。
在執行個體頁面,找到已建立的ALB執行個體,在目標執行個體操作列下單擊建立監聽,然後開啟監聽設定精靈。
在配置監聽設定精靈,完成以下配置,然後單擊下一步。
配置項
說明
選擇負載平衡協議
選擇監聽的協議類型。 本文選擇HTTP。
監聽連接埠
輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠,連接埠範圍為[1,65535]。本文輸入80。
監聽名稱
自訂。
進階配置
本文使用預設配置。
在選擇伺服器組設定精靈的選擇伺服器組下拉式清單,選擇Function Compute類型,並選擇步驟二:建立Function Compute類型的伺服器組建立的後端伺服器組,然後單擊下一步。
在組態稽核設定精靈,確認配置資訊,單擊提交。
步驟四:連通性測試
完成上述操作後,Function Compute和ALB已經建立了串連。您可以通過以下操作,測試Function Compute和ALB的連通性。
開啟命令列視窗,執行curl - v命令擷取Date頭域。
Function Compute要求HTTP訪問要求標頭中包含Date頭域。
curl -v <ALB執行個體網域名稱>
執行curl - H命令,嘗試訪問ALB執行個體的網域名稱。
curl -H "Date頭域" <ALB執行個體網域名稱>如下圖所示,收到如下所示的回複報文,則表示ALB可以將請求轉寄至Function Compute並調用函數。

更多資訊
除了Function Compute控制台,您還可通過以下方式配置觸發器:
通過Serverless Devs工具配置觸發器。更多操作,請參見Serverless Devs。
通過SDK配置觸發器。更多操作,請參見SDK列表。
如需對建立的觸發器進行修改或刪除,請參見觸發器管理。