自定义 Lambda 输出目的地
默认情况下,渲染文件将保存在与站点位于同一 S3 存储桶中的位置,键为 renders/${renderId}/out.{extension}
(例如:renders/hy0k2siao8/out.mp4
)
您可以通过传递不同的文件名、将其写入不同的存储桶甚至上传到不同的兼容 S3 提供商来修改输出目的地。
自定义输出名称
要自定义输出文件名,请将 outName: "my-filename.mp4"
传递给 renderMediaOnLambda()
或 renderStillOnLambda()
。
在 CLI 中,使用 --out-name
标志。
输出名称必须匹配 /^([0-9a-zA-Z-!_.*'()/]+)$/g
。
自定义输出存储桶
要渲染到不同的存储桶,请将 outName
选项指定为 renderMediaOnLambda()
或 renderStillOnLambda()
并传递具有 key
和 bucketName
值的对象:
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",},});
如果您想使用此功能:
- 您必须扩展默认 Remotion 策略以允许对该存储桶进行读取和写入访问。
- 存储桶必须位于相同的区域。
- 在调用诸如
downloadMedia()
或getRenderProgress()
等 API 时,必须传递站点所在的bucketName
,而不是视频保存的存储桶。 key
必须匹配/^([0-9a-zA-Z-!_.*'()/]+)$/g
。bucketName
必须匹配/^(?=^.{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])$)/
。
此功能不受 CLI 支持。
保存到另一个云
从 v3.2.23 版本开始可用
您可以将文件上传到另一个兼容 S3 提供商。
- 支持的提供商列表(非详尽):Cloudflare,DigitalOcean Spaces
- 不支持的提供商列表(非详尽):Azure Blob Storage(不兼容 S3)
您必须传递一个 outName
如上所述,并且还要像下面的示例中提供一个 s3OutputProvider
。
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>",},},});
在这个示例中,输出文件将被上传到 DigitalOcean Spaces。云提供商将提供给您端点和凭据。
如果您想使用此功能,请注意以下事项:
- 在调用
downloadMedia()
或getRenderProgress()
时,您必须传递站点所在的 AWSbucketName
,而不是外部云的存储桶名称。 - 在调用
downloadMedia()
或getRenderProgress()
时,您必须再次提供s3OutputProvider
选项与相同的凭据。 - 默认情况下,Remotion 假定您使用 ACL,这在其他云上不太常见。如果您不想使用 ACL,则需要设置
privacy: "no-acl"
。
此功能不受 CLI 支持。
保存到另一个 AWS 区域v4.0.112
如果您计划将文件保存到 AWS S3 上的另一个存储桶,并且希望使用不同的凭据,您可以在 s3OutputProvider
对象中指定 region
。
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"}}
请注意,如果您希望使用与已经授予 Lambda 的相同角色,则无需提供自定义的 s3OutputProvider
。
您可能需要扩展您的 角色策略 以允许向此存储桶写入。
参见
- 当使用
downloadBehavior
下载文件时自定义文件名:对于renderMediaOnLambda()
和renderStillOnLambda()