跳到主要内容

Wrangler CLI ガイド

Wranglerは、Cloudflare WorkersやPages・R2・D1などのCloudflareリソースを管理するための公式CLIツールです。Azure開発者にとっては Azure Functions Core Tools (func)Azure CLI (az) に相当する存在です。

Azureツールとの対比

操作AzureCloudflare
ローカル開発サーバー起動func startwrangler dev
本番デプロイfunc azure functionapp publishwrangler deploy
ログ確認(リアルタイム)func azure functionapp logstreamwrangler tail
シークレット設定az functionapp config appsettings setwrangler secret put
リソース一覧az resource listwrangler whoami / 各サブコマンド
設定ファイルlocal.settings.jsonwrangler.toml / wrangler.jsonc

インストール

npm install -g wrangler
# または npx wrangler(インストール不要)

バージョン確認:

wrangler --version

認証

Cloudflareアカウントへのログインは wrangler login で行います。ブラウザが開き、OAuthフローで認証されます。

wrangler login
# ブラウザが開いてCloudflareダッシュボードで認証

wrangler whoami
# ログイン中のアカウント情報を表示

CI/CD環境(GitHub Actions等)ではAPIトークンを環境変数で渡します:

export CLOUDFLARE_API_TOKEN="your-api-token"

プロジェクト作成

# テンプレートから新規プロジェクト作成
wrangler init my-worker

# または npm create cloudflare(推奨)
npm create cloudflare@latest my-worker

対話形式でテンプレートを選択できます。.NETfunc newに近いフローです。


設定ファイル(wrangler.toml)

wrangler.tomlはWorkerの設定ファイルです。Azure Functionsのhost.json + local.settings.jsonに相当します。

name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-11-01"

# 環境変数(非機密)
[vars]
MY_VAR = "hello"
API_BASE_URL = "https://api.example.com"

# KVバインディング(Azure Cache for Redisに相当)
[[kv_namespaces]]
binding = "MY_KV"
id = "abc123def456"

# R2バインディング(Azure Blob Storageに相当)
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"

# D1バインディング(SQLiteベースのエッジDB)
[[d1_databases]]
binding = "MY_DB"
database_name = "my-database"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# 本番環境設定
[env.production]
name = "my-worker-prod"
vars = { ENVIRONMENT = "production" }
提示

wrangler.toml[vars]には非機密の環境変数のみ記載します。APIキー等の機密情報はwrangler secretコマンドで管理します(後述)。


ローカル開発

# ローカルDevサーバー起動(ホットリロード対応)
wrangler dev

# ポート指定
wrangler dev --port 8787

# リモートCloudflareサービスに接続しながらローカル実行
wrangler dev --remote

wrangler devはデフォルトでローカルのminiflare(Workersランタイムのエミュレーター)上で動作します。KV・R2・D1もローカルでエミュレートされるため、Azureリソースへの接続なしに開発できます。

--remoteフラグを付けると実際のCloudflareリソースに接続します。Azure Functions Core Toolsの--useLocalFunctions falseに相当します。


デプロイ

# デフォルト環境にデプロイ
wrangler deploy

# 特定環境にデプロイ(wrangler.tomlの[env.production]を使用)
wrangler deploy --env production

# ドライラン(変更内容の確認のみ)
wrangler deploy --dry-run

デプロイ後、Workerはhttps://<worker-name>.<subdomain>.workers.devでアクセス可能になります。


シークレット管理

機密情報はCloudflareの暗号化されたシークレットストアに保存します。AzureのKey Vault参照に近い概念です。

# シークレットを対話形式で設定(値を標準入力から読み込む)
wrangler secret put DATABASE_PASSWORD

# シークレット一覧
wrangler secret list

# シークレット削除
wrangler secret delete DATABASE_PASSWORD

# 本番環境のシークレット設定
wrangler secret put API_KEY --env production

Workerのコードからは通常の環境変数として参照できます:

export default {
async fetch(request: Request, env: Env): Promise<Response> {
const password = env.DATABASE_PASSWORD; // シークレット値
return new Response('OK');
},
};

ログ確認(tail)

デプロイ済みWorkerのリアルタイムログを確認します。Azure Functions のlogstreamに相当します。

# リアルタイムログ表示
wrangler tail

# 特定環境のログ
wrangler tail --env production

# フィルタリング(ステータスコードで絞り込み)
wrangler tail --status error

# JSON形式で出力
wrangler tail --format json

KV(Key-Value Store)操作

Cloudflare Workers KVはAzureのAzure Cache for Redis(またはTable Storage)に相当するエッジKVストアです。

# KV Namespaceの作成
wrangler kv namespace create MY_KV

# 本番環境用Namespace作成
wrangler kv namespace create MY_KV --preview false

# Namespace一覧
wrangler kv namespace list

# キーと値を設定
wrangler kv key put --namespace-id <id> my-key "my-value"

# 値を取得
wrangler kv key get --namespace-id <id> my-key

# キー一覧
wrangler kv key list --namespace-id <id>

# キー削除
wrangler kv key delete --namespace-id <id> my-key

# ファイルからバルクインポート
wrangler kv bulk put --namespace-id <id> data.json

R2(オブジェクトストレージ)操作

R2はAzureのBlob Storageに相当しますがエグレス料金なしです。

# バケット作成
wrangler r2 bucket create my-bucket

# バケット一覧
wrangler r2 bucket list

# ファイルアップロード
wrangler r2 object put my-bucket/path/to/file.txt --file ./local-file.txt

# ファイルダウンロード
wrangler r2 object get my-bucket/path/to/file.txt --file ./output.txt

# オブジェクト削除
wrangler r2 object delete my-bucket/path/to/file.txt

# バケット削除
wrangler r2 bucket delete my-bucket

D1(SQLiteエッジDB)操作

D1はCloudflareのエッジSQLiteデータベースです。Azure SQL Databaseの軽量エッジ版と捉えてください。

# データベース作成
wrangler d1 create my-database

# データベース一覧
wrangler d1 list

# SQLを直接実行(ローカル)
wrangler d1 execute my-database --local --command "SELECT * FROM users"

# SQLファイルを実行(マイグレーション)
wrangler d1 execute my-database --file ./migrations/0001_init.sql

# 本番DBに対して実行
wrangler d1 execute my-database --command "SELECT COUNT(*) FROM users"

# バックアップ(エクスポート)
wrangler d1 export my-database --output ./backup.sql

Pages(静的サイト)操作

Cloudflare PagesはAzure Static Web Appsに相当します。

# Pagesプロジェクト作成
wrangler pages project create my-site

# ビルド成果物をデプロイ
wrangler pages deploy ./dist --project-name my-site

# デプロイ一覧
wrangler pages deployment list --project-name my-site

# プロジェクト一覧
wrangler pages project list

GitHub Actionsでの自動デプロイ

name: Deploy Worker

on:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: deploy --env production

Azure DevOpsの場合はWranglerをnpxで実行します:

- task: Bash@3
displayName: Deploy Cloudflare Worker
env:
CLOUDFLARE_API_TOKEN: $(CLOUDFLARE_API_TOKEN)
inputs:
script: npx wrangler deploy --env production

よく使うコマンド一覧

# 認証・アカウント
wrangler login # Cloudflareにログイン
wrangler logout # ログアウト
wrangler whoami # 現在のアカウント確認

# Workers
wrangler dev # ローカル開発サーバー
wrangler deploy # デプロイ
wrangler tail # リアルタイムログ
wrangler delete # Worker削除

# シークレット
wrangler secret put <name> # シークレット設定
wrangler secret list # シークレット一覧
wrangler secret delete <name> # シークレット削除

# KV
wrangler kv namespace list # Namespace一覧
wrangler kv key put ... # キー設定
wrangler kv key get ... # キー取得

# R2
wrangler r2 bucket list # バケット一覧
wrangler r2 object put ... # ファイルアップロード

# D1
wrangler d1 list # DB一覧
wrangler d1 execute ... # SQL実行

# Pages
wrangler pages deploy ./dist # Pagesデプロイ

Azure Functions Core Toolsとの比較まとめ

機能Azure Functions Core ToolsWrangler
ローカル実行func startwrangler dev
デプロイfunc azure functionapp publishwrangler deploy
ログ確認func azure functionapp logstreamwrangler tail
環境変数設定az functionapp config appsettings setwrangler secret put
新規プロジェクトfunc init / func newnpm create cloudflare
ランタイムエミュレートAzurite + ローカルランタイムminiflare(Wranglerに内包)
設定ファイルhost.json + local.settings.jsonwrangler.toml
CI/CD連携azure/functions-actioncloudflare/wrangler-action

参考リンク