Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Workers

最終更新 Markdown で表示Agent セットアップ

Worker から Artifacts リポジトリを作成し、標準の Git クライアントでコンテンツを push / pull します。

このガイドの最後までに、Worker を作成し、Artifacts にバインドし、Workers バインディングでリポジトリを作り、コミットを push し、同じリポジトリを標準の Git クライアントで clone します。

先に 名前空間 を読み、使う名前空間名を決めてください。このガイドの例では default を使います。

前提条件

  1. Cloudflare アカウント に登録します。
  2. Node.js をインストールします。

Node.js のバージョンマネージャー

権限の問題を避け、Node.js のバージョンを切り替えられるよう、Voltanvm などの Node バージョンマネージャーを使います。このガイドの後半で説明する Wrangler には、Node バージョン 16.17.0 以降が必要です。

次も必要です。

  • Wrangler がインストールされていること。このガイドでローカルの Wrangler コマンドを使う場合は、先に Wrangler で認証してください。ローカルの OAuth 認証や CI の設定は、wrangler loginCI/CD で Wrangler を実行する を参照してください。
  • Cloudflare アカウントで Artifacts を利用できること。
  • 名前空間名(例: default)。
  • ローカルの git クライアント。
  • レスポンスフィールドを自動抽出する場合は jq

1. Worker プロジェクトを作成する

  1. C3 で新しい Worker プロジェクトを作成します。

    npm create cloudflare@latest -- artifacts-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? では、TypeScript を選びます。
    • Do you want to use git for version control? では、Yes を選びます。
    • Do you want to deploy your application? では、No を選びます(デプロイ前にいくつか変更します)。
  2. プロジェクトディレクトリに移動します。

    cd artifacts-worker

2. Artifacts バインディングを追加する

Wrangler 設定ファイルを開き、Artifacts バインディングを追加します。

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "artifacts-worker",
  "main": "src/index.ts",
  // Set this to today's date
  "compatibility_date": "2026-09-20",
  "artifacts": [
    {
      "binding": "ARTIFACTS",
      "namespace": "default"
    }
  ]
}
name = "artifacts-worker"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-09-20"

[[artifacts]]
binding = "ARTIFACTS"
namespace = "default"
# Set remote = true if you want Wrangler to use the remote Artifacts service in local dev.

これで Worker 内から env.ARTIFACTS として Artifacts を使えます。

TypeScript を使っている場合は、ローカルのバインディング型を再生成します。

npx wrangler types

Wrangler は、生成した worker-configuration.d.tsArtifacts 型を追加します。

3. Worker を書く

src/index.ts を次のコードに置き換えます。

src/index.jsjs
export default {
	async fetch(request, env) {
		const url = new URL(request.url);

		if (request.method === "POST" && url.pathname === "/repos") {
			// Read the repo name from the request body so the route is reusable.
			const body = await request.json().catch(() => ({}));

			const repoName = body.name ?? "starter-repo";

			// Create the repo and return the remote URL plus initial write token.
			const created = await env.ARTIFACTS.create(repoName);

			return Response.json({
				name: created.name,
				remote: created.remote,
				token: created.token,
			});
		}

		return new Response("Use POST /repos to create an Artifacts repo.", {
			status: 405,
			headers: { Allow: "POST" },
		});
	},
};
src/index.tsts
export default {
	async fetch(request, env) {
		const url = new URL(request.url);

		if (request.method === "POST" && url.pathname === "/repos") {
			// Read the repo name from the request body so the route is reusable.
			const body = await request.json().catch(() => ({}));

			const repoName = body.name ?? "starter-repo";

			// Create the repo and return the remote URL plus initial write token.
			const created = await env.ARTIFACTS.create(repoName);

			return Response.json({
				name: created.name,
				remote: created.remote,
				token: created.token,
			});
		}

		return new Response("Use POST /repos to create an Artifacts repo.", {
			status: 405,
			headers: { Allow: "POST" },
		});
	},
};

この Worker は Artifacts リポジトリを作成し、Git クライアントが push / pull に使うリモート URL とトークンを返します。

デモでは、Worker が初回の write トークンを返します。本番では、clone と pull 向けに短命の read トークンを発行し、write トークンは push が必要な操作だけに発行してください。

4. Worker を呼び出してリポジトリを作成する

ローカル開発を開始します。

npx wrangler dev

次に、別のターミナルを開き、Worker にリクエストを送って新しい Artifacts リポジトリを作成します。

curl http://localhost:8787/repos \
  --header "Content-Type: application/json" \
  --data '{
    "name": "starter-repo"
  }'

Worker は env.ARTIFACTS.create() を呼び出し、Git 操作に必要な 3 つの値を返します。

{
	"name": "starter-repo",
	"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git",
	"token": "art_v1_0123456789abcdef0123456789abcdef01234567?expires=1760000000"
}
  • name: リポジトリ名。名前空間内で一意である必要があります。
  • remote: このリポジトリの Git リモート URL。<ACCOUNT_ID> は実際の Cloudflare アカウント ID になります。
  • token: Git 操作用の短命な資格情報。トークンは有効期限を ?expires= サフィックスに Unix タイムスタンプとして埋め込みます。

remotetoken の値を、ローカルのシェル変数にコピーします。

export ARTIFACTS_REMOTE="<PASTE_REMOTE_FROM_RESPONSE>"
export ARTIFACTS_TOKEN="<PASTE_TOKEN_FROM_RESPONSE>"
RESPONSE=$(curl --silent http://localhost:8787/repos \
  --header "Content-Type: application/json" \
  --data '{"name":"starter-repo"}')

export ARTIFACTS_REMOTE=$(printf '%s' "$RESPONSE" | jq -r '.remote')
export ARTIFACTS_TOKEN=$(printf '%s' "$RESPONSE" | jq -r '.token')

5. git で最初のコミットを push する

前の手順で、Worker は空の Artifacts リポジトリを作成しました。次にローカル Git リポジトリを作り、ファイルを追加して Artifacts に push します。通常の Git リモートへの push と同じ手順です。

mkdir artifacts-demo
cd artifacts-demo
git init -b main
printf '# Artifacts demo\n' > README.md
git add README.md
git commit -m "Initial commit"
git remote add origin "$ARTIFACTS_REMOTE"
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" push -u origin main

-c http.extraHeader フラグはトークンをリクエストヘッダーとして渡すので、Git 設定やシェル履歴に残りません。

短時間のコマンド用に自己完結したリモート URL が必要な場合は、トークンのシークレットから組み立てます。

export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
git push "$ARTIFACTS_AUTH_REMOTE" HEAD:main

6. 通常の Git クライアントでリポジトリを pull する

同じリポジトリを 2 つ目のディレクトリに clone します。

cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1

前の手順で push したコミットが表示されるはずです。

短時間のコマンド用に、自己完結したリモート URL で clone することもできます。

git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone

7. Worker をデプロイする

Worker プロジェクトのディレクトリに戻ります。

cd artifacts-worker

wrangler dev を動かさなくてもリポジトリを作れるよう、Worker をデプロイします。

npx wrangler deploy

Wrangler は workers.dev URL を表示します。その URL に対して同じ curl リクエストを送り、本番から追加のリポジトリを作成できます。

次のステップ

ベストプラクティス

リポジトリの分離、最小権限のトークン、名前空間の分割を効果的に使います。

Git プロトコル

標準の git-over-HTTPS リモートを、URL ベースの認証または `http.extraHeader` で使います。

役に立ちましたか?