函數計算搭建 Serverless Web 應用(三)- 三分鐘搭建 Web 應用

摘要: 本文對使用自定義域名 + HTTP 觸發器搭建 Web 應用的步驟進行詳細介紹,手把手帶您三分鐘搭建穩定可靠的 Web 應用。node

簡介
阿里雲 函數計算(Function Compute) 是事件驅動的全託管計算服務,是阿里雲的 Serverless 計算平臺。基於函數計算構建應用,您無需管理服務器等基礎設施,而是專一於應用邏輯的開發,大幅提升開發效率。python

函數計算搭建 Serverless Web 應用(一)- HTTP 觸發器 中闡述了 Web 應用(Serverless web backend) 是函數計算很重要的一個使用場景。相比於傳統的在服務器上搭建 web 應用,函數計算無需您管理服務器等基礎設施,只需編寫代碼並上傳,函數計算會爲您準備好計算資源,以 彈性、 可靠 的方式運行您的代碼,實現毫秒級別彈性伸縮,輕鬆應對峯值壓力。web

函數計算搭建 Serverless Web 應用(二)- 自定義域名 中闡述了綁定自定義域名,經過自定義域名訪問函數,配合 HTTP 觸發器使用,爲用戶使用函數計算搭建 Web 應用提供便利。json

本文對使用自定義域名 + HTTP 觸發器搭建 Web 應用的步驟進行詳細介紹,手把手帶您三分鐘搭建穩定可靠的 Web 應用。api

搭建步驟
場景:本示例基於 HTTP 觸發器搭建 Web 應用,有兩個函數 f1 和 f2,做爲示例,函數的功能只是打印出 request 請求,固然,您能夠在函數中編寫任意業務邏輯。瀏覽器

預期效果:經過自定義域名進行訪問能夠觸發函數執行,獲得預期結果。服務器

前提:您有獨立的域名,且已經接入阿里雲備案(若是函數在非中國大陸節點的 region,無需備案)。app

步驟一:建立配置 HTTP 觸發器的函數
登陸 函數計算管理控制檯。
新建服務,本示例的服務名稱爲 web-server,開啓【高級配置】,配置日誌項目和日誌倉庫,角色建立方式爲新建角色,系統受權模板選擇 AliyunLogFullAccess,點擊 【受權】,點擊【肯定】。
在左側導航欄選擇服務,進入到新建的服務中。
單擊 【建立函數】,在建立函數頁面:less

單擊 【選擇所有的語言】,在下拉菜單中選擇 node8 或 python2.7(本示例代碼會對兩種語言進行介紹)。
選擇 【空白函數】。
按以下圖示配置 HTTP 觸發器,單擊 【下一步】。python2.7

認證方式選擇 anonymous,不須要身份驗證,支持匿名訪問。
請求方式爲此函數能夠處理的 HTTP 請求方式。
圖片描述
建立函數並填寫所在服務、函數名稱、描述信息和運行環境信息。
單擊【下一步】。
覈對信息無誤後,單擊【建立】。
而後編寫函數代碼

-- 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()]

此處以 Python 爲例,其餘語言的代碼請參考文章 建立函數和 HTTP 觸發器。

步驟二:域名解析
爲了保證您的自定義域名的請求能夠到達函數計算,須要您在域名解析服務器處設置域名的 CNAME 爲您函數計算的 endpoint。

endpoint 的格式爲 <accountID>.<region>.fc.aliyuncs.com,您能夠在函數計算控制檯右上角獲取當前 region 的 endpoint。

使用阿里云云解析 DNS 對域名進行解析請參考 域名解析。

步驟三:綁定自定義域名
您須要在函數計算控制檯綁定自定義域名:

登陸 函數計算控制檯
圖片描述
在控制檯首頁右側點擊進入 自定義域名管理,便可綁定自定義域名並設置路由。
圖片描述
圖片描述

步驟四:測試
設置成功後,訪問自定義域名進行測試,示例演示經過命令行 curl url 進行測試,您也能夠經過瀏覽器測試。

~ 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": ""

}%
總結
綁定自定義域名能夠容許用戶經過自定義域名訪問 FC 的函數,配合 HTTP 觸發器使用,能夠快速搭建性能穩定彈性可擴容的 Web 應用,能夠說是十分方便了。

您在使用過程當中遇到任何問題均可以隨時 聯繫咱們,函數計算團隊全部工程師都會在羣裏實時進行答疑,沒錯,全部工程師,任何問題,隨時聯繫。

期待您的使用~~

相關文章
相關標籤/搜索