メインコンテンツまでスキップ

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

対話形式でテンプレートを選択できます。.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 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

参考リンク​