SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【Cloudflare】Cloudflare Workersを試してみる

Cloudflare Workers

Cloudflare Workers自体はサーバレスアーキテクチャといったところでしょうか。
AWSのLambdaとAPIゲートウェイと似たような感じになるのかと、

ふと気になったので触ってみる。

ある程度、無料で使用させてくれて、1日10万リクエストまで無料枠となっているようです。

【参考リンク】
Cloudflare Workersが面白すぎる件 | Let's Hack Tech
Cloudflare Workersのチュートリアルをやってみた | DevelopersIO


Cloudflare Workersを利用開始する

Cloudflareのアカウント作成

Cloudflare Workersを使用するためにまずはアカウント作成から行ってきます。

公式サイトにアクセス。
Cloudflare Workers®

サイト右上のSign Up。

作成画面にいったら、EmailとPasswordを入力した状態でCreate Account。

サブドメインの入力を行って、Set up。
サブドメインは初期状態ではメールアドレスを元に入力されているようです。

プラン選択。
今回は無料で試してみたいので、Freeプランを選択しました。

ここまで入力すると、「Check your email to complete setup」、確認メールを送るページが表示されるので、Resend mailを押してメールを確認する。

メールで案内されたリンク先を表示し、以下のような画面が表示されればひとまずOK。
本画面がダッシュボードとなります。

必要に応じて、右上の言語から日本語を選択する。
日本語を選択すると以下のようになります。

本ブログでは日本語で扱います。

Cloudflare Workers初めの一歩

Workers CLIのインストール

Cloudflare Workersを使用するためにはWranglerなるCLIが必要なようです。
install-the-workers-cli

インストールの前提としてnpmがインストールされている必要があるようです。
私の場合はインストールされていなかったので以下を参考に事前インストールしました。
Node.js / npmをインストールする(for Windows) - Qiita

インストールに関してはダッシュボードのメニューのWrangler CLI Guideが参考になると思います。

今回はVSCodeのターミナルから実行することにしました。
Windowsであればcmdなどからでも普通に実行できそうです。

npm install -g wrangler

実行の様子

C:\Users\wanta>npm install -g wrangler
npm WARN deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.

added 56 packages, and audited 57 packages in 14s

1 package is looking for funding
  run `npm fund` for details

10 high severity vulnerabilities

To address issues that do not require attention, run:
  npm audit fix

To address all issues, run:
  npm audit fix --force

Run `npm audit` for details.
npm notice
npm notice New minor version of npm available! 8.5.5 -> 8.11.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.11.0
npm notice Run npm install -g npm@8.11.0 to update!
npm notice

C:\Users\wanta>

インストールができたら、以下のコマンドでログインします。

wrangler login

ブラウザでCloudflareにログインしている状態であれば、以下のような画面が表示されます。
Allowボタンを押下するとwranglerにAPIキーが送信されるようで、ターミナルの方でログインされました。

・CLIのログイン

C:\Users\wanta>wrangler login
 ⛅️ wrangler 2.0.7
-------------------
Attempting to login via OAuth...
Successfully logged in.

C:\Users\wanta>
プロジェクトの作成

CLIから試しにプロジェクトを作成します。
公式からテンプレートを選択して使用できます。

テンプレートは以下から選択することができます。
https://developers.cloudflare.com/workers/get-started/quickstarts/
githubからもってくる場合には、Gitがインストールされている必要があります。

今回はJavaScript Starterを使用します。
以下のコマンドを実行します。

npm init cloudflare my-app https://github.com/cloudflare/worker-template
PS C:\Users\wanta\Desktop\dev> npm init cloudflare my-app https://github.com/cloudflare/worker-template

    Success 🎉
    Your "my-app" directory is ready for you~!

PS C:\Users\wanta\Desktop\dev> 

開発環境でサーバ起動するためにファイル名を指定してwrangler devを実行しますがそのままだとエラーになりました。

PS C:\Users\wanta\Desktop\dev\my-app> wrangler dev .\index.js
 ⛅️ wrangler 2.0.7 
-------------------
▲ [WARNING] Processing wrangler.toml configuration:

    - 😶 Ignored: "type":
      Most common features now work out of the box with wrangler, including modules, jsx,
  typescript, etc. If you need anything more, use a custom build.
    - Deprecation: "zone_id":
      This is unnecessary since we can deduce this from routes directly.



X [ERROR] Processing wrangler.toml configuration:

    - Expected "route" to be either a string, or an object with shape { pattern, custom_domain,
  zone_id | zone_name }, but got "".


If you think this is a bug then please create an issue at https://github.com/cloudflare/wrangler2/issues/new.
PS C:\Users\wanta\Desktop\dev\my-app> 

メッセージに従って、一旦my-app/wrangler.tomlを以下のようにコメントアウトしました。

name = "helloworld"
# type = "javascript"

account_id = ""
workers_dev = true
# route = ""
# zone_id = ""

再実行。

PS C:\Users\wanta\Desktop\dev\my-app> wrangler dev .\index.js
 ⛅️ wrangler 2.0.7 
-------------------
▲ [WARNING] No compatibility_date was specified. Using today's date: 2022-05-28.

  Add one to your wrangler.toml file:
  ```
  compatibility_date = "2022-05-28"
  ```
  or pass it in your terminal:
  ```
  --compatibility-date=2022-05-28
  ```
  See https://developers.cloudflare.com/workers/platform/compatibility-dates for more information.


⬣ Listening at http://localhost:8787

ブラウザからhttp://localhost:8787にアクセスすると画面が表示されることが確認できました。
どうもwranglerの最新バージョンと、試しに使うプロジェクトが対象としているバージョンがずれているっぽい。

デプロイする

デプロイ時には最低限、wrangler.tomlcompatibility_dateを追加する必要があるようだ。
バージョンなどによってちょっと変わってくるのかもしれない。
ちゃんとしたものをデプロイする場合は、ちゃんと設定する必要があると思う。

・wrangler.tomlの修正

name = "helloworld"
# type = "javascript"

account_id = ""
workers_dev = true
# route = ""
# zone_id = ""
compatibility_date = "2022-05-28"

デプロイコマンド。

PS C:\Users\wanta\Desktop\dev\my-app> wrangler publish .\index.js
 ⛅️ wrangler 2.0.7 
-------------------
Uploaded helloworld (0.39 sec)
Published helloworld (3.53 sec)
  helloworld.wantanblog.workers.dev
PS C:\Users\wanta\Desktop\dev\my-app> 

Cloudflareのダッシュボードを確認するとアップロードされているのが確認できると思います。

URLにアクセスすると画面が表示されることも確認できます。



気が向いたらちゃんと試してみる