SpinアプリをFermyon Cloudにデプロイする

2022.11.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Introduction

以前、Spinという、WASMを使うイベント駆動型フレームワークを紹介しました。
RustやGoで実装できるシンプルなフレームワークなのですが、
先日のアップデートでFermyon Cloudにデプロイできるようになってました。
※ Fermyon Cloudは2022/11月時点ではオープンベータです

FermyonはさきほどのSpinフレームワークの開発元であり、
Fermyon PlatformはSpinやSpin CLI、管理機能などの
関連するツールやサービスをまとめたプラットフォームです。
そして、Fermyon Platformをクラウドサービスとして
使えるようにしたものが、Fermyon Cloudです。

今回は、この前と同じくSpinをつかったアプリを作成し、
Fermyon Cloudにデプロイしてみます。

Environment

  • MacBook Pro (13-inch, M1, 2020)
  • OS : MacOS 13.0.1
  • rust : 1.65.0

Setup

まずはspin cliをインストールして所定の位置へ移動しましょう。

% curl -fsSL https://developer.fermyon.com/downloads/install.sh | bash
% sudo mv spin /usr/local/bin/

0.6がインストールされていればOKです。

% spin --version
spin 0.6.0 (12a5037 2022-10-21)

提供されているテンプレートのインストールをしておきます。  

% spin templates install --git https://github.com/fermyon/spin

newコマンドでプロジェクトを作成します。
今回もhttp-rustを選択。

% spin new
Pick a template to start your project with:
  http-c (HTTP request handler using C and the Zig toolchain)
  http-go (HTTP request handler using (Tiny)Go)
  http-grain (HTTP request handler using Grain)
> http-rust (HTTP request handler using Rust)
  http-swift (HTTP request handler using SwiftWasm)
  http-zig (HTTP request handler using Zig)
  redis-go (Redis message handler using (Tiny)Go)
  redis-rust (Redis message handler using Rust)

このあとプロジェクト名やパスを設定します。
適当な名前(ここではspin-appと指定)を設定してあとはデフォルトで作成しましょう。

生成されたコードはそのままで、ビルドと起動をします。

% cd spin-app/
% spin build
% spin up
Serving http://127.0.0.1:3000
Available Routes:
  spin-app: http://127.0.0.1:3000 (wildcard)

curlで動作確認。問題なく動いてます。

% curl http://127.0.0.1:3000
Hello, Fermyon

Fermyon Cloudにデプロイ

↑のSpinアプリをFermyon Cloudにデプロイするのは簡単です。
下記のようにspin deployコマンドを実行するだけです。

% spin deploy

Copy your one-time code:

XXXXXXX <-コードが表示

...and open the authorization page in your browser:

https://cloud.fermyon.com/device-authorization <ーここで認証

Waiting for device authorization...

one-timeコードがコンソールに表示され、
認証用のURLが表示されます。
ブラウザでアクセスすると、↓のような画面が表示されるので、
Githubログインして認証しましょう。

認証に成功すると、デプロイが実行されて
Fermyon CloudでのURLが発行されます。

Device authorized!
Uploading spin-app version 0.1.0+rxxxxxx...
Deploying...
Waiting for application to become ready........ ready
Available Routes:
  spin-app: https://spin-app-xxxxxxxx.fermyon.app (wildcard)

こちらも問題なくアクセスできました。

% curl https://spin-app-xxxxxxxx.fermyon.app

Hello, Fermyon

また、Fermyon cloudの画面右上からログインすると、
ダッシュボードにアクセスできます。
ここではデプロイしたアプリのステータスやログの確認ができます。

Summary

Spinアプリを簡単にデプロイして公開することができました。
最近はこういったWASM系のPaaSが増えてきてますね。
Fermyon Cloudをはじめ、WASM界隈の今後が楽しみです。

References