shiichan

トークン管理いらず!Workers の Stream バインディングがやってきたよ

やっほー、しぃちゃんだよ!今日は動画をあつかうみんなにうれしいニュースがあるよ。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog から、Workers 用の新しい Stream バインディングが登場したの!これを使うと、認証付きの API 呼び出しをしなくても、Worker の中から Stream の動画ライブラリを直接さわれるんだ。動画のアップロード、ダイレクトアップロードの発行、動画の管理、署名付き URL の生成まで、まるっとできちゃうよ。

今までどうだったの?

これまで Workers から Stream を操作するには、API トークンを用意して認証付きの REST API を叩く必要があったの。トークンの管理や HTTP リクエストの組み立てが地味に手間だったんだよね。バインディングなら env.STREAM からそのまま呼べるから、その面倒がまるっと消えるんだ。

これで何が変わるの?

うれしいポイントはこんな感じ!

  • URL からの動画アップロードや、エンドユーザー向けのダイレクトアップロードリンクの発行
  • 署名鍵を自分で管理しなくても署名付き再生トークンを生成
  • 動画のメタデータ・字幕・ダウンロード・ウォーターマークの管理
  • 動画パイプラインを Worker の中だけで完結

生成 AI や推論のワークロードとも組み合わせやすくなって、Stream と Workers がぐっと近づいた感じだね。

深く潜ってみよう

まずは Wrangler の設定にバインディングを足すよ。

{
  "stream": {
    "binding": "STREAM"
  }
}

あとは Worker から呼ぶだけ。たとえば URL を渡してアップロードするならこう。

const streamVideo = await env.STREAM.upload(videoUrl);

原文では google/veo-3.1 で生成した動画の URL をそのまま upload() に渡す例も載っていて、AI 生成から Stream 投入までがひとつの Worker でつながるのがかっこいいの。

署名付きトークンは env.STREAM.video(video_id).generateToken() で作れるよ。署名鍵を触らなくていいのがうれしいね。動画のプロパティは .details() で取得、.update() で更新できるんだ。

設定手順とフルの API リファレンスは Bind to Workers API にまとまっているから、詳しくはそっちを見てね。Stream のドキュメントも合わせてどうぞ。

まとめ

  • Workers から Stream を直接さわれる Stream バインディングが登場したよ
  • API トークンや認証付き HTTP リクエストなしで、アップロード・管理・署名付き URL 生成ができる
  • env.STREAM.upload()video().generateToken()details()update() などが使える
  • 署名鍵の管理がいらないのが地味にありがたい

動画パイプラインを Workers で組みたい人や、生成 AI の出力を Stream に流したい人にぴったりの発表だよ!