Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloudflare Containersの使用感と、ユースケースに思いを馳せる / Clou...

Avatar for Kanahiro Iguchi Kanahiro Iguchi
September 04, 2025
230

Cloudflare Containersの使用感と、ユースケースに思いを馳せる / Cloudflare Workers Tech Talks in Hokkaido #1

Avatar for Kanahiro Iguchi

Kanahiro Iguchi

September 04, 2025
Tweet

Transcript

  1. Who am I Kanahiro Iguchi MapLibre User Group Japan AWS

    Community Builder - Serverless 『位置エン本』 『位置ベロ本』 『実践QGIS』著者 Cloudflare Workers Tech Talks in Hokkaido #1 2025/09/04 2
  2. import { Container, getRandom } from '@cloudflare/containers'; export class MyContainer

    extends Container<Env> { defaultPort = 3000; sleepAfter = '2m'; envVars = { CHIITILER_DEBUG: 'true', CHIITILER_CACHE_METHOD: 'file', }; } export default { async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { return (await getRandom(env.MY_CONTAINER, 10)).fetch(request); }, }; Workersのコード上でコンテナの実行方法を定義 Workersはコンテナのインスタンスを参照して、Fetch APIでやりとり getRandom で複数のインスタンスからひとつを選ぶ Cloudflare Workers Tech Talks in Hokkaido #1 2025/09/04 18
  3. 常に手前にWorkerが存在することから、非同期でコンテナに処理を実行させたい時にはかな り簡単に記述出来るはず。 ユーザーからのリクエストをもとに、ちょっと重めの処理を非同期で実行させるとか export default { async fetch(request: Request, env:

    Env, ctx: ExecutionContext): Promise<Response> { const instance = await getRandom(env.MY_CONTAINER, 10) // 非同期で処理を実行する ctx.waitUntil(instance.fetch(someRequest)); return new Response('OK'); }, }; このとき、Workersの待ち時間も課金されるのかよくわかってない Cloudflare Workers Tech Talks in Hokkaido #1 2025/09/04 23
  4. Cron Triggerで発火させるのも便利そう export default { async scheduled(controller: ScheduledController, env: Env,

    ctx: ExecutionContext) { // こんな感じ? const instance = await getRandom(env.MY_CONTAINER, 10) await instance.fetch(someRequest); }, }; 週次レポートを作成してどこかに送信するとか Cloudflare Workers Tech Talks in Hokkaido #1 2025/09/04 24