使用fcapp.run運(yùn)行您的RESTful應(yīng)用
函數(shù)計(jì)算支持為每個(gè)新創(chuàng)建的HTTP觸發(fā)器分配子域名fcapp.run
,通過該域名可以訪問您的RESTful應(yīng)用。本文介紹如何在不修改代碼的情況下,使用fcapp.run
訪問您的RESTful應(yīng)用。
背景信息
函數(shù)計(jì)算支持HTTP觸發(fā)器,即允許使用HTTP協(xié)議來調(diào)用函數(shù)。函數(shù)計(jì)算通過一個(gè)共享的API Server組件為您提供響應(yīng)HTTP觸發(fā)器調(diào)用的服務(wù)。調(diào)用函數(shù)時(shí),需要依賴URL中的Path將客戶流量路由到客戶的函數(shù)容器內(nèi)部。容器內(nèi)收到的HTTP請(qǐng)求Path會(huì)帶有函數(shù)計(jì)算的路由標(biāo)識(shí)。如果您在函數(shù)計(jì)算部署了RESTful風(fēng)格的應(yīng)用,則會(huì)出現(xiàn)404報(bào)錯(cuò)。
最初,函數(shù)計(jì)算提供了原生的RESTful架構(gòu),將每個(gè)函數(shù)視為一個(gè)獨(dú)立的資源,通常一個(gè)函數(shù)只負(fù)責(zé)一小塊功能,也就是一個(gè)API。如果一個(gè)函數(shù)只對(duì)應(yīng)一個(gè)API,那么在函數(shù)代碼中也不必去實(shí)現(xiàn)一套路由邏輯去響應(yīng)不同URL Path路徑的請(qǐng)求。
函數(shù)計(jì)算現(xiàn)已引入Custom Runtime和Custom Container函數(shù),您可以直接在函數(shù)計(jì)算中運(yùn)行自己存量的應(yīng)用,而不必按照函數(shù)計(jì)算推薦的架構(gòu)去拆分自己的應(yīng)用。社區(qū)內(nèi)比較成熟的項(xiàng)目的開發(fā)習(xí)慣是在一個(gè)程序中開發(fā)大量的REST API,因此會(huì)存在進(jìn)程內(nèi)的路由邏輯,將不同路徑的請(qǐng)求轉(zhuǎn)發(fā)到不同的方法進(jìn)行處理。
使用fcapp.run調(diào)用函數(shù)
函數(shù)計(jì)算為每個(gè)新創(chuàng)建的HTTP觸發(fā)器分配了一個(gè)獨(dú)立的域名,格式為{random_string}.{region_id}.fcapp.run
。使用該域名訪問函數(shù)計(jì)算時(shí),函數(shù)計(jì)算會(huì)按照域名進(jìn)行路由,將流量轉(zhuǎn)發(fā)至函數(shù)容器內(nèi),避免了依賴Path進(jìn)行路由而對(duì)客戶代碼造成的侵入性。
假設(shè)HTTP觸發(fā)器對(duì)應(yīng)的函數(shù)中封裝了多個(gè)API,分別為/function1
、/function2
、/function3
,那么使用fcapp.run調(diào)用的URL如下:
{random_string}.{region_id}.fcapp.run/function1
{random_string}.{region_id}.fcapp.run/function2
{random_string}.{region_id}.fcapp.run/function3
使用fcapp-test.run進(jìn)行本地網(wǎng)頁(yè)測(cè)試
函數(shù)計(jì)算的主域名aliyuncs.com
無(wú)法為客戶提供網(wǎng)站類型的業(yè)務(wù),所有的函數(shù)請(qǐng)求結(jié)果將在瀏覽器中以附件的方式下載,對(duì)于網(wǎng)站屬性的函數(shù),返回的HTML文本以及JavaScript代碼無(wú)法正常顯示。此時(shí),您可以通過為函數(shù)綁定已備案的自定義域名來解決該問題。更多信息,請(qǐng)參見HTTP觸發(fā)器概述。
您也可以通過測(cè)試域名fcapp-test.run
以及添加本地的host解析的方式來解決以上問題,請(qǐng)求結(jié)果將不會(huì)以附件的方式下載,可以正常進(jìn)行網(wǎng)頁(yè)調(diào)試。示例腳本如下:
# 1. 從頁(yè)面獲取fcapp.run的域名
FC_DOMAIN='serviceName-functionName-vtnazzbxrr.cn-hangzhou.fcapp.run'
FC_TEST_DOMAIN=`echo ${FC_DOMAIN} | sed 's/fcapp.run/fcapp-test.run/g'`
echo "FC域名:${FC_DOMAIN}"
echo "FC測(cè)試域名:${FC_TEST_DOMAIN}"
# 2. 查詢域名解析的IP
FC_IP=`ping ${FC_DOMAIN} -c 1 | HEAD -1 | awk '{print $3}' | sed 's/[():]//g'`
echo "FC IP: ${FC_IP}"
# 3. 修改host文件,將測(cè)試域名的本地解析指向fcapp.run
# 如果沒有權(quán)限需要手動(dòng)加
sudo -- sh -c "printf '\n${FC_IP} ${FC_TEST_DOMAIN}\n' >> /etc/hosts"
cat /etc/hosts
# 4. 使用測(cè)試域名在瀏覽器訪問函數(shù)
curl -v "${FC_TEST_DOMAIN}"
使用函數(shù)計(jì)算運(yùn)行WordPress官方鏡像
函數(shù)計(jì)算支持您在不修改任何業(yè)務(wù)代碼的前提下遷移自己的RESTful應(yīng)用。下面以遷移WordPress應(yīng)用為例進(jìn)行說明。
前提條件
函數(shù)計(jì)算
云數(shù)據(jù)庫(kù)RDS
說明您也可以使用已有RDS MySQL實(shí)例,并為WordPress服務(wù)初始化相應(yīng)的賬號(hào)以及數(shù)據(jù)庫(kù)。
創(chuàng)建RDS MySQL實(shí)例時(shí),請(qǐng)確保為其設(shè)置的VPC與函數(shù)計(jì)算的服務(wù)的VPC配置保持一致,且白名單配置中已添加函數(shù)計(jì)算服務(wù)的網(wǎng)絡(luò)配置中vSwitch的IP地址段。關(guān)于函數(shù)計(jì)算的網(wǎng)絡(luò)配置,請(qǐng)參見配置網(wǎng)絡(luò)。關(guān)于RDS MySQL數(shù)據(jù)庫(kù)白名單的配置,請(qǐng)參見配置數(shù)據(jù)庫(kù)訪問IP地址白名單。
容器鏡像服務(wù)
已拉取WordPress鏡像并推送到阿里云容器鏡像倉(cāng)庫(kù)。具體操作,請(qǐng)參見使用個(gè)人版實(shí)例推送拉取鏡像。
說明支持個(gè)人版和企業(yè)版實(shí)例推送拉取鏡像,本文以個(gè)人版實(shí)例為例進(jìn)行說明。
操作步驟
- 登錄函數(shù)計(jì)算控制臺(tái),在左側(cè)導(dǎo)航欄,單擊服務(wù)及函數(shù)。
- 在頂部菜單欄,選擇地域,然后在服務(wù)列表頁(yè)面,單擊目標(biāo)服務(wù)。
在函數(shù)管理頁(yè)面單擊創(chuàng)建函數(shù),然后選擇使用容器鏡像創(chuàng)建,完成以下配置后,單擊創(chuàng)建。
選擇WordPress官方鏡像,并設(shè)置容器內(nèi)監(jiān)聽端口為80。具體操作步驟,請(qǐng)參見創(chuàng)建Custom Container函數(shù)。
修改函數(shù)配置,將數(shù)據(jù)庫(kù)配置以環(huán)境變量的方式注入函數(shù)容器內(nèi)。
配置環(huán)境變量的步驟,請(qǐng)參見環(huán)境變量。
需設(shè)置的環(huán)境變量與數(shù)據(jù)庫(kù)配置的對(duì)應(yīng)關(guān)系如下所示:
WORDPRESS_DB_HOST:您為RDS MySQL實(shí)例創(chuàng)建的數(shù)據(jù)庫(kù)連接內(nèi)網(wǎng)地址。
WORDPRESS_DB_NAME:您創(chuàng)建的數(shù)據(jù)庫(kù)賬號(hào)。
WORDPRESS_DB_PASSWORD:您創(chuàng)建的數(shù)據(jù)庫(kù)賬號(hào)密碼。
WORDPRESS_DB_USER:您創(chuàng)建的數(shù)據(jù)庫(kù)名稱。
在瀏覽器地址欄輸入函數(shù)計(jì)算為HTTP觸發(fā)器分配的域名測(cè)試函數(shù)。
函數(shù)創(chuàng)建完成后,函數(shù)計(jì)算自動(dòng)為其創(chuàng)建一個(gè)HTTP觸發(fā)器,您可以從觸發(fā)器的配置信息中獲取域名信息。WordPress應(yīng)用對(duì)應(yīng)的API會(huì)以該域名為根路徑進(jìn)行調(diào)用。
使用以下測(cè)試地址測(cè)試前需先單擊該地址,在彈出的面板單擊下載本地系統(tǒng)對(duì)應(yīng)的配置腳本,并執(zhí)行。執(zhí)行成功后,才能通過瀏覽器訪問該地址。
相關(guān)文檔
使用子域名作為HTTP觸發(fā)器URL對(duì)函數(shù)進(jìn)行測(cè)試,能有效避免404報(bào)錯(cuò)。更多信息,請(qǐng)參見當(dāng)我使用瀏覽器或cURL方式訪問函數(shù)時(shí)出現(xiàn)404怎么辦?。
對(duì)外提供網(wǎng)站類型服務(wù)只能通過已備案域名來實(shí)現(xiàn)。即通過配置自定義域名,將域名與函數(shù)進(jìn)行綁定,使用自己的域名對(duì)外提供服務(wù)。更多信息,請(qǐng)參見配置自定義域名。