WranglerV2.0でCloudflare Workers

2022.05.17

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

Introduction

ひさしぶりにCloudflare Workersを動かそうと思い、
WranglerをインストールしてQuick Startやってたら、
なんかエラーがでて動かなくなってました。
確認したところ、Wranglerが2.0になってたらしいです。

去年の11月からβで、先日正式にリリースされた様子。
せっかくなのでWranglerV2でWorkers動かしてみます。

Wrangler?

Cloudflare WorkersのCLIツールです。
V1のときはダッシュボードからAPI Token発行とかが必要だったみたいですが、
V2になったらそれも必要なくなりました。
特徴や機能についてはここに詳細があります。

Setup

まずはCloudflareのアカウントを作成。
ここから作りましょう。
登録してログインできたらダッシュボードが見れるようになります。

Try

wranglerをnpmでインストールします。
以前は@cloudflare/wranglerと指定していたようですが、
V2からは↓の指定でOKです。

% npm install -g wrangler

versionが2になってます。

% wrangler --version
2.0.5

loginコマンドでOAuth認証する・・・はずですが、自分の環境のNodeが古くてエラーでした。

% wrangler login
Wrangler requires at least Node.js v16.7.0. You are using v16.2.0.
You should use the latest Node.js version if possible, as Cloudflare Workers use a very up-to-date version of V8.
Consider using a Node.js version manager such as https://volta.sh/ or https://github.com/nvm-sh/nvm.

v16.7.0以降のnodeをインストールして再度loginします。
自分の場合、nodenv使ってたので↓のようにinstall〜rehashを実行。

% nodenv install 16.10.0
% nodenv local 16.10.0
% nodenv gloval 16.10.0
% nodenv rehash

#再度インストール
% npm install -g wrangler

wrangler loginを実行するとブラウザが起動するので
問題なければAllow。

initコマンドを使い、my-worker-rustという名前でRustのWorkers作成。

% npm init cloudflare my-worker-rust worker-rust

    Success ?
    Your "my-worker-rust" directory is ready for you~!

wrangler devコマンドを使うと、
ローカルでWorkersが試せます。

% cd my-worker-rust

% npx wrangler dev
 ⛅️ wrangler 2.0.5
-------------------
Running custom build: cargo install -q worker-build && worker-build --release
[INFO]: ?  Checking for the Wasm target...
[INFO]: ?  Compiling to Wasm...
    ・・・・・・
    Finished release [optimized] target(s) in 21.49s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optimizing wasm binaries with `wasm-opt`...
[INFO]: Optional fields missing from Cargo.toml: 'description', 'repository', and 'license'. These are not necessary, but recommended
[INFO]: ✨   Done in 26.72s
[INFO]: ?   Your wasm pkg is ready to publish at /Users/nakamura.shuta/dev/cloudflare/my-worker-rust/build.
⬣ Listening at http://localhost:8787

ちゃんと動いてますね。

% curl http://localhost:8787/
Hello from Workers!%

wrangler publishでデプロイ。
簡単です。

% npx wrangler publish --name worker-example
 ⛅️ wrangler 2.0.5
-------------------
Running custom build: cargo install -q worker-build && worker-build --release
[INFO]: ?  Checking for the Wasm target...
[INFO]: ?  Compiling to Wasm...
    Finished release [optimized] target(s) in 0.12s
[INFO]: ⬇️  Installing wasm-bindgen...
[INFO]: Optimizing wasm binaries with `wasm-opt`...
[INFO]: Optional fields missing from Cargo.toml: 'description', 'repository', and 'license'. These are not necessary, but recommended
[INFO]: ✨   Done in 0.92s
[INFO]: ?   Your wasm pkg is ready to publish at /path/your/my-worker-rust/build.
Uploaded my-rust-worker (1.23 sec)
Published my-rust-worker (3.50 sec)
  worker-example.your-sub-domain.workers.dev

こちらも問題なく動いてます。

% curl https://worker-example.your-sub-domain.workers.dev/worker-version
0.0.9

Summary

というわけで、WranglerV2.0をつかってCloudflare Workersを動かしてみました。
今後D1のリリースも控えてますし、いろいろ楽しみです。

References