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:
tsx
const {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",},});
tsx
const {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 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 thebucketName
where the site resides in, not the bucket where the video gets saved. - The
key
must 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 supported providers (non-exhaustive): Cloudflare, DigitalOcean Spaces
- 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.
tsx
const {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>",},},});
tsx
const {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 AWSbucketName
where the site resides in, not the bucket name of the foreign cloud. - When calling
downloadMedia()
orgetRenderProgress()
, you must provide thes3OutputProvider
option with the same credentials again. - By default, Remotion assumes you use ACL which is less common on other clouds. You need to set
privacy: "no-acl"
if you don't want to use ACL.
This feature is not supported from the CLI.
Saving to another AWS regionv4.0.112
If you plan on saving to another bucket on AWS S3 and would like to use different credentials, you can specify the region
in the s3OutputProvider
object.
json
{"s3OutputProvider": {"endpoint": "https://s3.us-west-1.amazonaws.com","accessKeyId": "<DIGITAL_OCEAN_ACCESS_KEY_ID>","secretAccessKey": "<DIGITAL_OCEAN_SECRET_ACCESS_KEY>","region": "us-west-1"}}
json
{"s3OutputProvider": {"endpoint": "https://s3.us-west-1.amazonaws.com","accessKeyId": "<DIGITAL_OCEAN_ACCESS_KEY_ID>","secretAccessKey": "<DIGITAL_OCEAN_SECRET_ACCESS_KEY>","region": "us-west-1"}}
Note that it is not necessary to provide a custom s3OutputProvider
if you want to use the same role as you already gave to the Lambda.
You may need to extend your role policy to allow writing to this bucket.
See also
- Customizing the filename when a file is downloaded using
downloadBehavior
: ForrenderMediaOnLambda()
andrenderStillOnLambda()