函数计算搭建 Serverless Web 应用(三)- 三分钟搭建 Web 应用
簡(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è)施,而是專(zhuān)注于應(yīng)用邏輯的開(kāi)發(fā),大幅提高開(kāi)發(fā)效率。
函數(shù)計(jì)算搭建 Serverless Web 應(yīng)用(一)- HTTP 觸發(fā)器?中闡述了 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ì)峰值壓力。
函數(shù)計(jì)算搭建 Serverless Web 應(yīng)用(二)- 自定義域名?中闡述了綁定自定義域名,通過(guò)自定義域名訪(fǎng)問(wèn)函數(shù),配合 HTTP 觸發(fā)器使用,為用戶(hù)使用函數(shù)計(jì)算搭建 Web 應(yīng)用提供便利。
本文對(duì)使用自定義域名 + HTTP 觸發(fā)器搭建 Web 應(yīng)用的步驟進(jìn)行詳細(xì)介紹,手把手帶您三分鐘搭建穩(wěn)定可靠的 Web 應(yīng)用。
搭建步驟
場(chǎng)景:本示例基于 HTTP 觸發(fā)器搭建 Web 應(yīng)用,有兩個(gè)函數(shù) f1 和 f2,作為示例,函數(shù)的功能只是打印出 request 請(qǐng)求,當(dāng)然,您可以在函數(shù)中編寫(xiě)任意業(yè)務(wù)邏輯。
預(yù)期效果:通過(guò)自定義域名進(jìn)行訪(fǎng)問(wèn)可以觸發(fā)函數(shù)執(zhí)行,得到預(yù)期結(jié)果。
前提:您有獨(dú)立的域名,且已經(jīng)接入阿里云備案(如果函數(shù)在非中國(guó)大陸節(jié)點(diǎn)的 region,無(wú)需備案)。
步驟一:創(chuàng)建配置 HTTP 觸發(fā)器的函數(shù)
單擊 【創(chuàng)建函數(shù)】,在創(chuàng)建函數(shù)頁(yè)面:
- 單擊 【選擇全部的語(yǔ)言】,在下拉菜單中選擇 node8 或 python2.7(本示例代碼會(huì)對(duì)兩種語(yǔ)言進(jìn)行介紹)。
- 選擇 【空白函數(shù)】。
- 按如下圖示配置 HTTP 觸發(fā)器,單擊 【下一步】。
- 創(chuàng)建函數(shù)并填寫(xiě)所在服務(wù)、函數(shù)名稱(chēng)、描述信息和運(yùn)行環(huán)境信息。
- 單擊【下一步】。
- 核對(duì)信息無(wú)誤后,單擊【創(chuàng)建】。
然后編寫(xiě)函數(shù)代碼
# -*- 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()]此處以 Python 為例,其他語(yǔ)言的代碼請(qǐng)參考文章?創(chuàng)建函數(shù)和 HTTP 觸發(fā)器。
步驟二:域名解析
為了保證您的自定義域名的請(qǐng)求可以到達(dá)函數(shù)計(jì)算,需要您在域名解析服務(wù)器處設(shè)置域名的 CNAME 為您函數(shù)計(jì)算的?endpoint。
endpoint 的格式為?<accountID>.<region>.fc.aliyuncs.com,您可以在函數(shù)計(jì)算控制臺(tái)右上角獲取當(dāng)前 region 的 endpoint。
使用阿里云云解析 DNS 對(duì)域名進(jìn)行解析請(qǐng)參考?域名解析。
步驟三:綁定自定義域名
您需要在函數(shù)計(jì)算控制臺(tái)綁定自定義域名:
- 登錄?函數(shù)計(jì)算控制臺(tái)
- 在控制臺(tái)首頁(yè)右側(cè)點(diǎn)擊進(jìn)入?自定義域名管理,即可綁定自定義域名并設(shè)置路由。
?
?
步驟四:測(cè)試
設(shè)置成功后,訪(fǎng)問(wèn)自定義域名進(jìn)行測(cè)試,示例演示通過(guò)命令行 curl url 進(jìn)行測(cè)試,您也可以通過(guò)瀏覽器測(cè)試。
~ curl api.app.com {"path": "/","queries": {},"headers": {"accept": "*/*","user-agent": "curl/7.58.0"},"method": "GET","requestURI": "/","clientIP": "42.120.75.144","serviceName": "serviceA","functionName": "functionA","body": "" }%~ curl api.app.com/b {"path": "/b","queries": {},"headers": {"accept": "*/*","user-agent": "curl/7.58.0"},"method": "GET","requestURI": "/b","clientIP": "42.120.75.144","serviceName": "serviceA","functionName": "functionB","body": "" }%~ curl api.app.com/a {"path": "/a","queries": {},"headers": {"accept": "*/*","user-agent": "curl/7.58.0"},"method": "GET","requestURI": "/a","clientIP": "42.120.75.144","serviceName": "serviceB","functionName": "functionC","body": "" }%~ curl api.app.com/a/b {"path": "/a/b","queries": {},"headers": {"accept": "*/*","user-agent": "curl/7.58.0"},"method": "GET","requestURI": "/a/b","clientIP": "42.120.75.144","serviceName": "serviceB","functionName": "functionD","body": "" }%總結(jié)
綁定自定義域名可以允許用戶(hù)通過(guò)自定義域名訪(fǎng)問(wèn) FC 的函數(shù),配合 HTTP 觸發(fā)器使用,可以快速搭建性能穩(wěn)定彈性可擴(kuò)容的 Web 應(yīng)用,可以說(shuō)是十分方便了。
您在使用過(guò)程中遇到任何問(wèn)題都可以隨時(shí)?聯(lián)系我們,函數(shù)計(jì)算團(tuán)隊(duì)所有工程師都會(huì)在群里實(shí)時(shí)進(jìn)行答疑,沒(méi)錯(cuò),所有工程師,任何問(wèn)題,隨時(shí)聯(lián)系。
期待您的使用~~
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的函数计算搭建 Serverless Web 应用(三)- 三分钟搭建 Web 应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Apache孵化器主席Justin Mc
- 下一篇: IP应用加速 – DCDN迈入全栈新篇章