3分ではじめるWebtask

セクションナイン吉田真吾@yoshidashingo)です。

各社FaaSプラットフォームを提供していますが、Auth0という認証SaaSの別プロダクトであるWebtaskの話をServerlessconf Londonで聞いているところなので聞きながら試してみてます。

Getting Started

  • Webtaskのサイトにアクセスします。

https://webtask.iowebtask.io

  • GithubやFacebookなどでログイン(アカウント作成)します。

  • wtクライアントをインストールします

$ npm install wt-cli -g

ちなみにこのクライアントはオープンソースで開発されています。

github.com

  • 環境の初期化をします
$ wt init <作成したアカウントのメールアドレス(https://webtask.io/cliにあらかじめ表示されています)>

Please enter the verification code we sent to <メールアドレス> below.
Verification code:

メールアドレスに6桁の確認コードが届いているので入力して環境の初期化をします。

  • サンプルコードを試す
$ echo "module.exports = function (cb) {cb(null, 'Hello');}" > hello.js
$ wt create hello.js

Webtask created

You can access your webtask at the following url:

https://xxxxxxxxxxxxxxxxxxxx.run.webtask.io/hello?webtask_no_cache=1

こんな表示が出るのでURLにアクセスすると、コードが実行されて画面に表示されますね。

f:id:yoshidashingo:20161027215119p:plain

  • ちょっとコードを編集してみましょう。
$ wt edit hello

と入力するとブラウザ上がエディタが起動してコードが編集可能になります。

f:id:yoshidashingo:20161027215525p:plain

コードを以下のように編集して実行すると、

var view = (function view() {/*
    <html>
    <head>
      <title>Welcome to Webtasks</title>
    </head>
    <body>
      <h1>Hello, <%= name %></h1>
    </body>
    </html>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\s*\}$/)[1];

module.exports = function (context, req, res) {
  console.log('hoge');
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.end(require('ejs').render(view, {
      name: context.data.name || 'Anonymous'
  }));
}

HTMLをレスポンスして f:id:yoshidashingo:20161027221115p:plain

ログ出力されるコードが簡単に実行できました。 f:id:yoshidashingo:20161027220957p:plain

実行環境について

Webtaskの実行環境も他のFaaSと同様にコンテナベースでできており、Dockerをベースにしているそうです。(かつ常に実行環境が裏で事前にプロビジョニングされておりウォーミングされている)

その他のアクション

セッション内ではデモとしてSlackを使ったChatOpsが披露されていました。

それ以外にもGitHubのリポジトリにサンプルがたくさん入っており、Webtaskにホストしているコードをスケジュール実行する方法や、認証後のJWTの内容を自分でカスタマイズする方法などがあり、結構有用かもしれないと思っているところです。