5. データ構造¶
5.1. 概要¶
5.2. API¶
API は Swagger 2.0 (OpenAPI 2.0)仕様 JSON または YAML で定義する。
5.3. Operation¶
Swagger内のOperation Objectで定義する。パス名とHTTPメソッド名で特定される。
Operation はoperationId属性を持つ。ファンクションを指定する場合、operationId は必須属性である。operationIdにはファンクションなどを識別する識別名を記載する。
ファンクションを指定する場合、識別名は "function:Function名" と記述する
- "function:" は省略可能
ベンダ拡張属性として、1) トップレベル、2) Path、3) Operation のそれぞれに ACL 属性を指定できる(複数指定した場合は後者が優先)。 ACL 属性は "x-acl" 属性に設定し、値にはAPI を実行可能なユーザID・グループ名の一覧を配列で指定する(グループ名は先頭に "g:" プレフィクスを付ける)。 ACL属性を省略した場合は、権限チェックは行われない。
例を以下に示す(この例は Operation に ACL を指定している)。
paths:
/sayHello:
get:
operationId: function:sayHello
x-acl:
- g:authenticated
5.4. ファンクションテーブル¶
ファンクションテーブルは JSON または YAML 形式で定義する。 キーにファンクション名、値にファンクション定義を指定する。
{
"{function-name-1}": { /* Function */ },
"{function-name-2}": { /* Function */ },
//…
}
5.5. ファンクション¶
ファンクション定義は JSON または YAML で定義する。code属性、handler属性、env属性を持つ。
{
"code": { /* Code */ },
"handler": "{handler-spec-string}",
"env": { /* Env */ }
}
5.6. コード¶
コード定義は JSON または YAML で定義する。bucket属性、file属性を持つ。
{
"bucket": "{nebula-filestorage-bucket-name}",
"file": "{file-name}"
}
5.7. 環境¶
環境は JSON または YAML で定義する。spec属性、timeout属性、memorySize属性を持つ。
{
"spec": "env-spec-string",
"timeout": 600 /* seconds */,
"memorySize": 128 /* mebi bytes */
}