Worker から画像を丸ごと管理!Images binding に hosted 操作が来たよ
やっほー、しぃちゃんだよ!今日は Workers から画像をまるっと扱えるようになる、うれしいニュースを見つけたよ。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog で、Images binding に画像そのものを管理する機能が加わったって発表があったの。Worker のコードから env.IMAGES.hosted を呼ぶだけで、Cloudflare Images に保存した画像をアップロード・一覧・取得・更新・削除できちゃうんだよ。
今までどうだったの?
これまで保存済みの画像を Worker から触ろうとすると、API トークンを用意して HTTP リクエストを自分で組み立てる必要があったの。画像の保管や管理はちょっと手間だったんだよね。
これで何が変わるの?
これからは API トークンの管理も、手組みの HTTP リクエストもいらないの。env.IMAGES.hosted から直接呼べるから、Worker の中で画像の受け取りから配信までスッと書けるようになるよ。フォームで受け取った画像をそのまま保存したり、保存済みの画像をそのまま返したり、みんなが書きたかった流れが短く収まるの。
深く潜ってみよう
env.IMAGES.hosted 名前空間が用意しているのは、次の 6 つの操作だよ。
.upload(image, options)— 新しい画像をアカウントにアップロード.list(options)— ページネーション付きで画像を一覧.image(imageId).details()— 画像のメタデータを取得.image(imageId).bytes()— 元の画像バイトをストリーム.image(imageId).update(options)— メタデータやアクセス制御を更新.image(imageId).delete()— 画像を削除
たとえばリクエストボディの画像をアップロードして、そのメタデータを返すならこんな感じ。
const image = await env.IMAGES.hosted.upload(request.body, {
filename: "upload.jpg",
metadata: { source: "worker" },
});
return Response.json(image);
保存済み画像の元バイトを取り出して配信するのも、これだけだよ。
const bytes = await env.IMAGES.hosted.image("IMAGE_ID").bytes();
return new Response(bytes);
もっと詳しい使い方は Images binding のドキュメントにまとまっているよ。
まとめ
- Worker から
env.IMAGES.hostedで画像のアップロード・一覧・取得・更新・削除ができるようになったよ - API トークンや手組みの HTTP リクエストがいらなくなって、コードがすっきり
- upload / list / details / bytes / update / delete の 6 操作が用意されているの
Cloudflare Images を Workers と組み合わせて画像を扱いたい人に、うれしいアップデートだよ!