Customizing Lambda output destination
By default a render artifact is saved into the same S3 bucket as where the site is located under the key renders/${renderId}/out.{extension} (for example: renders/hy0k2siao8/out.mp4)
You can modify the output destination by passing a different filename, writing it into a different bucket or even upload it to a different S3-compatible provider.
Customizing the output name
To customize the output filename, pass outName: "my-filename.mp4" to renderMediaOnLambda() or renderStillOnLambda().
On the CLI, use the --out-name flag.
The output name must match /^([0-9a-zA-Z-!_.*'()/]+)$/g.
Customizing the output bucket
To render into a different bucket, specify the outName option to renderMediaOnLambda() or renderStillOnLambda() and pass an object with the key and bucketName values:
tsxconst {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : 'us-east-1',functionName : 'remotion-render-bds9aab',composition : 'MyVideo',serveUrl : 'https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw',inputProps : {},codec : 'h264',imageFormat : 'jpeg',maxRetries : 1,privacy : 'public',outName : {key : 'my-output',bucketName : 'output-bucket',},});
If you like to use this feature:
- You must extend the default Remotion role policy (not user policy) to allow read and write access to that bucket.
- The bucket must be in the same region.
- When calling APIs such as
downloadMedia()orgetRenderProgress(), you must pass thebucketNamewhere the site resides in, not the bucket where the video gets saved. - The
keymust match/^([0-9a-zA-Z-!_.*'()/]+)$/g - The bucketName must match
/^(?=^.{3,63}$)(?!^(\d+\.)+\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])$)/.
This feature is not supported from the CLI.
Saving to another cloud
Available from v3.2.23
You can upload the file to another S3-compatible provider.
-
List of working providers (non-exhaustive):
-
✅ Supabase
-
✅ DigitalOcean Spaces
-
✅ Google Cloud Storage
Notes about Google Cloud Storage:- GCP does support allowing underscores for bucket names, but we validate against it. Do not use underscores in your bucket name.
- The bucket needs to have uniform access control and NOT fine-grained access.
- To get your
accessKeyIdandsecretAccessKey, create a service account that has Cloud Storage read + write permissions. Then run the following command:
shgcloud storage hmac create insert_google_service_account_email --project=insert_project_id
-
-
List of unsupported providers (non-exhaustive):
- Azure Blob Storage (not S3 compatible)
You must pass an outName as specified above and also provide an s3OutputProvider like in the example below.
tsxconst {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : 'us-east-1',functionName : 'remotion-render-bds9aab',composition : 'MyVideo',serveUrl : 'https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw',inputProps : {},codec : 'h264',imageFormat : 'jpeg',maxRetries : 1,privacy : 'no-acl',outName : {key : 'my-output',bucketName : 'output-bucket',s3OutputProvider : {endpoint : 'https://fra1.digitaloceanspaces.com',accessKeyId : '<DIGITAL_OCEAN_ACCESS_KEY_ID>',secretAccessKey : '<DIGITAL_OCEAN_SECRET_ACCESS_KEY>',},},});
In this example, the output file will be uploaded to DigitalOcean Spaces. The cloud provider will give you the endpoint and credentials.
If you want to use this feature, note the following:
- When calling
downloadMedia()orgetRenderProgress(), you must pass the AWSbucketNamewhere the site resides in, not the bucket name of the foreign cloud. - When calling
downloadMedia()or