Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 39368c2

Browse files
committed
Add Chinese readme
Add Chinese readme
1 parent 5878180 commit 39368c2

File tree

1 file changed

+264
-0
lines changed

1 file changed

+264
-0
lines changed

‎README-zhTW.md

Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
# 於 IBM Cloud Functions 上使用無服務器 (Serverless) APIs (運用 Apache OpenWhisk)
2+
3+
*Read this in other languages: [English](README.md).*
4+
5+
該專案主要用來了解無服務器、事件驅動式架構如何執行能動態擴展以符合資源需求的程式,用以回應HTTP REST API的呼叫。 程式在調用 API 端點之前不會消耗任何資源。 調用它們時,會調配資源以獨立地配置每個HTTP請求所需的當下資源負載。
6+
7+
專案中包含四個 JavaScript 編寫的動作 (運行在 IBM Cloud Functions 使用 Apache OpenWhisk)操作(用JavaScript編寫),四個動作用在 MySQL 資料庫中寫入和讀取資料。 示範每項動作是如何讓資料服務及執行邏輯一起運作以回應HTTP請求。
8+
9+
第一個動作對應到HTTP POST請求,將貓的名字跟顏色參數新增至資料庫中。 第二個動作會對應至PUT請求以更新現有貓資料的欄位值。 第三個動作會對應至傳回指定貓的資料的GET請求。 第四個動作會刪除指定的貓的資料。
10+
11+
IBM Cloud上 的 Node.js 執行系統 (runtime) 會提供內建的npm模組白名單。 此範例也會示範如何使用自訂動作將其它 Node.js 相依模組(例如MySQL用戶端npm)包裝在ZIP檔中以提供進一步的整合。
12+
13+
![架構範例](docs/arch_buildserverless.png)
14+
15+
## 包含的元件
16+
17+
- IBM Cloud Functions (使用 Apache OpenWhisk)
18+
- ClearDB 或是 Compose (MySQL)
19+
20+
## 必備條件
21+
22+
你需要對 OpenWhish 的程式開發模式有基礎的了解。 可 [先了解關於動作, 觸發及規則的範例](https://github.com/IBM/openwhisk-action-trigger-rule).
23+
24+
你也需要有 IBM Cloud 的帳號及最新版本的 [OpenWhisk 安裝命令列工具 (`bx wsk`) 並且加入到你電腦中的 PATH 裡]
25+
26+
除了這個關於端對端 (end-to-end) 的範例, 你也可以參考範例 [用以理解基本底層"基礎元件"版本](https://github.com/IBM/openwhisk-rest-api-trigger)
27+
28+
29+
## 步驟
30+
31+
1. [準備 MySQL](#1-provision-mysql)
32+
2. [建立 OpenWhisk 動作及對映](#2-create-openwhisk-actions-and-mappings)
33+
3. [測試 API 端點](#3-test-api-endpoints)
34+
4. [刪除 動作 及 對映](#4-delete-actions-and-mappings)
35+
5. [使用手動部署重新建立](#5-recreate-deployment-manually)
36+
37+
## 1. 準備 MySQL
38+
39+
登入 IBM Cloud 並且建立一個 MySQL 環境 [Compose for MySQL](https://console.ng.bluemix.net/catalog/services/compose-for-mysql/).
40+
41+
進入 [Compose](https://console.ng.bluemix.net/catalog/services/compose-for-mysql/), 於畫面右方選單, 點選 `服務認證`, 檢視內容
42+
43+
將本專案中的檔案 `template.local.env` 複製一個新檔案, 命名為 `local.env`, 並依照剛剛於`服務認證`內的內容, 修改 `local.env``MYSQL_HOSTNAME`, `MYSQL_PORT`,`MYSQL_USERNAME`, `MYSQL_PASSWORD``MYSQL_DATABASE`.
44+
45+
## 2. 建立 OpenWhisk 動作及對應
46+
47+
`deploy.sh` script 會讀取`local.env`中的環境變數並且建立好 OpenWhisk 的動作及對應. 接下來你就可以自己執行這些動作.
48+
49+
```bash
50+
./deploy.sh --install
51+
```
52+
53+
> **Note**: 如果有錯誤訊息, 請參考 [疑難排除](#疑難排除) 章節. 也可另外參考 [另一種部署方式](#另一種部署方式).
54+
55+
## 3. 測試 API 端點
56+
57+
以下四個 helper scripts 用來模擬 HTTP API 用戶端建立, 查詢, 修改即刪除 `/v1/cat` 端點下的實體 (entities).
58+
59+
```bash
60+
# POST /v1/cat {"name": "Tarball", "color": "Black"}
61+
client/cat-post.sh Tarball Black
62+
63+
# GET /v1/cat?id=1
64+
client/cat-get.sh 1 # Or whatever integer ID was returned by the command above
65+
66+
# PUT /v1/cat {"id": 1, "name": "Tarball", "color": "Gray"}
67+
client/cat-put.sh 1 Tarball Gray
68+
69+
# DELETE /v1/cat?id=1
70+
client/cat-delete.sh 1
71+
```
72+
73+
## 4. 刪除動作及對映
74+
75+
再次執行 `deploy.sh` 來刪除 OpenWhisk 動作及對映. 然後再下一章節, 你將會以手動方式一步步地重新建立這些動作 .
76+
77+
```bash
78+
./deploy.sh --uninstall
79+
```
80+
81+
## 5. 重新以手動方式部署
82+
83+
這章節深入`deploy.sh`程式, 讓你更了解什麼是 OpenWhisk 的觸發, 動作, 規則及套件.
84+
85+
### 5.1 建立 OpenWhisk 動作及修改 cat 資料
86+
87+
建立四個動作來管理 cat 資料, 一個動作對應到我們 API 中 (POST, PUT, GET, and DELETE) 四個請求方法中的一個. 程式碼於 `/actions` 目錄下. 我們先從建立 cat 資料開始.
88+
89+
> **Note**: OpenWhish Node.js 執行環境的 [內建套件](https://github.com/openwhisk/openwhisk/blob/master/docs/reference.md?cm_mc_uid=33591682128714865890263&cm_mc_sid_50200000=1487347815#javascript-runtime-environments). 若你需要額外的套件, 你可以將套件與你的動作程式檔案一併壓縮成 ZIP 檔案上傳. 關於要用單一檔案還是壓縮檔的比較, 可參考 [入門手冊](https://console.ng.bluemix.net/docs/openwhisk/openwhisk_actions.html#openwhisk_js_packaged_action).
90+
91+
#### 5.1.1 cat 套件
92+
93+
由於所有動作都必須使用到 MySQL 資料庫服務, 所以先將相關的認證及連線資訊設定在套件中會比較方便. 這樣可以讓套件中的所有動作都可以讀取到這些參數, 而不用每一個動作裡都要重新寫一次.
94+
95+
```bash
96+
source local.env
97+
bx wsk package create cat \
98+
--param "MYSQL_HOSTNAME" $MYSQL_HOSTNAME \
99+
--param "MYSQL_PORT" $MYSQL_PORT \
100+
--param "MYSQL_USERNAME" $MYSQL_USERNAME \
101+
--param "MYSQL_PASSWORD" $MYSQL_PASSWORD \
102+
--param "MYSQL_DATABASE" $MYSQL_DATABASE
103+
```
104+
105+
#### 5.1.2 建立 cat 資料的動作
106+
107+
POST 動作的 JavaScript 程式碼在 `/actions/cat-post-action/index.js` 中. 在程式中我們使用 `mysql` client npm 套件來連接到資料庫. 使用 `npm install` 來安裝 npm 套件 ( `package.json` 定義使用哪些套件), 然後將程式跟相關檔案壓縮成一個 ZIP 壓縮檔.
108+
109+
```bash
110+
cd actions/cat-post-action
111+
npm install
112+
zip -rq action.zip *
113+
```
114+
115+
接下來使用 OpenWhisk CLI 指令將 `action.zip` 建立為一個動作 .
116+
117+
```bash
118+
# Create
119+
bx wsk action create cat/cat-post \
120+
--kind nodejs:6 action.zip \
121+
--web true
122+
```
123+
124+
測試使用 `bx wsk` CLI 指令來調用這個動作.
125+
126+
```bash
127+
# Test
128+
bx wsk action invoke \
129+
--blocking \
130+
--param name Tarball \
131+
--param color Black \
132+
cat/cat-post
133+
```
134+
135+
重複以上步驟來建立及測試其它 GET, PUT, 及 DELETE 三個動作 .
136+
137+
> **Note**: 以下的測試, 你需要把 id 值 1 換成你執行上一個 POST 動作後所回傳的 id 值.
138+
139+
#### 5.1.3 讀取 cat 資料的動作
140+
141+
```bash
142+
# Create
143+
cd ../../actions/cat-get-action
144+
npm install
145+
zip -rq action.zip *
146+
bx wsk action create cat/cat-get \
147+
--kind nodejs:6 action.zip \
148+
--web true
149+
150+
# Test
151+
bx wsk action invoke \
152+
--blocking \
153+
--param id 1 \
154+
cat/cat-get
155+
```
156+
157+
##### 5.1.4 修改 cat 資料的動作
158+
159+
```bash
160+
# Create
161+
cd ../../actions/cat-put-action
162+
npm install
163+
zip -rq action.zip *
164+
bx wsk action create cat/cat-put \
165+
--kind nodejs:6 action.zip \
166+
--web true
167+
168+
# Test
169+
bx wsk action invoke \
170+
--blocking \
171+
--param name Tarball \
172+
--param color Gray \
173+
--param id 1 \
174+
cat/cat-put
175+
176+
bx wsk action invoke \
177+
--blocking \
178+
--param id 1 \
179+
cat/cat-get
180+
```
181+
182+
#### 5.1.5 刪除 cat 資料的動作
183+
184+
```bash
185+
# Create
186+
cd ../../actions/cat-delete-action
187+
npm install
188+
zip -rq action.zip *
189+
bx wsk action create cat/cat-delete \
190+
--kind nodejs:6 action.zip \
191+
--web true
192+
193+
# Test
194+
bx wsk action invoke \
195+
--blocking \
196+
--param id 1 \
197+
cat/cat-delete
198+
199+
bx wsk action invoke \
200+
--blocking \
201+
--param id 1 \
202+
cat/cat-get
203+
```
204+
205+
### 5.2 建立 REST API 端點
206+
207+
`GET`, `DELETE`, `PUT`, 及 `POST` 四個 HTTP 請求對應至資源端點 (`/cat`) , 並且將他們關聯至相應的 OpenWhisk 動作, 測試用戶端的 scripts 程式.
208+
209+
```bash
210+
# Create
211+
bx wsk api create -n "Cats API" /v1 /cat post cat/cat-post
212+
bx wsk api create /v1 /cat put cat/cat-put
213+
bx wsk api create /v1 /cat get cat/cat-get
214+
bx wsk api create /v1 /cat delete cat/cat-delete
215+
216+
# Test
217+
218+
# POST /v1/cat {"name": "Tarball", "color": "Black"}
219+
client/cat-post.sh Tarball Black
220+
221+
# GET /v1/cat?id=1
222+
client/cat-get.sh 1 # Replace 1 with the id returned from the POST action above
223+
224+
# PUT /v1/cat {"id": 1, "name": "Tarball", "color": "Gray"}
225+
client/cat-put.sh 1 Tarball Gray
226+
227+
# DELETE /v1/cat?id=1
228+
client/cat-delete.sh 1
229+
```
230+
231+
### 5.3 刪除測試環境
232+
233+
移除 API 的對映並且刪除所有動作.
234+
235+
```bash
236+
bx wsk api delete /v1
237+
bx wsk action delete cat/cat-post
238+
bx wsk action delete cat/cat-put
239+
bx wsk action delete cat/cat-get
240+
bx wsk action delete cat/cat-delete
241+
bx wsk package delete cat
242+
```
243+
244+
## 疑難排除
245+
246+
首先在OpenWhisk活動日誌中檢查錯誤。 執行`bx wsk activation poll`指令可持續在畫面上顯示活動日誌,或使用 [點選 IBM Cloud Functions 上的監視選項] 讀取活動日誌詳細訊息 (https://console.ng.bluemix.net/openwhisk/dashboard).
247+
248+
如果沒辦法馬上找到錯誤訊息, 請先確定已安裝了 [最新版本的 `bx wsk` CLI 指令工具](https://console.ng.bluemix.net/openwhisk/learn/cli). 如果版本超過幾週沒更新, 請下載並更新至最新版本.
249+
250+
```bash
251+
bx wsk property get --cliversion
252+
```
253+
254+
## 另一種部署方式
255+
256+
`deploy.sh` 將被 [`wskdeploy`] 取代 (https://github.com/openwhisk/openwhisk-wskdeploy). `wskdeploy` 使用描述檔的方式來宣告 OpenWhisk 中的觸發, 動作及規則.
257+
258+
你可以點擊下面的按鈕複製一份存儲庫的副本,並作為DevOps工具鏈的一部分部署到IBM Cloud。 在Delivery Pipeline 圖示下提供你的 OpenWhisk 和 MySQL 認證資訊,點擊`建立`,執行"交付管道"的"部署"階段。
259+
260+
[![部署至 IBM Cloud](https://bluemix.net/deploy/button.png)](https://bluemix.net/deploy?repository=https://github.com/IBM/openwhisk-serverless-apis.git)
261+
262+
## 授權
263+
264+
[Apache 2.0](LICENSE.txt)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /