Remotion LabRemotion Lab
LambdaLambda 輕量客戶端

Lambda 輕量客戶端

使用 @remotion/lambda/client 匯入精簡的 Lambda 方法,減少打包體積並避免依賴衝突

Lambda 輕量客戶端

@remotion/lambda/client 是一個輕量化的子路徑匯出,僅包含呼叫 Lambda API 所需的函式,不包含任何渲染器依賴。這讓你可以在 Next.js Serverless 函式、其他 AWS Lambda 函式或任何需要最小化打包體積的環境中安全使用。

為什麼需要輕量客戶端?

完整的 @remotion/lambda 套件包含了 Remotion 渲染器的所有依賴。當你在 Next.js API 路由或另一個 Lambda 函式中呼叫 Remotion Lambda API 時,你並不需要渲染器——你只需要能夠觸發渲染、查詢進度或管理站台的函式。

使用輕量客戶端的好處:

  • 更小的打包體積:排除了不必要的渲染器依賴
  • 更快的冷啟動時間:打包體積越小,Lambda 函式初始化越快
  • 避免依賴衝突:避免在 Next.js 或其他框架中因原生模組造成的打包錯誤
  • 獨立套件:也可直接安裝 @remotion/lambda-client NPM 套件

可用函式與型別

以下所有方法與型別均可從 @remotion/lambda/client 匯入:

import {
  renderMediaOnLambda,
  renderStillOnLambda,
  getRenderProgress,
  getCompositionsOnLambda,
  getFunctions,
  AwsRegion,
  RenderProgress,
  validateWebhookSignature,
  WebhookPayload,
  presignUrl,
  PresignUrlInput,
  getSites,
  speculateFunctionName,
  CustomCredentials,       // 從 v4.0.60 起可用
  getAwsClient,            // 從 v4.0.82 起可用
  deleteRender,            // 從 v4.0.84 起可用
  DeleteRenderInput,       // 從 v4.0.84 起可用
} from '@remotion/lambda/client';

安裝獨立套件

如果你的專案只需要這些函式,可以直接安裝更輕量的套件:

npm install @remotion/lambda-client

@remotion/lambda/client 會重新匯出 @remotion/lambda-client 的所有內容,兩者功能完全相同。

使用情境

Next.js API 路由

// pages/api/render.ts 或 app/api/render/route.ts
import { renderMediaOnLambda, getRenderProgress } from '@remotion/lambda/client';
 
export async function POST(request: Request) {
  const { compositionId, inputProps } = await request.json();
 
  const { renderId, bucketName } = await renderMediaOnLambda({
    region: 'us-east-1',
    functionName: process.env.REMOTION_FUNCTION_NAME!,
    serveUrl: process.env.REMOTION_SERVE_URL!,
    composition: compositionId,
    inputProps,
    codec: 'h264',
  });
 
  return Response.json({ renderId, bucketName });
}

查詢渲染進度

import { getRenderProgress } from '@remotion/lambda/client';
 
const progress = await getRenderProgress({
  renderId: 'hy0k2siao8',
  bucketName: 'remotionlambda-example',
  functionName: 'remotion-render-bds9aab',
  region: 'us-east-1',
});
 
console.log(`進度:${progress.overallProgress * 100}%`);

注意事項

  • 不支援 Edge Runtime:在 Vercel Edge Functions 或 Cloudflare Workers 等 Edge 環境中,目前不支援使用此輕量客戶端
  • 不建議在瀏覽器中直接呼叫:這些函式需要 AWS 憑證,若在瀏覽器端呼叫會洩漏你的存取金鑰
  • getServiceClient() 已移除:該函式在 v4.0.60 至 v4.0.81 之間被誤納入,請改用 getAwsClient()

與完整套件的差異

功能@remotion/lambda@remotion/lambda/client
觸發渲染
查詢進度
管理站台
部署函式
本地渲染支援
打包體積較大較小

參閱