Workers とは?
Cloudflare Workers は、Cloudflare 社が提供しているサーバレスプラットフォームで、Web リクエストに応じたレスポンスを返すサービスを簡単に構築することができます。
Workers は世界中に配置されたエッジサーバーで実行されるため、クライアントからの要求に高速に応答することができます。
Azure Functions や AWS Lambda と同じようなサービスですが、それらに比べて Workers は、より高速かつ安価という特徴を持っています。
毎日 10 万リクエストまで無料 で使えるので、趣味用途であれば、無料枠だけでいろいろ試せます。
本記事の作業を進めるには、あらかじめ Cloudflare のアカウントを作成しておく必要があります。
下記から無料で作成できます。
Wrangler をインストールする
Worker の開発やデプロイには、wrangler
という公式のコマンドラインツールを使用します。
Node.js の npm
コマンドを使って、次のようにインストールできます。
Cloudflont へのアクセスを許可する (wrangler login)
wrangler
コマンドを実行できるようになったら、wrangler login
を実行して、Cloudflare のアカウントと関連づけます。
Web ブラウザーが自動的に開いて、Wrangler から Cloudflare のデータにアクセスしてよいか尋ねられるので Allow
ボタンを押して許可します。
これで、wrangler
の各種コマンドを実行できるようになります。
サインインした状態で wrangler whoami
コマンドを実行すると、どの Cloudflare ユーザーでサインインしているかを確認できます。
Worker プロジェクトを作成する (wrangler init)
wranger init <プロジェクト名> を実行すると、Worker プロジェクトのテンプレートコードを生成できます(いわゆる scaffold 処理です)。
次のような質問をされますが、基本はすべて Enter でデフォルトのまま進めていけば OK です。
- Git リポジトリとして初期化するか?(デフォルト: Yes)
- package.json ファイルを作成するか?(デフォルト: Yes)
- TypeScript を使用するか?(デフォルト: Yes)
- どのタイプのハンドラーコードを生成するか?(デフォルト: Fetch handler)
プロジェクトの初期化が終了すると次のようなファイルが配置されます。
hello/
+-- .git/
+-- .gitignore
+-- node_modules/
+-- package-lock.json
+-- package.json
+-- src/index.tsx
+-- tsconfig.json
+-- wrangler.toml
開発用のローカルサーバーを起動する (wrangler dev)
wrangler init
によって生成される src/index.ts
ファイルは次のような感じの実装になっています。
HTTP リクエストを受けて Hello World!
というレスポンスを返すだけですね。
この Worker 実装をローカルサーバーでテストするには、wrangler dev
コマンドを実行します。
package.json
で NPM スクリプトが定義されているので npm start
でも OK です(wrangler
コマンドをローカルインストールした場合は npm start
を使います)。
デフォルトでは http://localhost:8787
でアクセス可能なローカルサーバーが起動します。
コンソール上で B キーを入力すると、Web ブラウザでページを開くことができます。
次のように表示されれば成功です。
Cloudflare Workers へのデプロイ (wrangler publish)
ローカルサーバーでの動作確認が済んだら、wrangler publish
コマンドで Cloudflare Workers へデプロイできます。
デプロイは一瞬で完了して、自動的に https://<プロジェクト名>.<ユーザー名>.workers.dev
という URL が割り当てられます。
デフォルトで公開状態になるので、Web ブラウザや curl
コマンドでアクセスすれば、Hello World!
というレスポンスが返ってきます。
$ curl https://hello.XXXX.workers.dev
Hello World!
デプロイまでとても簡単にできました!
٩(๑❛ᴗ❛๑)۶ わーぃ
ちなみに、デプロイ先の Worker 名は --name
オプションで変更できます。
$ wrangler publish --name hello-stg
あとかたづけ (wrangler delete)
Cloudflare Workers は呼び出しごとの従量課金なので、Worker をたくさん作って放置しておいても特にお金はかかりませんが、不要な Worker は削除しておいた方がよいでしょう。
Worker の削除には、wrangler delete
コマンドを使用します。
スッキリスッキリ ( ⁎ᵕᴗᵕ⁎ )