IVYXON
記事一覧に戻る
ワークフロー上級🧪 Recipe

Cloudflare Workersで本番API、運用まで全部やってって頼んでいい?

Cloudflare WorkersでcronトリガーAPIとKVを組み合わせて本番運用する実例だよ。

2026年6月1日5分で読めます

一番雑な投げ方

Cloudflare Workersで、外部APIからデータ取得・KV永続化・Web公開・差分通知を全部やってくれるサーバーレスAPIを作りたいとき、こんな感じでポンと投げてみて。

GitHub Security AdvisoryとPython依存のCVE情報を毎日自動収集してKVに保存、Basic認証付きWebページで公開、新規があったらDiscord通知するCloudflare WorkersのAPIをTypeScriptで作って。

これだけでWorkersのプロジェクト一式、KVとの連携、cronトリガーのセットアップまで、いい感じに動くコードを出してくれるよ。

もうちょい具体的に投げるパターン

「毎日」とか「Webページ」とか、もうちょっと具体的にしたい場合は、以下みたいに伝えるんだ。

CronトリガーとKVの名前空間を最初から指定する

wrangler.tomlの設定も任せたいなら、こんな感じでリクエストしてみて。

毎日UTC 22:00に実行されるようにcronトリガーを設定して。KVの名前空間は`CVE_STATE`と`REPORT_DATA`でよろしく。
GitHub Security AdvisoryとPython依存のCVE情報を毎日自動収集してKVに保存、Basic認証付きWebページで公開、新規があったらDiscord通知するCloudflare WorkersのAPIをTypeScriptで作って。

必要なシークレットを教えてもらう

外部APIキーや認証情報が必要なことを伝えて、シークレットの設定まで含めて依頼するのもアリ。

GH_TOKEN、DISCORD_WEBHOOK_URL、BASIC_AUTH_USER、BASIC_AUTH_PASSをシークレットとして使う前提でCloudflare WorkersのAPIをTypeScriptで作って。
GitHub Security AdvisoryとPython依存のCVE情報を毎日自動収集してKVに保存、Basic認証付きWebページで公開、新規があったらDiscord通知する機能だよ。

サブリクエスト制限を意識してAPI設計を依頼する

Workersにはサブリクエスト制限 (50回) があるから、複数APIを叩く場合は最初から考慮するように伝えると、効率的な設計を提案してくれるよ。

Cloudflare Workersのサブリクエスト制限 (50回) を考慮して設計して。特にOSV.devへのAPIコールはquerybatchエンドポイントを使うと良いかもしれない。
GitHub Security AdvisoryとPython依存のCVE情報を毎日自動収集してKVに保存、Basic認証付きWebページで公開、新規があったらDiscord通知するCloudflare WorkersのAPIをTypeScriptで作って。

実践例 / 実録

実際にIVYXON編集部では、依存関係のCVE情報を毎日自動で追跡するパイプラインをCloudflare Workersで作って動かしてるんだ。

ざっくり構成はこんな感じだよ。

  1. cronトリガーで毎日朝7時 (JST) に起動。
  2. GitHub Security Advisory APIと、Pythonの依存ライブラリから抽出したOSV.dev APIを叩いて、最新のCVE情報を取ってくる。
  3. 取ってきた情報をKV (seen_cves) に保存してある過去のデータと比較。
  4. 新しく見つかったCVEがあったらDiscordに通知
  5. 最新のCVE情報を整形して、HTML (report_html) にレンダリングし、Basic認証付きのWebページとしてKVに保存
  6. 誰かがURL (https://cve.yourdomain.com/ とか) にアクセスしたら、KVからHTMLを読み出して表示。Basic認証もかかるようにしてる。
  7. デバッグや手動スキャン用に/__runエンドポイントも作ってあって、Basic認証を通ればcronトリガーと同じ処理をすぐに実行できるんだ。

「投げたらこうなった」の実況形式:

「Pythonの依存ライブラリ、全部バラバラにOSV.devに問い合わせたら、Workersのサブリクエスト制限(50回)にすぐ引っかかっちゃって困ったんだよ。」ってClaude Codeに相談したら、OSV.devのquerybatchエンドポイントを使って、複数の問い合わせを1つのリクエストにまとめてくれたんだ。これで50個以上の依存ライブラリがあっても、サブリクエストはたった1回で済むようになった。超助かるよね。

デプロイはnpx --yes wrangler@latest deployで一発。運用中のログ監視はnpx --yes wrangler@latest tailでリアルタイムで見れるし、シークレットの更新もwrangler secret put NAMEでコマンドラインからサクッとできるから、かなり楽に本番運用ができてるよ。

つまずきポイント

Cloudflare Workersで外部APIをたくさん叩くときの一番のハマりどころは、やっぱりサブリクエストの制限 (50回) だね。これを忘れて設計すると、すぐにエラーになっちゃう。

対処法:

  • 今回のように、複数の問い合わせをまとめて一回で済ませるバッチAPIエンドポイントがないか、外部APIのドキュメントをよく確認するのが大事。
  • もしバッチエンドポイントがない場合は、必要なデータを最小限に絞り込んだり、情報を取得する頻度を調整したりして、工夫する必要があるよ。
  • Workersのサービスバインディングで別のWorkersを呼び出す場合もサブリクエストとしてカウントされるから、設計時には注意が必要だね。

この制限をうまく回避できれば、WorkersはめちゃくちゃパワフルなサーバーレスAPIの実行環境になるから、ぜひ使いこなしてみてほしいな。