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現在).

今回はせっかくなので 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!” という応答が返されています.

 

今回はここまで.