開通函數計算服務
在使用函數計算前,您需要開通函數計算服務。
說明:本場景中提供的阿里雲子賬號無函數計算服務操作權限,請使用您自己的阿里雲賬號操作。您無需擔心扣費問題,因為函數計算服務有一定的免費額度,請參見計費方式。
1.使用您自己的阿里雲賬號登錄阿里雲控制檯,然後進入[函數計算產品詳情頁](https://www.aliyun.com/product/fc)。
2.單擊【免費開通】。
3.閱讀《函數計算服務協議》勾選同意服務協議,最後單擊【立即開通】。
4.單擊【管理控制檯】進入函數計算控制檯。
說明: 開通函數計算後,你可以通過2種方式進行HelloWorld應用開發,使用函數計算控制檯或使用Funcraft工具。
在控制檯開發函數計算 HelloWorld 應用
1.在函數計算控制檯首頁,單擊【新建函數】。
2.選擇【HTTP函數】,然後單擊【下一步】。
3.參考以下說明填寫函數和觸發器配置,然後單擊【完成】。
- 所在服務:例如hello_world_service。
- 綁定日誌:填寫所在服務名稱後默認勾選綁定日誌,日誌服務會收取少量費用,您可以選擇取消勾選。
- 函數名稱:例如hello_world。
- 運行環境:選擇nodejs10。
- 觸發器名稱:例如hello_world_trigger。
- 認證方式:選擇anonymous。
- 請求方式:選擇GET。
4.在 代碼執行管理 頁面,將index.js文件中的內容替換為如下所示:
var getRawBody = require('raw-body')
module.exports.handler = function (request, response, context) {
getRawBody(request, function (err, data) {
var respBody = new Buffer.from("你好,世界!");
response.setStatusCode(200)
response.setHeader('content-type', 'text/html')
response.send(respBody)
})
};
替換後如下所示:
5.單擊編輯器右上角【Save Invoke】保存並運行示例代碼。
可以看到函數運行成功,並返回: 你好,世界!
使用 Funcraft 開發函數計算 HelloWorld 應用
Funcraft 是一個用於支持Serverless應用部署的工具,能幫助您便捷地管理函數計算、API 網關和日誌服務等資源。它通過一個資源配置文件(template.yml),協助您進行開發、構建和部署操作。
本步驟操作將在ECS服務器上使用Funcraft工具開發函數計算HelloWorld應用。
1.按照以下步驟創建資源。
- a.在頁面左側,單擊 雲產品資源 下拉菜單,查看本次實驗資源。
- b.單擊 免費開通 創建所需資源。
說明: 資源創建過程需要1~3分鐘。完成實驗資源的創建後,您可以在 雲產品資源 列表查看已創建的資源信息,例如:IP地址、用戶名和密碼等。
2.參考以下步驟連接ECS服務器。
a.打開終端工具。
- Windows:打開命令窗口。
- MAC:打開命令行終端Terminal。
Windows用戶請檢查系統中是否安裝有SSH工具。檢查方法:
在終端中輸入命令 ssh -V 。
ssh -V
如果顯示 SSH 版本則表示已安裝,如下圖所示。
如果未安裝,請下載安裝OpenSSH工具。
b.在終端中輸入連接命令ssh [username]@[ipaddress]
。您需要將其中的username和ipaddress替換為步驟一中創建的ECS服務器的彈性公網IP。
例如:
ssh [email protected]
命令顯示結果如下:
c.輸入 yes
。
d.同意繼續後將會提示輸入登錄密碼。 密碼為已創建的雲服務的ECS的登錄密碼。
登錄成功後會顯示如下信息。
3.在連接到ECS服務器的終端中執行以下命令安裝NodeJS。
curl -sL https://rpm.nodesource.com/setup_10.x | bash - && yum install -y nodejs
4.執行以下命令安裝Funcraft。
npm install request @alicloud/fun -g
5.執行 fun config 命令進行本地配置。
fun config
請參考以下信息輸入您的阿里雲賬號ID、AccessKeyID和AccessKey密鑰等信息。
Aliyun Account ID:請在賬號安全設置頁面查看您的賬號ID。
Aliyun Access Key ID 和 Aliyun Access Key Secret:請在 安全信息管理 頁面查看您賬號的 AK ID 和 AK Secret。
如果您使用的是阿里雲主賬號,請在安全信息管理頁面的安全提示彈框中單擊繼續使用 AccessKey。
如果您使用的是阿里雲 RAM 子用戶,需要確保您的子用戶擁有函數計算管理權限 AliyunFCFullAccess
,請參見為RAM用戶授權。
如下圖所示為您的 AccessKey ID 和 AccessKey Secret。如果您的賬號未使用過 AccessKey,請單擊右上角創建 AccessKey。
Default region name:請選擇開通的函數計算服務所在地域。
正確設置如下所示:
6.執行以下命令新建工作空間。
mkdir demo && cd demo
7.執行 fun init 命令新建一個HTTP函數觸發器。
fun init http-trigger-nodejs10
命令執行結果如下所示:
其中 index.js 文件為生成的HelloWorld函數模板,template.yml 文件中包含了HelloWorld函數和HTTP觸發器的默認配置信息。
8.參考以下步驟修改 index.js 文件內容。
a.將 index.js 文件內容清空。
cat /dev/null > index.js
b.使用 vim 打開 index.js 文件。
vim index.js
c.按下 i 鍵進入 vim 的編輯模式,在文件中新增以下內容。
var getRawBody = require('raw-body')
module.exports.handler = function (request, response, context) {
getRawBody(request, function (err, data) {
var respBody = new Buffer.from("你好,世界!");
response.setStatusCode(200)
response.setHeader('content-type', 'text/html')
response.send(respBody)
})
};
d.按下 esc 鍵進入命令模式,輸入 :wq 保存並退出 vim。
9.執行 fun deploy -y 命令部署應用到函數計算服務。
fun deploy -y
命令執行結果如下所示:
至此,我們完成了一個 HTTP 觸發器的函數部署。此時,我們可以打開 HTTP 觸發器的默認 URL,瀏覽器會以文件形式將函數響應內容下載到本地,您可以參考步驟四使用控制檯在線調試。或者您可以綁定一個自定義域名以避免該問題,請參見綁定自定義域名。