IBM Cloud Functions を Swift で使う【お試し編】
IBM Cloud にも FaaS がありまして、IBM Cloud Functions と言います.
今回はこれを試してみたいと思います.
公式ドキュメント.
AWS Lambda との比較記事.非常に面白いです.
ちなみに私は Lambda 未経験、Azure Functions をほんのちょっと触ったことがあるだけの FaaS 初心者ですので悪しからず.
概要
- 従来の課金方式であるランタイム稼働時間でなく、純粋な使用時間に課金される
- オートスケーリングされる
- 他のサービスを組み合わすことができる
Swift があるのが他のプロバイダーと比べて異色だと思います.
C# が無いのはちょっと残念(Azure Functions にも Lambda にもあります).
なお、Node.js, Python, Swift, PHP 以外のランタイムを選ぶ場合は CLI 経由になるそうです(2018/05現在).
💻CLIからなのですわ、JavaやGoの場合。例えば、
bx wsk action create helloJava hello.jar –main Hello
📚こちらに一連の手順があるので、ぜひ一読を😉https://t.co/6TvyaCo6gD— Simon Sasaki シモンさん@Uniteの次はThinkで! (@simonTokyo) 2018年5月20日
今回はせっかくなので Swift でやってみたいと思います.
Quickstart Template を試す
Functions トップページから「作成の開始」を選択.
Quickstart Template を選択.
Runtime に Swift 4 を選択.
Deployボタンをクリック.
Deploy に成功すると上記画面が表示されます.
デフォルトではベーシック認証が必要になっています.
curl のコピーボタンでベーシック認証込みの curl コマンドをコピーできます.
curl -u 59fe9f3c-XXXX:fZt4fvdeO46XXX -X POST https://openwhisk.ng.bluemix.net/api/v1/namespaces/SanteaDev_BluemixDev/actions/hello-world-swift/helloworld?blocking=true
Enable as Web Action を ON にするとベーシック認証なしでリクエストできます.
デフォルトパラメーターというものを設定できます.
パラメーターが無い場合はここで設定したものが使われ、パラメーターが渡された場合は渡されたもので上書きされます.
key-value 形式でパラメーターを追加できます.
$ curl -u 59fe9f3c-XXXX:fZt4fvdeO4XXXX -X POST https://openwhisk.ng.bluemix.net/api/v1/namespaces/SanteaDev_BluemixDev/actions/hello-world-swift/helloworld?blocking=true
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 585 0 585 0 0 52 0 –:–:– 0:00:11 –:–:– 164{“duration”:9450,”name”:”helloworld”,”subject”:”example@gmail.com”,”activationId”:”XXXX”,”publish”:false,”annotations”:[{“key”:”path”,”value”:”SanteaDev_BluemixDev/hello-world-swift/helloworld”},{“key”:”waitTime”,”value”:941},{“key”:”kind”,”value”:”swift:4.1″},{“key”:”limits”,”value”:{“timeout”:60000,”memory”:256,”logs”:10}},{“key”:”initTime”,”value”:8764}],”version”:”0.0.1″,”response”:{“result”:{“greeting”:”Hello Santea!”},”success”:true,”status”:”success”},”end”:1527091840063,”logs”:[],”start”:1527091830613,”namespace”:”SanteaDev_BluemixDev”}
curl 結果です.
デフォルトパラメーターを設定したことでパラメーターなしでも “greeting”:”Hello Santea!” という応答が返されています.
今回はここまで.