[Node.js] 使用 StdLib 快速搭建 FaaS 服務

StdLib 是一提供佈建功能即服務 (FaaS) 的平台,採用 Serverless 的架構模式。讓你在幾分鐘內即可在雲端上搭建自己的 modular、Scalable Web Services、API、Microservices 等。StdLib 讓開發者們只需要在關注程式上,而幾乎不需要花功夫去管理伺服器、gateways、domains、建置 SDKs,甚至會依照你的 config 去自動產生對應的說明文檔,可以說是相當方便。本篇文章將會快速介紹如何使用 StdLib 快速搭建一個 API。

環境建置

StdLib 需要 Node 6.x 以上的版本,若您的電腦安裝的是過去的版本或者尚未安裝 Node,可參考下列文章:

若不知道自己的 Node 版本,可使用下列指令:

$ Node -v

確定好版本後,請使用指令安裝 lib.cli

$ npm install lib.cli -g

新增服務

步驟一: 透過下列指令建立工作區目錄,並且進入其目錄初始化 StdLib 環境。已經註冊過的夥伴們可直接輸入帳號密碼後登入,沒有的話請質接趁此註冊(直接於命令提示字元中完成,無需進入平台)。

$ mkdir stdlib-workspace
$ cd stdlib-workspace
$ lib init

步驟二: 使用下列指令建立專案,建立完的專案會放在 stdlib-workspace/<username>/<service> 相對位置下。

$ lib create <service>

接著我們可以透過下列指令進入該層目錄:

$ cd your-username/your-service

進入後可以看到已產生的檔案(如下結構),index.js 是主程式,function.json 為主程式的 config,package.json 為本專案的設定檔。

- f/
  - defaultFunction/
    - function.json
    - index.js
- package.json
- env.json
- README.md

步驟三: 透過下列指令測試該專案,若順利的話會顯示 hello world 字串。

$ lib .
> "hello world"

步驟四: 接著我們改寫 index.js 的程式,使其輸出為 JSON,並新增一 query string parameter。

module.exports = (params, callback) => {  
  var output = {
    success: false
  }

  if (params.kwargs.name !== undefined) {
    output.success = true
    output.text = 'Hello!' + params.kwargs.name
  }

    callback(null, output)
};

完成後可使用測試指令加入參數後進行測試

部署服務

開發版

若你今天只是要給自己使用或者單純測試,僅使用 lib up dev 進行部屬,使用 lib your-username.your-service[@dev] 進行測試即可。

$ lib up dev
$ lib your-username.your-service[@dev]

發布版

若是想公開發佈使用,請先修改 package.json 文件,將 stdlib.publish 的屬性改為 true

{
  "name": "helloWorld",
  "version": "0.0.0",
  "description": "Service",
  "author": "s890506 <[email protected]>",
  "main": "f/main/index.js",
  "dependencies": {},
  "private": true,
  "stdlib": {
    "name": "s890506/helloWorld",
    "defaultFunction": "main",
    "timeout": 10000,
    "publish": true
  }
}

使用 lib release 進行部屬,使用 lib your-username.your-service 進行測試即可。

$ lib release
$ lib your-username.your-service

順利的話將使用相對位置就可以跑出結果囉!

https://your-username.stdlib.com/your-service  

注意

  • 若要再次發布新版本,請務必修改 package.json 中的 version 屬性(規則可自訂)。
  • 若使用發布版,該服務的文檔資訊都會公開在官方網站上。

StdLib 的教學就到此一段落了,若想獲得進一步的資訊歡迎參閱官方網站或其 Github 專案,謝謝。

版本資訊

  • Node.JS v6.9.5

參考資料

Larry

Having being a full stack engineer. Committed to the promotion of Hackschooling and maker culture. We expect coding can change the world. Contact us : [email protected]

Taiwan
ALL RIGHTS RESERVED. COPYRIGHT © 2016. Designed and Coded by Makee.io