Skip to main content

自定义 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() 并传递具有 keybucketName 值的对象:

tsx
const { bucketName, renderId } = await renderMediaOnLambda({
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 } = await renderMediaOnLambda({
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 } = await renderMediaOnLambda({
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 } = await renderMediaOnLambda({
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。云提供商将提供给您端点和凭据。

如果您想使用此功能,请注意以下事项:

此功能不受 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
您可能需要扩展您的 角色策略 以允许向此存储桶写入。

参见