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-13. 設定 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 費用警報,在費用超出預期時收到通知:
- 前往 AWS Billing Dashboard
- 選擇「Budgets」→「Create budget」
- 設定月度費用上限(例如 $10 USD)
- 設定通知 Email
也可以透過 AWS Cost Explorer 查看詳細的費用分析,了解費用的具體來源。
費用與本地渲染的比較
| 渲染方式 | 渲染一支 10 分鐘影片的費用 | 渲染時間 |
|---|---|---|
| Remotion Lambda(最佳化) | ~$0.15-0.30 USD | 1-2 分鐘 |
| Remotion Lambda(預設設定) | ~$0.20-0.40 USD | 1-3 分鐘 |
| 本地渲染(個人電腦) | ~$0 | 15-60 分鐘 |
| 雲端 VM 渲染(自行管理) | 視機型而定 | 10-30 分鐘 |