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 函式在渲染影片時,磁碟空間的使用分兩個階段:
- 渲染階段:多個 Lambda 函式各自渲染影片的一個區塊,並將結果暫存在磁碟
- 合併階段:一個 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 的值並重新部署函式。
需要重新部署函式嗎?
是的,修改磁碟大小需要部署新的函式。你可以用不同的磁碟大小部署多個函式,並根據渲染需求選擇適當的函式。