Remotion LabRemotion Lab
LambdaLambda 費用

Lambda 費用

說明 Remotion Lambda 的費用組成、定價模型、費用估算方式,以及如何透過設定調整來降低渲染成本。

Lambda 費用

Remotion Lambda 採用隨用隨付(pay-as-you-go)模式,無固定費用,只依實際渲染使用量計費。

費用組成

使用 Remotion Lambda 的費用主要來自以下幾個部分:

費用類型說明
Lambda 執行費用依執行時間 × 記憶體計費(GB-秒)
Lambda 請求費用每次 Lambda 呼叫的固定費用
S3 儲存費用儲存渲染結果的月費
S3 請求費用讀寫 S3 的 API 請求費用
資料傳出費用從 S3 下載影片的流量費用
暫存儲存費用超過 512 MB 磁碟空間的額外費用

Lambda 執行費用計算

Lambda 費用的主要部分是執行費用,計算公式如下:

費用 = 執行時間(秒)× 記憶體(GB)× 每 GB-秒費率

Remotion Lambda 的渲染是高度並行的,同時運行多個 Lambda 函式,因此總執行時間等於「各 Lambda 執行時間之和」,而非掛鐘時間(wall-clock time)。

費率參考(以 us-east-1 為例):

  • 每 GB-秒:$0.0000133334 USD
  • 每次請求:$0.0000002 USD
  • 每月前 100 萬次請求及 40 萬 GB-秒:免費(AWS 免費方案)

費用估算範例

範例 1:短影片(30 秒,1080p)

假設設定如下:

  • 影片長度:30 秒 × 30 fps = 900 影格
  • framesPerLambda: 20
  • 並行 Lambda 數:900 / 20 = 45 個
  • 記憶體:2048 MB(2 GB)
  • 每個 Lambda 執行時間:約 25 秒

計算:

Lambda 費用 = 45 × 25 秒 × 2 GB × $0.0000133334
           ≈ $0.030 USD(約 0.9 台幣)

範例 2:長影片(10 分鐘,1080p)

假設設定如下:

  • 影片長度:10 分鐘 × 60 × 30 fps = 18,000 影格
  • framesPerLambda: 120(自動選擇)
  • 並行 Lambda 數:18,000 / 120 = 150 個
  • 記憶體:2048 MB(2 GB)
  • 每個 Lambda 執行時間:約 60 秒

計算:

Lambda 費用 = 150 × 60 秒 × 2 GB × $0.0000133334
           ≈ $0.24 USD(約 7.5 台幣)

使用官方費用估算工具

Remotion 提供了費用估算工具,可在部署前預估費用:

npx remotion lambda estimate-price \
  --region=us-east-1 \
  --duration-in-milliseconds=60000 \
  --memory-size=2048 \
  --frames-per-lambda=20 \
  --composition-duration-in-frames=1800

或使用 Node.js API:

import { estimatePrice } from "@remotion/lambda";
 
const { estimatedCost, estimatedDisplayCost } = estimatePrice({
  region: "us-east-1",
  memorySizeInMb: 2048,
  diskSizeInMb: 2048,
  lambdasInvoked: 45,
  durationInMilliseconds: 25000,
});
 
console.log(`估算費用:${estimatedDisplayCost}`);
// 輸出:估算費用:$0.03

費用最佳化策略

1. 降低記憶體配置

Lambda 費用與記憶體大小成正比,降低記憶體是最直接的節費方式:

# 嘗試不同的記憶體配置,找到最低可靠設定
npx remotion lambda functions deploy --memory=1536
npx remotion lambda functions deploy --memory=1024

注意:記憶體過低可能導致渲染失敗或速度下降(因為 CPU 配額也與記憶體掛鉤)。建議以 256 MB 為單位逐步降低,並測試渲染穩定性。

2. 選擇較低費率的區域

不同 AWS 區域的費率不同,us-east-1 是費率最低的區域之一:

npx remotion lambda functions deploy --region=us-east-1

3. 設定 S3 生命週期規則

自動刪除不再需要的渲染結果,避免長期儲存費用累積:

import { getOrCreateBucket } from "@remotion/lambda";
import { S3Client, PutBucketLifecycleConfigurationCommand } from "@aws-sdk/client-s3";
 
// 設定 30 天後自動刪除渲染結果
const s3 = new S3Client({ region: "us-east-1" });
await s3.send(new PutBucketLifecycleConfigurationCommand({
  Bucket: "remotionlambda-xxxxx",
  LifecycleConfiguration: {
    Rules: [
      {
        ID: "delete-old-renders",
        Status: "Enabled",
        Filter: { Prefix: "renders/" },
        Expiration: { Days: 30 },
      },
    ],
  },
}));

4. 合理設定 framesPerLambda

較高的 framesPerLambda 值可減少 Lambda 呼叫次數(降低請求費用),但會降低並行度(增加渲染時間):

// 對於批次渲染(不追求速度),可以增加 framesPerLambda 降低費用
await renderMediaOnLambda({
  region: "us-east-1",
  functionName: "remotion-render-xxxxx",
  serveUrl: "https://...",
  composition: "MyVideo",
  inputProps: {},
  codec: "h264",
  framesPerLambda: 60,  // 較高的值,降低並行度但也降低費用
});

5. 防止未授權的渲染

惡意或意外的大量渲染請求會產生意外費用,建議實作速率限制:

import Bottleneck from "bottleneck";
 
// 使用 Bottleneck 限制並行渲染數量
const limiter = new Bottleneck({
  maxConcurrent: 5,  // 最多同時 5 個渲染
  minTime: 1000,     // 每秒最多 1 個渲染
});
 
const renderWithLimit = limiter.wrap(async (props) => {
  return renderMediaOnLambda(props);
});

AWS 免費方案

AWS Lambda 提供每月免費額度:

  • 前 100 萬次請求:免費
  • 前 40 萬 GB-秒:免費

對於低流量的個人專案或開發測試,通常可以維持在免費方案範圍內。

費用監控

設定 AWS CloudWatch 費用警報,在費用超出預期時收到通知:

  1. 前往 AWS Billing Dashboard
  2. 選擇「Budgets」→「Create budget」
  3. 設定月度費用上限(例如 $10 USD)
  4. 設定通知 Email

也可以透過 AWS Cost Explorer 查看詳細的費用分析,了解費用的具體來源。

費用與本地渲染的比較

渲染方式渲染一支 10 分鐘影片的費用渲染時間
Remotion Lambda(最佳化)~$0.15-0.30 USD1-2 分鐘
Remotion Lambda(預設設定)~$0.20-0.40 USD1-3 分鐘
本地渲染(個人電腦)~$015-60 分鐘
雲端 VM 渲染(自行管理)視機型而定10-30 分鐘

相關資源