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 e88406b

Browse files
authored
Merge pull request #76 from yamachan/master
add japanese readme
2 parents 247c5d9 + 57546be commit e88406b

File tree

2 files changed

+317
-1
lines changed

2 files changed

+317
-1
lines changed

‎README-ja.md

Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
[![Build Status](https://travis-ci.org/IBM/ibm-cloud-functions-serverless-apis.svg?branch=master)](https://travis-ci.org/IBM/ibm-cloud-functions-serverless-apis)
2+
3+
# IBM Cloud Functions でサーバーレス API ハンドラーを作成する (Apache OpenWhisk の利用)
4+
5+
*Read this in other languages: [English](README.md), [한국어](README-ko.md).*
6+
7+
このプロジェクトは、サーバーレスのイベント駆動型アーキテクチャーの仕組みを説明するものです。このアーテクチャーでは、HTTP REST API の呼び出しにより、需要に応じてコードが実行されます。API エンドポイントが呼び出されるまでは、レスポンスにリソースは消費されません。API エンドポイントが呼び出されると、現在の負荷とちょうど一致するようにリソースがプロビジョニングされます。
8+
9+
このプロジェクトでは、MySQL データベース内のデータの書き込み/読み取りを行う 4 つの (Apache OpenWhisk ベースの) IBM Cloud Functions を取り上げて、アクションとサポート・データ・サービスが連動して HTTP リクエストに応じてロジックを実行する仕組みを説明します。
10+
11+
最初の関数 (アクション) は、HTTP POST リクエストにマッピングされています。このアクションは、入力された猫の名前と色のパラメーターをデータベースに挿入します。2 番目のアクションは PUT リクエストにマッピングされていて、既存の猫の名前と色のフィールドを更新します。3 番目のアクションは GET リクエストにマッピングされていて、特定の猫のデータを返します。4 番目のアクションは、特定の猫のデータを削除します。
12+
13+
IBM Cloud 上の Node.js ランタイムには、NPM モジュールの組み込みホワイトリストが用意されています。このデモでは高度な拡張性にも焦点を当て、MySQL クライアントなどの他の Node.js 依存関係をカスタム・アクションと一緒に ZIP ファイルにパッケージ化する方法を説明します。
14+
15+
## Flow
16+
17+
![Sample Architecture](docs/arch_buildserverless.png)
18+
19+
1. API クライアントが REST API に HTTP POST リクエストを送信します。
20+
2. API ゲートウェイがリクエストを受け取り、それを OpenWhisk アクションに転送します。
21+
3. OpenWhisk アクションがリクエスト本文のパラメーターを抽出し、NPM MySQL クライアントを使用して SQL INSERT を作成します。
22+
4. 猫のデータがデータベースに保管されます。
23+
24+
## 含まれるコンポーネント
25+
26+
- IBM Cloud Functions (powered by Apache OpenWhisk)
27+
- ClearDB or Compose (MySQL)
28+
29+
## 前提条件
30+
31+
OpenWhisk プログラミングモデルの基本的な理解が必要です。そうでない場合は、アクション、トリガー、ルールの [デモ](https://github.com/IBM/openwhisk-action-trigger-rule) を最初に試みてください。
32+
33+
また、IBM Cloudアカウントを取得し、最新の [OpenWhiskコマンドライン・ツール(`wsk`)](https://github.com/IBM/openwhisk-action-trigger-rule/blob/master/docs/OPENWHISK.md) がインストールされ、PATH に追加されている必要があります。
34+
35+
この一通り動作するサンプルの代わりに、このサンプルより [より基本的な要素を理解するためのバージョン](https://github.com/IBM/openwhisk-rest-api-trigger) を参考にすることもできます。
36+
37+
## 手順
38+
39+
1. [MySQL の準備](#1-provision-mysql)
40+
2. [OpenWhisk アクションとマッピングを作成する](#2-create-openwhisk-actions-and-mappings)
41+
3. [APIエンドポイントをテストする](#3-test-api-endpoints)
42+
4. [アクションとマッピングを削除する](#4-delete-actions-and-mappings)
43+
5. [こんどは手動でデプロイする](#5-recreate-deployment-manually)
44+
45+
<a name="1-provision-mysql"></a>
46+
# 1. MySQL の準備
47+
48+
IBM Cloudにログインし、[ClearDB](https://console.ng.bluemix.net/catalog/services/cleardb-mysql-database/) または [Compose for MySQL](https://console.ng.bluemix.net/catalog/services/compose-for-mysql/) データベースインスタンスを準備 (プロビジョニング) します。
49+
ClearDB には簡単なテストのためのフリーの段階 (tier) がありますが、Compose にはより大きなワークロードの段階があります。
50+
51+
* [ClearDB](https://console.ng.bluemix.net/catalog/services/cleardb-mysql-database/) の場合は、ClearDB ダッシュボードにログインし、作成されたデフォルトのデータベースを選択します。
52+
`Endpoint Information` でユーザー、パスワード、およびホスト情報を取得します。
53+
54+
* [Compose for MySQL](https://console.ng.bluemix.net/catalog/services/compose-for-mysql/) の場合は、IBM Cloud コンソールの `Service Credentials` タブから情報を入手してください。
55+
56+
`template.local.env``local.env` という名前の新しいファイルにコピーし、MySQL インスタンスの `MYSQL_HOSTNAME``MYSQL_USERNAME``MYSQL_PASSWORD``MYSQL_DATABASE` の値を書き込んでください。
57+
58+
> 訳者注: 2018年7月現在、ClearDB サービスは利用できないようですが、参考のためにテキストは翻訳します
59+
60+
<a name="2-create-openwhisk-actions-and-mappings"></a>
61+
# 2. OpenWhisk アクションとマッピングを作成する
62+
63+
`deploy.sh` は便利なスクリプトで、`local.env` から環境変数を読み込み、あなたのために OpenWhisk アクションと API マッピングを作成します。
64+
後でこれらのコマンドを自分で実行します。
65+
66+
```bash
67+
./deploy.sh --install
68+
```
69+
70+
> ****: エラーメッセージが表示された場合は、後の [トラブルシューティング](#troubleshooting) セクションを参照してください。
71+
[別のデプロイ方法](#alternative-deployment-methods) を参照することもできます。
72+
73+
<a name="3-test-api-endpoints"></a>
74+
# 3. APIエンドポイントをテストする
75+
76+
`/v1/cat` エンドポイントに対して、エンティティを作成、取得、更新、削除する HTTP API クライアントをシミュレートする4つのヘルパースクリプトがあります。
77+
78+
```bash
79+
# エンティティの作成テスト
80+
# POST /v1/cat {"name": "Tarball", "color": "Black"}
81+
client/cat-post.sh Tarball Black
82+
83+
# エンティティの取得テスト
84+
# GET /v1/cat?id=1
85+
client/cat-get.sh 1 # Or whatever integer ID was returned by the command above
86+
87+
# エンティティの更新テスト
88+
# PUT /v1/cat {"id": 1, "name": "Tarball", "color": "Gray"}
89+
client/cat-put.sh 1 Tarball Gray
90+
91+
# エンティティの削除テスト
92+
# DELETE /v1/cat?id=1
93+
client/cat-delete.sh 1
94+
```
95+
96+
<a name="4-delete-actions-and-mappings"></a>
97+
# 4. アクションとマッピングを削除する
98+
99+
`deploy.sh` をもう一度使って、OpenWhiskのアクションとマッピングを削除してください。
100+
次のセクションではそれらをステップバイステップで再作成します。
101+
102+
```bash
103+
./deploy.sh --uninstall
104+
```
105+
106+
<a name="5-recreate-deployment-manually"></a>
107+
# 5. こんどは手動でデプロイする
108+
109+
このセクションでは、`deploy.sh` スクリプトの実行内容を詳しく見て、OpenWhiskのトリガー、アクション、ルール、およびパッケージをより詳しく扱う方法を理解していきます。
110+
111+
## 5.1 猫データを変更するための OpenWhisk アクションの作成
112+
113+
猫のデータを管理するアクションを API の各メソッド(POST、PUT、GET、DELETE)ごとに1つずつ、合計で4つ作成します。
114+
アクションのコードは `/actions` にあります。
115+
最初に猫のレコードを作成するアクションから始めましょう。
116+
117+
> ****: OpenWhisk Node.jsランタイム環境で使用できる組み込みパッケージの [詳細はこちら](https://github.com/openwhisk/openwhisk/blob/master/docs/reference.md?cm_mc_uid=33591682128714865890263&cm_mc_sid_50200000=1487347815#javascript-runtime-environments)
118+
追加パッケージが必要な場合は、アクションファイルとともに ZIP ファイルにまとめてアップロードすることができます。
119+
単一ファイルと ZIP 圧縮アーカイブの違いの詳細については、[Getting Started Guide](https://console.ng.bluemix.net/docs/openwhisk/openwhisk_actions.html#openwhisk_js_packaged_action) を参照してください。
120+
121+
### 5.1.1 猫パッケージ
122+
123+
すべてのアクションは MySQL データベースサービスに依存しているため、パッケージレベルで一度、資格情報を設定すると便利です。
124+
これにより、パッケージ内のすべてのアクションで資格情報を使用できるようになります。
125+
したがって、作成時および実行時にアクションごとに定義する必要はありません。
126+
127+
```bash
128+
source local.env
129+
wsk package create cat \
130+
--param "MYSQL_HOSTNAME" $MYSQL_HOSTNAME \
131+
--param "MYSQL_USERNAME" $MYSQL_USERNAME \
132+
--param "MYSQL_PASSWORD" $MYSQL_PASSWORD \
133+
--param "MYSQL_DATABASE" $MYSQL_DATABASE
134+
```
135+
136+
### 5.1.2 猫の作成アクション
137+
138+
POSTアクションのJavaScriptコードは、 [`/actions/cat-post-action/index.js`](actions/cat-post-action/index.js) にあります。
139+
この関数は、データベースに接続するために必要な `mysql` クライアント npm パッケージに依存します。
140+
`npm install` ([`package.json`](actions/cat-post-action/package.json) を解析する) を使ってパッケージをインストールし、アプリケーションとその依存関係の両方を含む ZIP ファイルを作成します。
141+
142+
```bash
143+
cd actions/cat-post-action
144+
npm install
145+
zip -rq action.zip *
146+
```
147+
148+
次に、OpenWhisk CLI を使用して `action.zip` からアクションを作成 (create) します。
149+
150+
```bash
151+
# Create
152+
wsk action create cat/cat-post \
153+
--kind nodejs:6 action.zip \
154+
--web true
155+
```
156+
157+
次に、テストする `wsk` CLIを使って手動でアクションを起動 (invoke) します。
158+
159+
```bash
160+
# Test
161+
wsk action invoke \
162+
--blocking \
163+
--param name Tarball \
164+
--param color Black \
165+
cat/cat-post
166+
```
167+
168+
> 訳者注: 上記のアクションでデータベースに、「名前が Tarball で、色が黒」である猫のレコードが新規作成されました。
169+
170+
上記の手順を繰り返して、対応する GET、PUT、DELETE アクションを作成してテストしていきます。
171+
172+
173+
> ****: 上記の POST アクション結果から返された実際の ID を反映させるために、あなたのテストでは `id 1` を置き換えてください。
174+
175+
### 5.1.3 猫の参照アクション
176+
177+
GET アクションを作成してテストします。
178+
179+
```bash
180+
# Create
181+
cd ../../actions/cat-get-action
182+
npm install
183+
zip -rq action.zip *
184+
wsk action create cat/cat-get \
185+
--kind nodejs:6 action.zip \
186+
--web true
187+
188+
# Test
189+
wsk action invoke \
190+
--blocking \
191+
--param id 1 \
192+
cat/cat-get
193+
```
194+
195+
> 訳者注: このアクションで、さきほど作成された「名前が Tarball で、色が黒」である猫のレコードが読み取られ表示されるはずです。
196+
197+
### 5.1.4 猫の更新アクション
198+
199+
PUT アクションを作成してテストします。
200+
201+
```bash
202+
# Create
203+
cd ../../actions/cat-put-action
204+
npm install
205+
zip -rq action.zip *
206+
wsk action create cat/cat-put \
207+
--kind nodejs:6 action.zip \
208+
--web true
209+
210+
# Test
211+
wsk action invoke \
212+
--blocking \
213+
--param name Tarball \
214+
--param color Gray \
215+
--param id 1 \
216+
cat/cat-put
217+
218+
wsk action invoke \
219+
--blocking \
220+
--param id 1 \
221+
cat/cat-get
222+
```
223+
224+
> 訳者注: このアクションで、さきほど作成・参照された「名前が Tarball で、色が黒」である猫のレコードが、「名前が Tarball で、色が灰色」に書き換えられました。
225+
226+
### 5.1.5 猫の削除アクション
227+
228+
DELETE アクションを作成してテストします。
229+
230+
```bash
231+
# Create
232+
cd ../../actions/cat-delete-action
233+
npm install
234+
zip -rq action.zip *
235+
wsk action create cat/cat-delete \
236+
--kind nodejs:6 action.zip \
237+
--web true
238+
239+
# Test
240+
wsk action invoke \
241+
--blocking \
242+
--param id 1 \
243+
cat/cat-delete
244+
245+
wsk action invoke \
246+
--blocking \
247+
--param id 1 \
248+
cat/cat-get
249+
```
250+
251+
> 訳者注: このアクションで、さきほど作成・参照・更新された「名前が Tarball で、色が灰色」である猫のレコードが、削除されました。
252+
253+
## 5.2 REST APIエンドポイントを作成する
254+
255+
次に、リソースエンドポイント (`/cat`) を `GET``DELETE``PUT``POST` HTTP メソッドにマップし、対応する OpenWhisk アクションに関連づけて、クライアントスクリプトを使ってテストします。
256+
257+
```bash
258+
# Create
259+
wsk api create -n "Cats API" /v1 /cat post cat/cat-post
260+
wsk api create /v1 /cat put cat/cat-put
261+
wsk api create /v1 /cat get cat/cat-get
262+
wsk api create /v1 /cat delete cat/cat-delete
263+
264+
# Test
265+
266+
# POST /v1/cat {"name": "Tarball", "color": "Black"}
267+
client/cat-post.sh Tarball Black
268+
269+
# GET /v1/cat?id=1
270+
client/cat-get.sh 1 # Replace 1 with the id returned from the POST action above
271+
272+
# PUT /v1/cat {"id": 1, "name": "Tarball", "color": "Gray"}
273+
client/cat-put.sh 1 Tarball Gray
274+
275+
# DELETE /v1/cat?id=1
276+
client/cat-delete.sh 1
277+
```
278+
279+
## 5.3 クリーンアップ
280+
281+
APIマッピングを解除し、アクションを削除します。
282+
283+
```bash
284+
wsk api delete /v1
285+
wsk action delete cat/cat-post
286+
wsk action delete cat/cat-put
287+
wsk action delete cat/cat-get
288+
wsk action delete cat/cat-delete
289+
wsk package delete cat
290+
```
291+
292+
<a name="troubleshooting"></a>
293+
# トラブルシューティング
294+
295+
まずは OpenWhisk アクティベーションログでエラーをチェックしてください。
296+
`wsk activation poll` を使用してコマンドラインでログを出力するか、[IBM Cloudの監視コンソール](https://console.ng.bluemix.net/openwhisk/dashboard) で視覚的に細部を掘り下げてください。
297+
298+
エラー内容が不明確な場合は、[最新バージョンの `wsk` CLI](https://console.ng.bluemix.net/openwhisk/learn/cli) がインストールされていることを確認してください。
299+
もし数週間以上経過している場合は、アップデートをダウンロードしてください。
300+
301+
```bash
302+
wsk property get --cliversion
303+
```
304+
305+
<a name="alternative-deployment-methods"></a>
306+
# 別のデプロイ方法
307+
308+
`deploy.sh` は将来、[`wskdeploy`](https://github.com/openwhisk/openwhisk-wskdeploy) に置き換えられます。 `wskdeploy` は、宣言されたトリガー、アクション、ルールを OpenWhisk にデプロイするためにマニフェスト (manifest) を使います。
309+
310+
次のボタンを使用して、このリポジトリーのコピーをクローンし、DevOps ツールチェーンの一部として IBM Cloud にデプロイすることもできます。
311+
OpenWhisk と MySQL の資格情報を Delivery Pipeline アイコンの下に入力し、`Create` をクリックしてから、配信パイプラインの Deploy ステージを実行します。
312+
313+
[![Deploy to the IBM Cloud](https://bluemix.net/deploy/button.png)](https://bluemix.net/deploy?repository=https://github.com/IBM/openwhisk-serverless-apis.git)
314+
315+
# ライセンス
316+
[Apache 2.0](LICENSE)

‎README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Serverless APIs with IBM Cloud Functions (powered by Apache OpenWhisk)
44

5-
*Read this in other languages: [한국어](README-ko.md).*
5+
*Read this in other languages: [한국어](README-ko.md), [日本語](README-ja.md).*
66

77
This project shows how serverless, event-driven architectures can execute code that scales automatically in response to demand from HTTP REST API calls. No resources are consumed until the API endpoints are called. When they are called, resources are provisioned to exactly match the current load needed by each HTTP method independently.
88

0 commit comments

Comments
(0)

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