Cloudflare Developer Platform の CLI である Wrangler を使い、最初の Worker をセットアップしてデプロイします。
このガイドでは、最初の Worker のセットアップとデプロイを順に説明します。
- Cloudflare アカウント ↗ に登録します。
Node.js↗ をインストールします。
Node.js のバージョンマネージャー
権限の問題を避け、Node.js のバージョンを切り替えられるよう、Volta ↗ や nvm ↗ などの Node バージョンマネージャーを使います。このガイドの後半で説明する Wrangler には、Node バージョン 16.17.0 以降が必要です。
ターミナルを開き、C3 を実行して Worker プロジェクトを作成します。C3(create-cloudflare-cli) ↗ は、Cloudflare 向けの新しいアプリケーションのセットアップとデプロイを支援するコマンドラインツールです。
npm create cloudflare@latest -- my-first-workeryarn create cloudflare my-first-workerpnpm create cloudflare@latest my-first-workerセットアップでは、次のオプションを選びます。
- What would you like to start with? では、
Hello World exampleを選びます。 - Which template would you like to use? では、
Worker onlyを選びます。 - Which language do you want to use? では、
JavaScriptを選びます。 - Do you want to use git for version control? では、
Yesを選びます。 - Do you want to deploy your application? では、
Noを選びます(デプロイ前にいくつか変更します)。
これで新しいプロジェクトが用意できました。そのプロジェクトフォルダーに移動します。
cd my-first-workerC3 が作成したファイル
プロジェクトディレクトリには、C3 が次のファイルを生成しています。
wrangler.jsonc: Wrangler 設定ファイルです。index.js(/src内): ES module 構文で書かれた、最小限の'Hello World!'Worker です。package.json: 最小限の Node 依存関係の設定ファイルです。package-lock.json:npmのpackage-lock.jsonドキュメント ↗ を参照してください。node_modules:npmのnode_modulesドキュメント ↗ を参照してください。
すでに Git リポジトリにプロジェクトがある場合
C3 はテンプレートから新しいプロジェクトを作るほか、既存の Git リポジトリから新しいプロジェクトを作ることもできます。既存の Git リポジトリから新しいプロジェクトを作るには、ターミナルを開いて次を実行します。
npm create cloudflare@latest -- --template <SOURCE><SOURCE> には次のいずれかを指定できます。
user/repo(GitHub)git@github.com:user/repohttps://github.com/user/repouser/repo/some-template(サブディレクトリ)user/repo#canary(ブランチ)user/repo#1234abcd(コミットハッシュ)bitbucket:user/repo(Bitbucket)gitlab:user/repo(GitLab)
既存のテンプレートフォルダーには、Cloudflare Workers の要件を満たすために、少なくとも次のファイルが必要です。
package.jsonwrangler.jsoncWrangler 設定のサンプルを参照src/(wrangler.jsoncから参照される Worker スクリプトを含む)
C3 は Workers プロジェクトに、Workers のコマンドラインインターフェースである Wrangler をデフォルトでインストールします。Wrangler で Workers プロジェクトの 作成、テスト、デプロイ ができます。
最初の Worker を作成したあと、プロジェクトディレクトリで wrangler dev コマンドを実行し、Worker 開発用のローカルサーバーを起動します。開発中に Worker をローカルでプレビューできます。
npx wrangler devWrangler を初めて使う場合は、Web ブラウザーが開き、Cloudflare アカウントにログインできます。
http://localhost:8787 ↗ を開いて Worker を確認します。
ブラウザーで問題が起きた場合
この手順で問題がある場合、またはブラウザー画面を使えない場合は、wrangler login のドキュメントを参照してください。
新しいプロジェクトが生成され、動作しているので、コードの記述と編集を始められます。
src/index.js ファイルを探します。index.js には次のコードが入っています。
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};コードの説明
このコードブロックは、いくつかの部分で構成されています。
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};export default は、JavaScript モジュール ↗ を定義するために必要な JavaScript 構文です。Worker は、処理するイベントに対応するプロパティを持つオブジェクトをデフォルトエクスポートする必要があります。
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};この fetch() ハンドラー は、Worker が HTTP リクエストを受け取ったときに呼ばれます。エクスポートするオブジェクトに追加のイベントハンドラーを定義し、別の種類のイベントに応答できます。たとえば scheduled() ハンドラー を追加すると、Cron Trigger からの Worker 呼び出しに応答できます。
また、fetch ハンドラーには常に 3 つのパラメーター(request、env、context)が渡されます。
export default {
async fetch(request, env, ctx) {
return new Response("Hello World!");
},
};Workers ランタイムは、fetch ハンドラーが Response オブジェクト、または Response オブジェクトに解決される Promise を返すことを期待します。この例では、文字列 "Hello World!" を持つ新しい Response を返します。
現在の index.js の内容を、出力テキストを変えた次の内容に置き換えます。
export default {
async fetch(request, env, ctx) {
return new Response("Hello Worker!");
},
};ファイルを保存し、ページを再読み込みします。Worker の出力が新しいテキストに変わります。
変更が表示されない場合
Worker の出力が変わらない場合は、次を確認してください。
index.jsへの変更を保存したこと。wrangler devが実行中であること。- ブラウザーを再読み込みしたこと。
Wrangler で Worker を *.workers.dev サブドメインまたは カスタムドメイン にデプロイします。
npx wrangler deployサブドメインやドメインを設定していない場合、Wrangler は公開時にセットアップを求めます。
<YOUR_WORKER>.<YOUR_SUBDOMAIN>.workers.dev で Worker をプレビューします。
523 エラーが表示される場合
*.workers.dev サブドメインを初めて公開したときに 523 エラー が出る場合は、1 分ほど待つと解消します。
さらに進めるには、次を試してください。
- プロジェクトを GitHub または GitLab リポジトリにプッシュし、ビルドに接続 して自動ビルドとデプロイを有効にします。
- 編集を簡単にするには Cloudflare ダッシュボード ↗ を開きます。
- 参考として Examples と Tutorials を確認します。
- バインディング を設定し、Worker が他のリソースと連携できるようにして、新しい機能を使えるようにします。
- Workers の テストとデバッグ の方法を学びます。
- Workers の制限と料金 を読みます。