Function Compute支援HTTP觸發器,配置HTTP觸發器的函數可以通過HTTP請求被觸發執行。函數對HTTP請求進行處理,並將處理結果返回給調用端。本文介紹如何在Function Compute控制台配置HTTP觸發器並使用HTTP請求觸發。
前提條件
步驟一:建立觸發器
-
登入Function Compute控制台,在左側導覽列,選擇函數管理>函數列表。
-
在頂部功能表列,選擇地區,然後在函數列表頁面,單擊目標函數。
-
在函數詳情頁面,選擇觸發器頁簽,然後單擊建立觸發器。
-
在建立觸發程序面板,填寫相關資訊,然後單擊確定。
配置項 操作 本文樣本 觸發器類型 選擇HTTP 觸發器。 HTTP 觸發器 名稱 填寫自訂的觸發器名稱。 http-trigger 版本或別名 預設值為LATEST,如果您需要建立其他版本或別名的觸發器,需先在函數詳情頁的版本或別名下拉式清單選擇該版本。關於版本和別名的簡介,請參見版本管理和別名管理。 LATEST 要求方法 指定可以通過哪些方法觸發該HTTP觸發器。 GET, POST, PUT, DELETE 禁用公網存取 URL 預設不開啟,即允許公網網域名稱訪問該觸發器。
如果選擇開啟,建立的HTTP觸發器將不提供預設的公網網域名稱。此時,如果通過公網網域名稱來調用函數,將會提示錯誤access denied due to function internet URL is disable。通過自訂網域名的訪問,則不受影響。否 認證方式 選擇Function Compute對HTTP請求的認證方式。取值說明如下:
- 無需認證:無需對HTTP請求進行身份認證,支援匿名訪問,任何人可發起HTTP請求調用您的函數。
- 簽名認證:需要對HTTP請求進行身份認證。關於簽名認證的範例程式碼,請參見通過簽名訪問HTTP觸發器地址。
- Bearer 認證:需要對HTTP請求進行身份認證。關於Basic認證的範例程式碼,請參見為HTTP觸發器配置Basic認證鑒權。
- JWT 認證:需要對HTTP請求進行JWT認證。更多資訊,請參見為HTTP觸發器配置JWT認證鑒權。
- Bearer 認證:需要對HTTP請求進行Bearer認證。更多資訊,請參見為HTTP觸發器開啟Bearer認證鑒權。無需認證 建立完成後,您可以根據情況對HTTP觸發器的配置項進行修改,包括版本或別名、要求方法和認證方式等。
步驟二:編寫並部署代碼
完成建立HTTP觸發器後,您可以開始編寫函數代碼。
在函數詳情頁面,單擊代碼頁簽,在代碼編輯器中編寫代碼,然後單擊部署代碼。關於範例程式碼,請參見Function Compute文檔中不同運行時的請求處理常式文檔。
步驟三:測試函數
方式一:使用控制台測試函數
在函數詳情頁面,單擊代碼頁簽。
-
同步調用
單擊測試函數。
-
非同步呼叫
單擊測試函數右側的
表徵圖,選擇非同步呼叫,然後單擊測試函數。
執行完成後,在代碼頁簽,您可以查看執行結果。
方式二:使用cURL測試函數
-
在函數詳情頁面,選擇觸發器頁簽,在目標HTTP觸發器的配置資訊列擷取公網訪問地址。

-
在命令列執行Curl命令測試函數。
同步調用
curl -v https://example.cn-shenzhen.fcapp.run/$path
非同步呼叫
curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path
方式三:(不推薦)使用瀏覽器測試函數
-
在函數詳情頁面,選擇觸發器頁簽,然後在目標HTTP觸發器的配置資訊列擷取公網訪問地址,將此訪問地址輸入瀏覽器地址欄,按斷行符號鍵執行。
-
執行完成後,瀏覽器中會返回執行結果檔案。
(可選)使用API Gateway保護函數
Function Compute支援對HTTP請求進行匿名訪問,即任何人都可以發送HTTP請求調用您的函數。為防止非法使用者訪問您的函數,引起不必要的資源浪費或安全隱患,您可以開啟身份認證的同時將HTTP函數與API Gateway進行對接,利用API Gateway的IP存取控制外掛程式、JWT認證外掛程式或BasicAuth外掛程式等保護您的HTTP函數。
-
在Function Compute控制台找到目標函數,在函數詳情頁面選擇觸發器頁簽,單擊目標HTTP觸發器右側操作列的編輯。
-
在編輯觸發程序面板,開啟禁用公網存取 URL開關。
-
登入API Gateway控制台,切換至HTTP函數所在地區。
-
建立分組和API。
建立API使得外部應用能夠按照指定的方式調用內部的函數服務,使用API分組組織和管理多個相關的API介面,便於實施統一的安全性原則和流量控制措施。
-
在API Gateway控制台,左側導覽列選擇API 管理>分組管理,單擊建立分組。
-
在建立分組彈框頁面,選擇執行個體:,輸入分組名稱為
FC-Group,BasePath為/,然後單擊確定。 -
單擊目標分組右側操作列的API 管理,然後單擊建立 API,在基本資料欄,配置如下資訊,並單擊下一步。

-
在定義API請求欄,配置請求Path為
/,其他資訊保持預設,單擊下一步。
-
在定義API後端服務欄,配置觸發器路徑為Function Compute觸發器的內網訪問地址
https://example.cn-hangzhou-vpc.fcapp.run,如圖所示進行配置,並單擊下一步。
-
在定義返回結果欄,保持系統預設配置,單擊建立,在建立成功之後,單擊API操作列中的發布。
-
-
調試API,利用API Gateway提供的線上調試工具,可以在正式發布前測試API的功能是否按預期工作,及時發現並解決問題。調試通過表示網關API與Function Compute已連通。
-
在API Gateway控制台左側導覽列選擇API調用>調試。
-
在調試頁面選擇,所建立的
FC-testAPI,然後單擊發送請求,看到下圖資訊說明配置成功。
-
-
建立一個類型為後端簽名的外掛程式,
key和secret分別配置為您的阿里雲帳號的AccessKey ID和AccessKey Secret。然後綁定您剛才建立的API。具體操作,請參見外掛程式概述。
-
將您的網域名稱通過CNAME方式解析到API Gateway提供的次層網域上。
-
在API Gateway控制台,左側導覽列選擇API 管理>分組管理,選擇公網次層網域複製。

-
進入自己的網域名稱解析管理頁面,阿里雲的網域名稱解析管理頁面入口在:https://dnsnext.console.alibabacloud.com,在網域名稱列表頁面找到要管理的網域名稱,點擊網域名稱上的連結進入網域名稱的管理頁面。
說明中國內地Region的獨立網域名稱需要在阿里雲備案或者將備案接入阿里雲。
-
在API Gateway控制台,左側導覽列選擇API 管理>分組管理,進入獨立網域名稱地區。在頁面右下方看到綁定網域名稱的按鈕,點擊按鈕,填寫您的網域名稱,點擊確定後網域名稱綁定成功。

-
完成以上步驟後,您可以通過自己的網域名稱訪問HTTP函數。您還可以建立以下外掛程式,並將其綁定到您的API,保護您的HTTP函數。
錯誤排查
錯誤主要分為以下兩種。
請求錯誤是指發送的Request不符合標準,在Response裡報錯狀態代碼為4xx。
函數錯誤即編寫的函數有問題,會報5xx狀態代碼。
下表描述請求錯誤和函數錯誤可能出現的情境,以便您迅速排查問題。
| 錯誤類型 | HTTP狀態代碼 | 原因分析 | 是否計費 |
| 請求錯誤 | 400 | 您的請求超過Request限制項的限制。更多資訊,請參見HTTP觸發器概述。 | 否 |
| 400 | 調用需要身份認證的函數的Request沒有傳入Date資訊或Authorization資訊。 | 否 | |
| 403 | 調用需要身份認證的函數的Request的簽名錯誤,即Authorization不正確。由於Date參與簽名計算,且超過15 min,簽名失效,一種常見的原因是使用需要訪問認證的HTTP觸發器,Request header中發送的Date據目前時間超過15 min,導致簽名失效。 | 否 | |
| 403 | 您的Request請求使用HTTP觸發器中未配置的要求方法。例如,HTTP觸發器中的要求方法只配置GET方法,卻發送POST方法的HTTP請求。 | 否 | |
| 404 | 向沒有設定HTTP觸發器的函數發送HTTP請求。 | 否 | |
| 使用者流控 | 429 | 使用者被流控,可減小並發量或者聯絡Function ComputeTeam Dev提高並發度。 | 否 |
| 函數錯誤 | 502 | 函數的傳回值超過Response限制項的限制。更多資訊,請參見HTTP觸發器概述。 | 是 |
| 502 | 函數代碼有語法錯誤或者異常。 | 是 | |
| 502 | 向未使用HTTP入口函數的函數發送HTTP請求。 | 是 | |
| 系統錯誤 | 500 | Function Compute系統錯誤,可重試解決。 | 否 |
| 系統流控 | 503 | Function Compute系統流控。可用指數退避方式重試。 | 否 |
如果問題還未能解決,請加入DingTalk使用者群(DingTalk群號:64970014484),聯絡Function Compute工程師及時溝通處理。。