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-clientNPM 套件
可用函式與型別
以下所有方法與型別均可從 @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 |
|---|---|---|
| 觸發渲染 | 是 | 是 |
| 查詢進度 | 是 | 是 |
| 管理站台 | 是 | 是 |
| 部署函式 | 是 | 否 |
| 本地渲染支援 | 是 | 否 |
| 打包體積 | 較大 | 較小 |