您好,登錄后才能下訂單哦!
摘要: Web 應用(Serverless web backend) 是函數計算很重要的一個使用場景。相比于傳統的在服務器上搭建 web 應用,函數計算無需您管理服務器等基礎設施,只需編寫代碼并上傳,函數計算會為您準備好計算資源,以 彈性、可靠 的方式運行您的代碼,實現毫秒級別彈性伸縮,輕松應對峰值壓力。
阿里云 函數計算(Function Compute) 是事件驅動的全托管計算服務,是阿里云的 Serverless 計算平臺。基于函數計算構建應用,您無需管理服務器等基礎設施,而是專注于應用邏輯的開發,大幅提高開發效率。
借助函數計算,您幾乎可以構建任何類型的應用程序或后端服務,包括 Web 應用后端服務,大規模文件處理,數據實時流式處理等等。函數計算能實時彈性伸縮計算資源來匹配您的應用負載,使得您的系統能始終如一的、可靠的支撐業務的高速增長。此外您只需為實際使用的資源付費,函數未執行則不付費,財務成本顯著減低。
Web 應用(Serverless web backend) 是函數計算很重要的一個使用場景。相比于傳統的在服務器上搭建 web 應用,函數計算無需您管理服務器等基礎設施,只需編寫代碼并上傳,函數計算會為您準備好計算資源,以 彈性 、 可靠 的方式運行您的代碼,實現毫秒級別彈性伸縮,輕松應對峰值壓力。
為了更好地支持 Serverless web backend 的使用場景,提升用戶體驗,函數計算推出 HTTP 觸發器,即可以通過 HTTP 請求觸發函數執行,您只需將業務代碼寫在函數中就可以搭建 Web 應用,同時,HTTP 觸發器各個編程語言對流行的 Web 框架做了不同程度的兼容,方便您將原有服務遷移到函數計算上來,真正實現 一行代碼,一觸即發 。
HTTP 觸發器,顧名思義,即 HTTP 請求可以觸發函數執行。配置 HTTP 觸發器的函數可以通過 HTTP 請求觸發執行。此時函數可以看做一個 Web 應用,對 HTTP 請求進行處理,并將處理結果返回給調用端。
目前函數計算的 HTTP 觸發器支持 nodejs、python、php 等編程語言,并不同程度支持對應的 Web 框架,具體內容請參看 參考文檔 。
下面對使用 HTTP 觸發器搭建 Web 應用的示例進行介紹。
搭建基于 HTTP 觸發器的 Web 應用分為三個步驟:
配置 HTTP 觸發器
只有配置了 HTTP 觸發器的函數才可以對 HTTP 請求進行處理;
值得注意的是配置了 HTTP 觸發器的函數接口與普通函數接口不同。
編寫處理函數
編寫處理函數的時候一定注意配置了 HTTP 觸發器的函數接口與普通函數接口不同。
測試函數執行
通過向函數 HTTP 發送請求觸發函數執行,并檢驗是否符合預期。
登錄 函數計算管理控制臺 。
新建服務,本示例的服務名稱為 web-server,所屬區域為華東2,開啟【高級配置】,配置日志項目和日志倉庫,角色創建方式為新建角色,系統授權模板選擇
AliyunLogFullAccess
,點擊 【授權】,點擊【確定】。
在左側導航欄選擇服務,進入到新建的服務中。
單擊 【創建函數】,在創建函數頁面:
認證方式選擇 anonymous,不需要身份驗證,支持匿名訪問。
請求方式為此函數可以處理的 HTTP Method。
單擊 【選擇全部的語言】,在下拉菜單中選擇開發語言。
選擇 【空白函數】。
按如下圖示配置 HTTP 觸發器,單擊 【下一步】。
創建函數并填寫所在服務、函數名稱、描述信息和運行環境信息。
單擊【下一步】。
核對信息無誤后,單擊【創建】。
配置 HTTP 觸發器更多內容請參考 配置 HTTP 觸發器官方文檔 。
以 Python 為例,一個簡單的示例代碼如下:
# -*- coding: utf-8 -*-import json HELLO_WORLD = b"Hello world!\n"def handler(environ, start_response): request_uri = environ['fc.request_uri'] response_body = { 'uri':environ['fc.request_uri'], 'method':environ['REQUEST_METHOD'] } # do something here status = '200 OK' response_headers = [('Content-type', 'text/json')] start_response(status, response_headers) # Python2 return [json.dumps(response_body)] # Python3 tips: When using Python3, the str and bytes types cannot be mixed. # Use str.encode() to go from str to bytes # return [json.dumps(response_body).encode()]
更多編程語言的代碼示例及詳細信息請參考 編寫函數代碼 。
短短兩步,基于 HTTP 觸發器的 Web 應用就搭建完成了,下面我們對函數進行測試,看是否符合我們的預期。
您需要向函數發送 HTTP 請求測試函數執行是否符合預期。可以通過瀏覽器發送 HTTP 請求、curl 發送 HTTP 請求進行測試,控制臺也可以發送 HTTP 請求方便您的調試。
例如,通過 curl 發送 HTTP 請求觸發函數執行,結果如下:
~ curl https://123456.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/web-server/testHttp/ {"uri": "/2016-08-15/proxy/web-server/testHttp/", "method": "GET"}%
通過控制臺及瀏覽器發送 HTTP 請求請參考文章 測試函數執行 。
使用 HTTP 觸發器可以快速搭建基于函數計算的 Web 服務,按量付費,免運維,毫秒級彈性擴容,完美解決用戶痛點。
Serverless 時代已來,一行代碼,一觸即發。
HTTP 觸發器文檔
HTTP 觸發器示例
設置 HTTP 觸發器的 Nodejs 函數入口
設置 HTTP 觸發器的 Python 函數入口
設置 HTTP 觸發器的 PHP 函數入口
函數計算搭建 Serverless Web 應用(二)- 自定義域名
函數計算搭建 Serverless Web 應用(三)- 三分鐘搭建 Web 應用
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。