Cloudflare Workers vs AWS Lambda 比較

V8 isolateでグローバルエッジ上に展開され、VMのコールドスタートがないコンピュート

VS
AWS Lambda

Firecracker microVM上で動作し、AWSエコシステムに深く統合されたサーバーレスコンピュート

17 分で読了Backend

クイック結論

明確な勝者はいません。短時間でレイテンシに敏感なグローバルなリクエスト処理(認証、ルーティング、パーソナライゼーション、APIゲートウェイ、Webhook)にはCloudflare Workersがコストと低いコールドスタートの摩擦の両面で優位です。長時間実行、大量メモリ、VPC内のAWSリソースに依存する処理ではLambdaが優勢です。上限が広く、プライベートネットワークアクセスはGAである一方、WorkersではベータのWorkers VPCにとどまります。最も一般的な本番パターンはハイブリッドで、Workersがエッジの薄いレイヤーを担い、Lambdaが背後で重い処理を引き受けます。

Cloudflare WorkersAWS Lambda
結論をすべて読む

スコア比較

グラフを読み込み中...

詳細スコア

詳細スコア: Cloudflare Workers AWS Lambda — カテゴリー別10点満点のスコア
カテゴリーCloudflare WorkersAWS Lambda
パフォーマンス
8/10
7/10
学習のしやすさ
7/10
6/10
エコシステム
6/10
9/10
コミュニティ
6/10
8/10
求人市場
6/10
8/10
将来性
9/10
8/10

長所と短所

Cloudflare Workers

長所

  • V8 isolateは、Cloudflareの表現によればNodeプロセスと比べて約100倍速く起動する
  • CPU時間ベースの料金体系で、I/O待機時間は無料
  • KV、D1、R2、Durable Objects、Hyperdriveといったデータレイヤーが同一プラットフォーム上にある
  • Wranglerによる軽量なローカル開発と、単一コマンドでのグローバルデプロイ
  • Freeプランは1日10万リクエスト、Paidプランは月額$5の基本料金に幅広い含有クォータ
  • ランタイムworkerdはApache-2.0ライセンスのオープンソース
  • Hyperdriveにより既存のPostgres/MySQL(AWS RDSを含む)へのコネクションプーリングが可能
  • node:fsなどのNode.js API互換性により、既存ライブラリの移植が容易になっている

短所

  • CPU時間はデフォルト30秒、HTTPリクエストでの上限は5分(Paid)— 長時間の同期処理には向かない
  • メモリは128MB固定で増量できない
  • Cron TriggerやQueue Consumerでも1回の呼び出しの上限は15分(Cronは1時間以上の間隔の場合のみ。それ未満は30秒) — 数時間かかるバッチ処理はネイティブ対応していない
  • V8 isolateモデルはネイティブのNode.jsアドオンをサポートしない
  • FreeプランはCPU時間10msに制限されており、本番トラフィックにはPaidプランが必須
  • AWSサービスのような直接トリガー/イベントソースマッピングの深さがなく、エコシステムはより狭い

最適な用途

認証、ルーティング、パーソナライゼーションなど、短時間かつレイテンシに敏感なグローバルリクエスト処理APIゲートウェイやWebhookの前段に立つ薄いレイヤーエッジでのA/Bテストとレスポンス操作CDNに隣接する軽量な動的ロジック地理的に分散したユーザーへの低レイテンシな応答

AWS Lambda

長所

  • 128MB〜10,240MBの柔軟なメモリ設定
  • 最大実行時間15分。Managed Instancesを使えばより長時間のワークロードへの移行も可能
  • VPCアクセスによりRDSやElastiCacheなどのプライベートネットワークリソースへ直接接続できる
  • AWSサービスとのネイティブ統合 — S3、DynamoDB、SQS、Kinesis、EventBridge、API Gateway、Cognitoが関数を直接トリガーできる
  • CloudWatchとX-Rayによる深い可観測性
  • 幅広いランタイムサポート — Node.js、Python、Java、Go、.NET、Ruby、カスタムランタイム
  • 無料枠:月100万リクエスト+40万GB秒

短所

  • Firecracker microVMのコールドスタートはV8 isolateより遅い(VPCではHyperplane ENIにより軽減されるが、ゼロにはならない)
  • GB秒ベースの課金 — メモリ×実行時間で課金される
  • VPCに接続した関数はデフォルトでインターネットから遮断される — NAT Gateway/VPCエンドポイントが必須
  • グローバルなPoPの広がりがなく、リージョン単位で動作し、自動的な最寄りエッジへのルーティングは行わない
  • SAM/CDKによるローカル開発はWranglerほど軽量ではない
  • 広いサービス統合面が複雑さとベンダーロックインのリスクを伴う

最適な用途

VPC内のRDS/ElastiCacheなど、プライベートなAWSリソースに依存するワークロード長時間のデータ処理、ETL、バッチ/キューコンシューマータスク高メモリを要する画像/動画処理やML推論AWSネイティブアーキテクチャ(S3、DynamoDB、Step Functions)でのイベント駆動オーケストレーションすでにAWSへの投資が深い企業チーム

コード比較

Cloudflare Workers
// Cloudflare Workers - Hyperdriveでpostgresに接続するAPI
import { Hono } from "hono";
import postgres from "postgres";

interface Env {
  HYPERDRIVE: Hyperdrive;
}

const app = new Hono<{ Bindings: Env }>();

app.get("/api/users/:id", async (c) => {
  // リクエストごとに新しいクライアントを開くのは高速 — Hyperdriveが
  // 接続プールをすでにプラットフォーム側で保持しているため。
  const sql = postgres(c.env.HYPERDRIVE.connectionString, {
    max: 5,
    fetch_types: false,
  });

  // Hyperdriveはリクエスト終了時に接続を自動的にクリーンアップするので、sql.end() を呼ぶ必要はない。
  const id = c.req.param("id");
  const rows = await sql`
    SELECT id, name, plan FROM users WHERE id = ${id} LIMIT 1
  `;

  if (rows.length === 0) {
    return c.json({ error: "not_found" }, 404);
  }

  return c.json(rows[0]);
});

export default app;

/*
wrangler.jsonc
{
  "name": "edge-api",
  "main": "src/index.ts",
  "compatibility_date": "2026-09-01",
  "hyperdrive": [
    { "binding": "HYPERDRIVE", "id": "<hyperdrive-config-id>" }
  ]
}
*/
AWS Lambda
// AWS Lambda (Node.js) - VPC内のRDS Postgresに接続するハンドラー
import { Client } from "pg";

let client; // コンテナの再利用時(ウォームスタート)に保持される

export const handler = async (event) => {
  const id = event.pathParameters?.id;

  if (!client) {
    client = new Client({
      host: process.env.DB_HOST, // RDSプライベートエンドポイント(VPC内)
      port: 5432,
      database: process.env.DB_NAME,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      ssl: { rejectUnauthorized: true },
    });
    await client.connect();
  }

  try {
    const result = await client.query(
      "SELECT id, name, plan FROM users WHERE id = $1 LIMIT 1",
      [id]
    );

    if (result.rows.length === 0) {
      return { statusCode: 404, body: JSON.stringify({ error: "not_found" }) };
    }

    return { statusCode: 200, body: JSON.stringify(result.rows[0]) };
  } catch (err) {
    console.error(err);
    return { statusCode: 500, body: JSON.stringify({ error: "internal" }) };
  }
};

/*
template.yaml (AWS SAM) — VPC + メモリ + タイムアウト
Resources:
  UsersFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs22.x
      MemorySize: 512
      Timeout: 15 # 秒(上限900 = 15分)
      VpcConfig:
        SecurityGroupIds: [sg-xxxxxxxx]
        SubnetIds: [subnet-xxxxxxxx, subnet-yyyyyyyy]
      Policies:
        - VPCAccessPolicy: {}
*/

結論

明確な勝者はいません。短時間でレイテンシに敏感なグローバルなリクエスト処理(認証、ルーティング、パーソナライゼーション、APIゲートウェイ、Webhook)にはCloudflare Workersがコストと低いコールドスタートの摩擦の両面で優位です。長時間実行、大量メモリ、VPC内のAWSリソースに依存する処理ではLambdaが優勢です。上限が広く、プライベートネットワークアクセスはGAである一方、WorkersではベータのWorkers VPCにとどまります。最も一般的な本番パターンはハイブリッドで、Workersがエッジの薄いレイヤーを担い、Lambdaが背後で重い処理を引き受けます。

無料相談を受ける
FAQ

よくある質問

ワークロードによって変わるため、都度計算する必要があります。Workers Paidプランは月額$5の基本料金に1,000万リクエストと3,000万CPUミリ秒が含まれ、超過分はリクエスト100万件あたり$0.30、CPU時間100万msあたり$0.02が加算されます。I/O待機時間は課金対象外です。一方Lambdaはリクエスト数とGB秒(メモリ×実行時間)ベースで課金され、無料枠は月100万リクエストと40万GB秒を含みます。短時間でI/O主体の処理ではWorkersのCPU時間モデルが安くなる傾向があり、長時間でCPU負荷の高い処理ではLambdaのGB秒モデルがワークロード次第で変動します。

関連ブログ記事

すべての記事を見る
すべての比較