Remotion LabRemotion Lab
LambdaLambda 磁碟空間

Lambda 磁碟空間

說明如何設定 Remotion Lambda 的暫存儲存空間(ephemeral storage),包含磁碟大小設定、何時需要增加,以及儲存限制說明。

概覽

Remotion Lambda 函式的磁碟大小(暫時儲存空間)可設定在 512 MB 到 10,240 MB(10 GB) 之間。影片渲染時需要足夠的空間來暫存各個渲染區塊,以及最終的合併輸出檔案。

磁碟大小與最長影片時間的對應關係

以下為不同磁碟大小在 1080p 解析度下,大約可支援的最長影片時間(實際結果依影片內容與音訊而有所不同):

磁碟大小1080p 大約最長影片時間
512 MB約 8 分鐘
1024 MB約 16 分鐘
2048 MB約 32 分鐘
4096 MB約 1 小時 4 分鐘
8192 MB約 2 小時 8 分鐘
10240 MB約 2 小時 40 分鐘

這些數值為估算值,不同場景的結果可能有所差異。影片輸出大小取決於影片內容與音訊品質,建議實際測試以找到最適合的設定。

設定磁碟大小

透過 CLI 設定

部署函式時使用 --disk 旗標:

npx remotion lambda functions deploy --disk=2048

部署到最大磁碟空間:

npx remotion lambda functions deploy --disk=10240

透過 Node.js API 設定

使用 deployFunction()diskSizeInMb 選項:

import { deployFunction } from "@remotion/lambda";
 
const { functionName } = await deployFunction({
  region: "us-east-1",
  timeoutInSeconds: 120,
  memorySizeInMb: 2048,
  diskSizeInMb: 4096, // 設定磁碟大小為 4 GB
  createCloudWatchLogGroup: true,
});
 
console.log("已部署函式:", functionName);

磁碟空間的使用方式

Lambda 函式在渲染影片時,磁碟空間的使用分兩個階段:

  1. 渲染階段:多個 Lambda 函式各自渲染影片的一個區塊,並將結果暫存在磁碟
  2. 合併階段:一個 Lambda 函式負責將所有區塊合併成完整的輸出影片

因此,磁碟空間必須同時容納:

  • 所有已渲染的影片區塊
  • 最終合併的輸出影片

這意味著實際所需的空間會超過最終輸出影片的大小。

定價影響

使用更多磁碟空間會略微增加成本,但幅度極小。將磁碟大小設定為最大值 10,240 MB 所增加的費用不到 1%

詳細定價請參閱 AWS Lambda 定價頁面的「Lambda 暫時性儲存定價」(Lambda Ephemeral Storage Pricing)章節。

estimatePrice() API 也會將磁碟大小納入費用估算。

選擇適當的磁碟大小

如果你不確定需要多少磁碟空間,建議考慮以下策略:

  • 短影片(< 10 分鐘 1080p):預設的 512 MB 通常已足夠
  • 中長影片:根據上方表格選擇適當大小
  • 最安全的選擇:直接設定為 10,240 MB,費用影響微乎其微
// 保守設定:使用最大磁碟空間,成本增加不到 1%
const { functionName } = await deployFunction({
  region: "us-east-1",
  timeoutInSeconds: 120,
  memorySizeInMb: 2048,
  diskSizeInMb: 10240, // 最大磁碟大小
  createCloudWatchLogGroup: true,
});

常見問題

渲染時出現磁碟空間不足錯誤

如果你看到類似以下的錯誤:

Error: ENOSPC: no space left on device

這表示磁碟空間不足,請增加 diskSizeInMb 的值並重新部署函式。

需要重新部署函式嗎?

是的,修改磁碟大小需要部署新的函式。你可以用不同的磁碟大小部署多個函式,並根據渲染需求選擇適當的函式。

相關資源