Skip to main content

Setup

1. Install @remotion/lambda

Check the newest version number in the #lambda Discord channel

npm i @remotion/lambda@<version-number>
npm i @remotion/lambda@<version-number>

Also update all the other Remotion packages to have the same version: remotion, @remotion/cli, @remotion/bundler

tip

Make sure no package version number has a ^ character in front of it as it will install a different version.

Your package.json should look like the following:

json
"@remotion/bundler": "3.0.0-lambda.[versionhash]",
"@remotion/cli": "3.0.0-lambda.[versionhash]",
"@remotion/lambda": "3.0.0-lambda.[versionhash]",
// ...
"remotion": "3.0.0-lambda.[versionhash]",
json
"@remotion/bundler": "3.0.0-lambda.[versionhash]",
"@remotion/cli": "3.0.0-lambda.[versionhash]",
"@remotion/lambda": "3.0.0-lambda.[versionhash]",
// ...
"remotion": "3.0.0-lambda.[versionhash]",
tip

You can install @remotion/lambda in any project, not just a Remotion one, but remember to install react and react-dom peer dependencies

2. Create role policy

  • Go to AWS account IAM Policies section
  • Click on "Create policy"
  • Click on JSON
  • In your project, type npx remotion lambda policies role in the command line and copy it into the "JSON" field on AWS.
  • Click next. On the tags page, you don't need to fill in anything. Click next again.
  • Give the policy exactly the name remotion-lambda-policy. The other fields can be left as they are.

3. Create a role

  • Go to AWS account IAM Roles section
  • Under "Common use cases", select "Lambda". Click next.
  • Under "Attach permissions policies", filter for remotion-lambda-policy and click the checkbox to assign this policy.
  • Click next. No need to add tags. Click next again.
  • Tags: Skip it
  • In the final screen, name the role remotion-lambda-role exactly. You can leave the other fields as is.
  • Click "Create role" to confirm.

4. Create a user

  • Go to AWS account IAM Users section
  • Click Add users
  • Enter any username, such as remotion-user.
  • Check the "Access key - Programmatic access" option.
  • Don't check the Management console access option. You don't need it.
  • Click "Next: Permissions", then "Next: Tags", then "Next: Review" without changing any settings.
  • Click "Create user", and ignore the warning that might appear.
  • Reveal the Secret access key.
  • Add a .env file to your project, and insert the following contents, using the credentials you just copied:
.env
txt
REMOTION_AWS_ACCESS_KEY_ID=<Access key ID> REMOTION_AWS_SECRET_ACCESS_KEY=<Secret access key>
.env
txt
REMOTION_AWS_ACCESS_KEY_ID=<Access key ID> REMOTION_AWS_SECRET_ACCESS_KEY=<Secret access key>

5. Add permissions to your user

  • Go to AWS account IAM Users section
  • Select the user you just created.
  • Click "Add inline policy" on the right of the screen.
  • Click the tab "JSON".
  • Enter in your terminal: npx remotion lambda policies user and copy into the AWS text field what gets printed.
  • Give the policy a name. For example remotion-user-policy, but it can be anything..
  • Click "Create policy" to confirm.

6. Optional: Validate the permission setup

  • Run npx remotion lambda policies validate

For the following steps, you may execute them on the CLI, or programmatically using the Node.JS APIs.

7. Deploy a function

Deploy a function by executing the following command:

bash
npx remotion lambda functions deploy
bash
npx remotion lambda functions deploy

8. Deploy a website

Run the following command to deploy your Remotion project to an S3 bucket. Pass as the last argument the entry file of the project - this is the file where registerRoot() is called.

bash
npx remotion lambda sites create src/index.tsx
bash
npx remotion lambda sites create src/index.tsx

A URL will be printed pointing to the deployed project.

9. Render a video

Take the URL you received from the previous step and run the following command. Also pass in the ID of the composition you'd like to render.

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

Progress will be printed until the video finished rendering. Congrats! You rendered your first video using Remotion Lambda 🚀

Next steps