Remotion Lambda 如何完成从 IAM 配置到部署并渲染第一个视频的完整设置?
2026/9/16 0:02:54 网站建设 项目流程

Remotion Lambda 如何完成从 IAM 配置到部署并渲染第一个视频的完整设置?

【免费下载链接】remotion🎥 Make videos programmatically with React项目地址: https://gitcode.com/GitHub_Trending/re/remotion

目标很直接:在你的 AWS 账户里配置好 Remotion 需要的 IAM 权限,部署一个能渲染视频的 Lambda 函数,把本地 Remotion 项目发布成 S3 上的 Serve URL,然后用一条 CLI 命令渲染出你的第一个视频。整个过程全部在本地终端和 AWS 控制台完成,前提是本地有一个可以运行的 Remotion 项目(即包含registerRoot()入口文件的项目),以及一个已登录的 AWS 账户。

主路径使用 Remotion CLI;Node.JS API 的等价写法在对应步骤中作为可选分支给出。

安装@remotion/lambda

在项目根目录安装 Lambda 客户端包。使用 Remotion CLI 的方式:

npx remotion add @remotion/lambda

如果你用其他包管理器,对应命令为npm i --save-exact @remotion/lambda@<版本>pnpm i @remotion/lambda@<版本>bun i @remotion/lambda@<版本>yarn --exact add @remotion/lambda@<版本>,其中<版本>需替换为你项目使用的 Remotion 版本号,保持版本一致。

在 AWS 控制台配置 IAM

以下四步都在 AWS 控制台的 IAM 区域完成,顺序不能颠倒:先建策略,再建角色,然后建用户并配置用户的密钥和策略。

1. 创建角色策略remotion-lambda-policy

在本地终端执行下面命令,它会打印出 Lambda 角色所需的完整 IAM 策略 JSON:

npx remotion lambda policies role

在 AWS 控制台进入 IAM 的 Policies(策略)页面,点击 "Create policy",切换到 JSON 标签页,把上面命令的输出粘贴进去。下一步给策略命名,必须精确命名为remotion-lambda-policy,其余字段保持默认,Tags 页留空直接通过。这个 JSON 与你当前 Remotion 版本匹配,升级版本后需要重新生成。

2. 创建角色remotion-lambda-role

进入 IAM 的 Roles(角色)页面,点击 "Create role":

  • "Use cases" 选择 "Lambda",点 Next;
  • "Permissions policies" 中过滤remotion-lambda-policy,勾选它,点 Next;
  • 最后一步把角色精确命名为remotion-lambda-role,点 "Create role" 确认。

这两处名称是硬性要求,因为部署函数时默认会引用arn:aws:iam::<账户ID>:role/remotion-lambda-role这个角色,名称对不上就无法工作。角色策略的权限清单(S3 读写remotionlambda-*开头的桶、调用自身、写 CloudWatch 日志等)及其原因,可以在 Permissions 文档 的权限对照表中逐条查看。

3. 创建用户并生成 Access Key

进入 IAM 的 Users(用户)页面,点击 "Add users":

  • 输入任意用户名,例如remotion-user
  • 不要勾选"Enable console access",程序化调用用不到控制台访问;
  • 连续点击 "Next" 通过权限和评审步骤,点 "Create user"。

然后点进这个用户,在 "Security Credentials" 标签页的 "Access Keys" 区域点 "Create access key",选择 "Application running on an AWS compute service",勾选 "I understand the recommendations..." 提示,点击 "Next" 再点 "Create access key"。把生成的 Access key ID 和 Secret access key 填入项目根目录新建的.env文件:

REMOTION_AWS_ACCESS_KEY_ID=<Access key ID> REMOTION_AWS_SECRET_ACCESS_KEY=<Secret access key>

其中<Access key ID><Secret access key>替换为刚复制的两个值。CLI 会自动读取.env中的环境变量;如果走 Node.JS API,则需要自己读取.env(例如用dotenv)。关于凭据的其他提供方式和优先级,见 Authentication 文档。

4. 给用户添加内联策略

选中刚创建的用户,在 "Permissions policies" 面板的 "Add Permissions" 下拉中选择 "Add inline policy",切换到 JSON 标签页,在终端执行:

npx remotion lambda policies user

把输出粘贴进 AWS 的策略编辑器,点 "Review policy",给策略任意命名(例如remotion-user-policy),点 "Create policy" 确认。

校验权限配置

IAM 配完后,可以用 AWS 的策略模拟器校验用户权限:

npx remotion lambda policies validate

它会逐项检查用户权限并与 AWS Policy simulator 比对。注意:角色的策略无法用这种方式校验,只有用户侧策略可以验证(permissions.mdx 明确了这一点)。

部署渲染函数

npx remotion lambda functions deploy

该命令在你的 AWS 账户创建一个包含 Chromium、FFMPEG 二进制和 JavaScript 代码的 Lambda 函数,它接收一个 Serve URL 并据此发起渲染。文档中的示例输出如下(仅供参考,实际 Region、版本号等会不同):

Region = eu-central-1, Memory = 2048MB, Disk = 2048MB, Timeout = 120sec, Version = 2021-12-17, CloudWatch Enabled = true, CloudWatch Retention Period = 14 days Deployed as remotion-render-2021-12-17-2048mb-120sec

几个要点:

  • 命令是幂等的:同区域、同 Remotion 版本、同内存/磁盘/超时的函数已存在时,直接返回已有函数名,不会重复创建。你只需要每个 AWS 区域 + 每个 Remotion 版本部署一个函数。
  • 函数与 Remotion 版本绑定,将来升级 Remotion 后需要部署新函数,函数本身不包含你的项目代码。
  • 常用可选参数:--region(必须与后续项目部署在同一区域)、--memory(默认 2048MB,范围 512–10240MB,成本与内存成正比,建议保持尽量低)、--timeout(必须小于 900 秒,官方推荐 120 秒以内,视频渲染慢时建议提高并发而不是拉长超时)、--disk(Remotion <5.0.0 默认 2048MB,>=5.0.0 默认 10240MB)、--custom-role-arn(默认使用remotion-lambda-role)。完整参数见 functions deploy 参考。

可选分支:用 Node.JS API 部署(deployFunction(),参数与 CLI 对应),函数名通过返回值的functionName获取:

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

部署站点,拿到 Serve URL

把本地 Remotion 项目打包并上传到 S3,入口文件(调用registerRoot()的文件)作为参数传入:

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

src/index.ts换成你的入口文件路径。--site-name是可选的:传了会得到确定性 URL,以后用同名重新部署会覆盖旧版本;不传则每次部署生成唯一 URL。文档示例输出(仅供参考,桶名和路径以实际为准):

(1/3) [====================] Bundled video 3975ms (2/3) [====================] Created bucket 457ms (3/3) [====================] Uploaded to S3 25118ms Deployed to S3! Serve URL: https://remotionlambda-12345.s3.eu-central-1.amazonaws.com/sites/abcdef/index.html Site Name: abcdef

记下这个 Serve URL,下一步渲染要用。注意--site-name只能包含0-9a-zA-Z-!_.*'()这些字符。

可选分支:用 Node.JS API 走getOrCreateBucket()+bundle()(来自@remotion/bundler)+deploySiteFromBundle()三步完成同样的事,siteName参数同样决定 URL 是否可覆盖,见 Setup 文档。

可选:检查账户并发限额

渲染一次视频最多可能并发使用 200 个函数。检查你的账户配额:

npx remotion lambda quotas

默认是每区域 1000 次并发调用,但新账户可能低至 10。如果你的限额很低,需要在 AWS 侧申请提高;等待期间可以在渲染时传--concurrency=1(v4.0.517 起支持)在单个主函数上渲染,牺牲速度换取可用。

渲染第一个视频

把上一步的 Serve URL 和你项目中的 Composition ID 传入:

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

<serve-url>替换为sites create打印出的完整 URL(或站点名缩写,但缩写形式必须同时提供 composition ID,因为列表拉取只在完整 URL 下可用),<composition-id>替换为要渲染的合成 ID。命令会持续打印进度直到视频渲染完成。不指定输出位置时,视频保存在你的 S3 桶里;也可以在命令末尾加一个本地路径(例如out/video.mp4)作为第三个参数,渲染完成后会额外下载到本地。

如果需要传 input props、调整编码或并发,常用参数(详见 render CLI 参考):

# 传 props(Windows shell 不支持内联 JSON 字符串,改用文件) npx remotion lambda render --props='{"hi": "there"}' testbed my-comp # 指定并发数,替代 --frames-per-lambda;最大 200,最小 1 npx remotion lambda render --concurrency=10 <serve-url> <composition-id> # verbose 日志会在渲染时打印 CloudWatch 链接,方便查看函数日志 npx remotion lambda render --log=verbose <serve-url> <composition-id> # 输出不公开(默认 public,可通过 presignUrl() 生成签名链接) npx remotion lambda render --privacy=private <serve-url> <composition-id>

可选分支:用 Node.JS API 渲染时,先调用getFunctions({region, compatibleOnly: true})获取与当前版本匹配的函数名,再调用renderMediaOnLambda()触发渲染,最后循环轮询getRenderProgress({renderId, bucketName, functionName, region})直到progress.done为真(此时progress.outputFile指向输出文件),或progress.fatalErrorEncountered为真(此时输出progress.errors)。完整轮询示例见 Setup 文档 第 11 步。

验证与后续限制

到这里,可以按结果确认每个环节:

  • npx remotion lambda policies validate通过,说明用户侧 IAM 权限配置正确(角色侧无法校验,靠部署函数时的行为验证);
  • functions deploy打印出Deployed as remotion-render-...形式的函数名,说明函数部署成功;
  • sites create打印出Serve URL: https://...,说明项目已上传到 S3;
  • lambda render打印进度直到结束,随后到 S3 桶中能找到视频文件,即完成第一个视频的渲染。

几个文档明确给出的边界:

  • 函数绑定 Remotion 版本,升级 Remotion 后必须重新部署函数,详见 upgrading 文档;
  • 桶只能访问remotionlambda-前缀的桶;输出默认公开,需要私有输出时用--privacy=private
  • 上正式环境前,建议过一遍 Production checklist,并在 region-selection 中确认你要运行的 AWS 区域——项目与函数必须位于同一区域。

【免费下载链接】remotion🎥 Make videos programmatically with React项目地址: https://gitcode.com/GitHub_Trending/re/remotion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询