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