函数计算搭建 Serverless Web 应用(一)- HTTP 触发器
函數(shù)計(jì)算簡(jiǎn)介
阿里云?函數(shù)計(jì)算(Function Compute)?是事件驅(qū)動(dòng)的全托管計(jì)算服務(wù),是阿里云的?Serverless?計(jì)算平臺(tái)?;诤瘮?shù)計(jì)算構(gòu)建應(yīng)用,您無(wú)需管理服務(wù)器等基礎(chǔ)設(shè)施,而是專注于應(yīng)用邏輯的開(kāi)發(fā),大幅提高開(kāi)發(fā)效率。
借助函數(shù)計(jì)算,您幾乎可以構(gòu)建任何類型的應(yīng)用程序或后端服務(wù),包括 Web 應(yīng)用后端服務(wù),大規(guī)模文件處理,數(shù)據(jù)實(shí)時(shí)流式處理等等。函數(shù)計(jì)算能實(shí)時(shí)彈性伸縮計(jì)算資源來(lái)匹配您的應(yīng)用負(fù)載,使得您的系統(tǒng)能始終如一的、可靠的支撐業(yè)務(wù)的高速增長(zhǎng)。此外您只需為實(shí)際使用的資源付費(fèi),函數(shù)未執(zhí)行則不付費(fèi),財(cái)務(wù)成本顯著減低。
函數(shù)計(jì)算遇見(jiàn) Web 應(yīng)用
Web 應(yīng)用(Serverless web backend) 是函數(shù)計(jì)算很重要的一個(gè)使用場(chǎng)景。相比于傳統(tǒng)的在服務(wù)器上搭建 web 應(yīng)用,函數(shù)計(jì)算無(wú)需您管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫(xiě)代碼并上傳,函數(shù)計(jì)算會(huì)為您準(zhǔn)備好計(jì)算資源,以?彈性、可靠?的方式運(yùn)行您的代碼,實(shí)現(xiàn)毫秒級(jí)別彈性伸縮,輕松應(yīng)對(duì)峰值壓力。
為了更好地支持 Serverless web backend 的使用場(chǎng)景,提升用戶體驗(yàn),函數(shù)計(jì)算推出 HTTP 觸發(fā)器,即可以通過(guò) HTTP 請(qǐng)求觸發(fā)函數(shù)執(zhí)行,您只需將業(yè)務(wù)代碼寫(xiě)在函數(shù)中就可以搭建 Web 應(yīng)用,同時(shí),HTTP 觸發(fā)器各個(gè)編程語(yǔ)言對(duì)流行的 Web 框架做了不同程度的兼容,方便您將原有服務(wù)遷移到函數(shù)計(jì)算上來(lái),真正實(shí)現(xiàn)?一行代碼,一觸即發(fā)。
?
HTTP 觸發(fā)器
HTTP 觸發(fā)器,顧名思義,即 HTTP 請(qǐng)求可以觸發(fā)函數(shù)執(zhí)行。配置 HTTP 觸發(fā)器的函數(shù)可以通過(guò) HTTP 請(qǐng)求觸發(fā)執(zhí)行。此時(shí)函數(shù)可以看做一個(gè) Web 應(yīng)用,對(duì) HTTP 請(qǐng)求進(jìn)行處理,并將處理結(jié)果返回給調(diào)用端。
目前函數(shù)計(jì)算的 HTTP 觸發(fā)器支持 nodejs、python、php 等編程語(yǔ)言,并不同程度支持對(duì)應(yīng)的 Web 框架,具體內(nèi)容請(qǐng)參看?參考文檔。
使用示例
下面對(duì)使用 HTTP 觸發(fā)器搭建 Web 應(yīng)用的示例進(jìn)行介紹。
搭建基于 HTTP 觸發(fā)器的 Web 應(yīng)用分為三個(gè)步驟:
-
配置 HTTP 觸發(fā)器
- 只有配置了 HTTP 觸發(fā)器的函數(shù)才可以對(duì) HTTP 請(qǐng)求進(jìn)行處理;
- 值得注意的是配置了 HTTP 觸發(fā)器的函數(shù)接口與普通函數(shù)接口不同。
-
編寫(xiě)處理函數(shù)
- 編寫(xiě)處理函數(shù)的時(shí)候一定注意配置了 HTTP 觸發(fā)器的函數(shù)接口與普通函數(shù)接口不同。
-
測(cè)試函數(shù)執(zhí)行
- 通過(guò)向函數(shù) HTTP 發(fā)送請(qǐng)求觸發(fā)函數(shù)執(zhí)行,并檢驗(yàn)是否符合預(yù)期。
配置 HTTP 觸發(fā)器
單擊 【創(chuàng)建函數(shù)】,在創(chuàng)建函數(shù)頁(yè)面:
- 單擊 【選擇全部的語(yǔ)言】,在下拉菜單中選擇開(kāi)發(fā)語(yǔ)言。
- 選擇 【空白函數(shù)】。
- 按如下圖示配置 HTTP 觸發(fā)器,單擊 【下一步】。
- 認(rèn)證方式選擇 anonymous,不需要身份驗(yàn)證,支持匿名訪問(wèn)。
- 請(qǐng)求方式為此函數(shù)可以處理的 HTTP Method。
- 創(chuàng)建函數(shù)并填寫(xiě)所在服務(wù)、函數(shù)名稱、描述信息和運(yùn)行環(huán)境信息。
- 單擊【下一步】。
- 核對(duì)信息無(wú)誤后,單擊【創(chuàng)建】。
配置 HTTP 觸發(fā)器更多內(nèi)容請(qǐng)參考?配置 HTTP 觸發(fā)器官方文檔。
編寫(xiě)函數(shù)代碼
以 Python 為例,一個(gè)簡(jiǎn)單的示例代碼如下:
# -*- 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 herestatus = '200 OK'response_headers = [('Content-type', 'text/json')]start_response(status, response_headers)# Python2return [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()]更多編程語(yǔ)言的代碼示例及詳細(xì)信息請(qǐng)參考?編寫(xiě)函數(shù)代碼。
短短兩步,基于 HTTP 觸發(fā)器的 Web 應(yīng)用就搭建完成了,下面我們對(duì)函數(shù)進(jìn)行測(cè)試,看是否符合我們的預(yù)期。
測(cè)試函數(shù)執(zhí)行
您需要向函數(shù)發(fā)送 HTTP 請(qǐng)求測(cè)試函數(shù)執(zhí)行是否符合預(yù)期??梢酝ㄟ^(guò)瀏覽器發(fā)送 HTTP 請(qǐng)求、curl 發(fā)送 HTTP 請(qǐng)求進(jìn)行測(cè)試,控制臺(tái)也可以發(fā)送 HTTP 請(qǐng)求方便您的調(diào)試。
例如,通過(guò) curl 發(fā)送 HTTP 請(qǐng)求觸發(fā)函數(shù)執(zhí)行,結(jié)果如下:
~ 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"}%通過(guò)控制臺(tái)及瀏覽器發(fā)送 HTTP 請(qǐng)求請(qǐng)參考文章?測(cè)試函數(shù)執(zhí)行。
總結(jié)
使用 HTTP 觸發(fā)器可以快速搭建基于函數(shù)計(jì)算的 Web 服務(wù),按量付費(fèi),免運(yùn)維,毫秒級(jí)彈性擴(kuò)容,完美解決用戶痛點(diǎn)。
Serverless 時(shí)代已來(lái),一行代碼,一觸即發(fā)。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的函数计算搭建 Serverless Web 应用(一)- HTTP 触发器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员如何让自己 Be Cloud Na
- 下一篇: 一文带你领略虚拟化领域顶级技术会议KVM