4.2. Cloud Functionsコード実装¶
4.2.1. ハンドラ実装¶
Cloud Functionsのコード実装を行います。
ここでは、"Hello world, [名前]!!!" という応答を返す単純なロジックを作成してみます。 ("名前" は引数として呼び出し時に引き渡します)
エディタを開き index.js という名前のファイルを以下の内容で作成してください。
'use strict';
exports.sayHello = (event, context) => {
let name = "John Doe";
if (context.clientContext.queryParams.name) {
name = context.clientContext.queryParams.name[0];
}
const response = {
message: "Hello world, " + name + " !!!"
};
context.succeed(response);
};
上記 sayHello が「ハンドラ」です。ハンドラがコードのエントリポイントになります。 ハンドラ関数は exports で外部公開する必要があります。
このハンドラでは、context.clientContext.queryParams.name[0] で名前を受け取り、メッセージを response.message に 格納して返却しています。
ハンドラには以下2つの引数が引き渡されます。
- event: 呼び出し元が指定したリクエストボディが格納されます。
- Content-Type が "application/json" の場合、リクエストボディの JSON オブジェクトをパースしたものが引き渡されます。
- これ以外の場合は、リクエストボディを格納した Buffer が渡されます。
- context: ランタイム情報が格納されます。
context にはいくつかのメソッドやオブジェクトが定義されています。 ハンドラの処理が正常に完了した場合は context.succeed() を、異常終了した場合は context.fail() を呼び出す必要があります。
context の詳細は コンテキスト を参照してください。
4.2.2. コードのパッケージングと登録¶
コードができたので、モバイルバックエンド基盤サーバに登録します。
まず package.json ファイルを確認し、"main" プロパティに "index.js" が指定されていることを確認してください。 サーバは main に指定されたコードを最初に実行します。
確認したら以下手順でコードをパッキングします。
$ npm pack
"hello-1.0.0.tgz" というファイル名でコードが生成されるはずです。 (ファイル名が異なる場合は、package.json の name, version の値を確認してください)
次にコードをサーバに登録します。
$ nebula create-code
create-code コマンドを実行すると、package.json の内容に従い hello-1.0.0.tgz ファイルをサーバにアップロードします。
コードはファイルバケットに格納されます。デフォルトでは "CUSTOM_CODE" という名前のバケットに格納されます。
コードが登録されたかどうかは "nebula list-code" で確認できます。 コードを削除したいときは "nebula delete-code <ファイル名>" で削除してください。