Remotion LabRemotion Lab
LambdaRemotion Lambda 設定指南

Remotion Lambda 設定指南

逐步說明如何安裝並設定 Remotion Lambda,包含 AWS 角色、使用者、存取金鑰、部署函式與渲染影片的完整流程。

概覽

Remotion Lambda 讓你能夠在 AWS Lambda 上大規模平行渲染影片。本指南將引導你完成從安裝套件到渲染第一支影片的完整設定流程。

1. 安裝 @remotion/lambda

在你的 Remotion 專案中安裝 Lambda 套件:

npm install @remotion/lambda
# 或
yarn add @remotion/lambda

2. 建立角色政策

在 AWS IAM 中建立一個名為 remotion-lambda-policy 的政策。你可以透過以下指令取得適合你版本的政策 JSON:

npx remotion lambda policies role

將輸出的 JSON 貼入 AWS IAM 政策編輯器中儲存。

3. 建立角色

在 AWS IAM 建立一個名為 remotion-lambda-role 的角色,並將信任關係設定為允許 Lambda 服務擔任此角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

接著將步驟 2 建立的政策附加到此角色。

4. 建立使用者

在 AWS IAM 建立一個新的 IAM 使用者(建議命名為 remotion-user),用於從本機或伺服器端呼叫 Lambda API。

5. 建立存取金鑰

前往該使用者的「安全憑證」分頁,在「存取金鑰」區塊點擊「建立存取金鑰」。

選擇「在 AWS 運算服務上執行的應用程式」,確認後建立金鑰,並將金鑰資訊加入專案根目錄的 .env 檔案:

# .env
REMOTION_AWS_ACCESS_KEY_ID=<Access key ID>
REMOTION_AWS_SECRET_ACCESS_KEY=<Secret access key>

6. 為使用者新增權限

前往 AWS IAM 使用者頁面,點擊「新增內嵌政策」,切換到「JSON」分頁,貼入以下指令的輸出結果:

npx remotion lambda policies user

為政策命名(例如 remotion-user-policy)並確認建立。

7. 驗證權限設定(選用)

執行以下指令驗證所有使用者權限是否正確設定:

npx remotion lambda policies validate

8. 部署函式

透過 CLI 部署可渲染影片的 Lambda 函式:

npx remotion lambda functions deploy

或使用 Node.js API:

import { deployFunction } from "@remotion/lambda";
 
const { functionName } = await deployFunction({
  region: "us-east-1",
  timeoutInSeconds: 120,
  memorySizeInMb: 2048,
  createCloudWatchLogGroup: true,
});

函式名稱將在後續渲染時使用。每個函式與 Remotion 版本綁定,升級 Remotion 後需重新部署函式。

9. 部署站台

將你的 Remotion 專案部署到 S3:

npx remotion lambda sites create src/index.ts --site-name=my-video

或使用 Node.js API:

import path from "path";
import { deploySite, getOrCreateBucket } from "@remotion/lambda";
 
const { bucketName } = await getOrCreateBucket({ region: "us-east-1" });
 
const { serveUrl } = await deploySite({
  bucketName,
  entryPoint: path.resolve(process.cwd(), "src/index.ts"),
  region: "us-east-1",
  siteName: "my-video",
});

部署完成後,你會收到一個 Serve URL 指向已部署的專案。

10. 確認 AWS 並行限制

確認你的帳戶並行限制:

npx remotion lambda quotas

新帳戶預設可能只有 10 個並行呼叫,而每次渲染最多可使用 200 個 Lambda 函式,建議提早申請增加配額。

11. 渲染影片

使用 CLI 渲染:

npx remotion lambda render <serve-url> <composition-id>

或使用 Node.js API:

import {
  getFunctions,
  renderMediaOnLambda,
  getRenderProgress,
} from "@remotion/lambda/client";
 
const functions = await getFunctions({
  region: "us-east-1",
  compatibleOnly: true,
});
 
const { renderId, bucketName } = await renderMediaOnLambda({
  region: "us-east-1",
  functionName: functions[0].functionName,
  serveUrl: url,
  composition: "HelloWorld",
  inputProps: {},
  codec: "h264",
  imageFormat: "jpeg",
  maxRetries: 1,
  framesPerLambda: 20,
  privacy: "public",
});

後續步驟