Wrangler CLI ガイド
Wranglerは、Cloudflare WorkersやPages・R2・D1などのCloudflareリソースを管理するための公式CLIツールです。Azure開発者にとっては Azure Functions Core Tools (func) や Azure CLI (az) に相当する存在です。
Azureツールとの対比
| 操作 | Azure | Cloudflare |
|---|---|---|
| ローカル開発サーバー起動 | func start | wrangler dev |
| 本番デプロイ | func azure functionapp publish | wrangler deploy |
| ログ確認(リアルタイム) | func azure functionapp logstream | wrangler tail |
| シークレット設定 | az functionapp config appsettings set | wrangler secret put |
| リソース一覧 | az resource list | wrangler whoami / 各サブコマンド |
| 設定ファイル | local.settings.json | wrangler.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
対話形式でテンプレートを選択できます。.NETのfunc 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 Tools | Wrangler |
|---|---|---|
| ローカル実行 | func start | wrangler dev |
| デプロイ | func azure functionapp publish | wrangler deploy |
| ログ確認 | func azure functionapp logstream | wrangler tail |
| 環境変数設定 | az functionapp config appsettings set | wrangler secret put |
| 新規プロジェクト | func init / func new | npm create cloudflare |
| ランタイムエミュレート | Azurite + ローカルランタイム | miniflare(Wranglerに内包) |
| 設定ファイル | host.json + local.settings.json | wrangler.toml |
| CI/CD連携 | azure/functions-action | cloudflare/wrangler-action |