@remotion/lambda 4.0.0-umungobongo.5 → 4.0.0-webhook.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/make-layer-public.js +5 -5
- package/dist/api/bucket-exists.js +1 -1
- package/dist/api/clean-items.js +1 -1
- package/dist/api/create-bucket.js +1 -1
- package/dist/api/delete-render.d.ts +19 -0
- package/dist/api/delete-render.js +66 -0
- package/dist/api/delete-site.js +0 -5
- package/dist/api/deploy-function.js +4 -2
- package/dist/api/deploy-site.d.ts +2 -0
- package/dist/api/deploy-site.js +2 -0
- package/dist/api/download-media.d.ts +13 -0
- package/dist/api/download-media.js +15 -3
- package/dist/api/enable-s3-website.js +1 -1
- package/dist/api/get-aws-client.d.ts +4 -2
- package/dist/api/get-aws-client.js +7 -2
- package/dist/api/get-buckets.js +2 -2
- package/dist/api/get-function-info.d.ts +1 -2
- package/dist/api/get-functions.js +2 -1
- package/dist/api/get-render-progress.d.ts +4 -1
- package/dist/api/get-render-progress.js +5 -1
- package/dist/api/mock-functions.d.ts +4 -5
- package/dist/api/presign-url.js +6 -1
- package/dist/api/render-media-on-lambda.d.ts +18 -10
- package/dist/api/render-media-on-lambda.js +65 -40
- package/dist/api/render-still-on-lambda.d.ts +1 -0
- package/dist/api/render-still-on-lambda.js +48 -30
- package/dist/api/upload-dir.js +1 -1
- package/dist/api/validate-webhook-signature.d.ts +13 -0
- package/dist/api/validate-webhook-signature.js +32 -0
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/commands/functions/deploy.js +2 -1
- package/dist/cli/commands/render/render.js +24 -15
- package/dist/cli/commands/still.js +20 -16
- package/dist/cli/get-aws-region.js +2 -1
- package/dist/cli/helpers/determine-image-format.d.ts +10 -0
- package/dist/cli/helpers/determine-image-format.js +47 -0
- package/dist/cli/helpers/find-function-name.js +3 -2
- package/dist/cli/helpers/webhook-types.d.ts +6 -0
- package/dist/cli/helpers/webhook-types.js +2 -0
- package/dist/cli/index.js +1 -1
- package/dist/client.d.ts +4 -2
- package/dist/client.js +3 -1
- package/dist/functions/chunk-optimization/can-use-optimization.js +2 -2
- package/dist/functions/chunk-optimization/s3-optimization-file.js +1 -0
- package/dist/functions/chunk-optimization/types.d.ts +1 -2
- package/dist/functions/helpers/check-if-render-exists.d.ts +3 -0
- package/dist/functions/helpers/check-if-render-exists.js +14 -0
- package/dist/functions/helpers/expected-out-name.d.ts +4 -2
- package/dist/functions/helpers/expected-out-name.js +26 -5
- package/dist/functions/helpers/find-output-file-in-bucket.d.ts +3 -1
- package/dist/functions/helpers/find-output-file-in-bucket.js +17 -13
- package/dist/functions/helpers/get-custom-out-name.d.ts +6 -0
- package/dist/functions/helpers/get-custom-out-name.js +31 -0
- package/dist/functions/helpers/get-files-to-delete.js +1 -1
- package/dist/functions/helpers/get-lambdas-invoked-stats.js +1 -1
- package/dist/functions/helpers/get-output-url-from-metadata.d.ts +2 -1
- package/dist/functions/helpers/get-output-url-from-metadata.js +2 -2
- package/dist/functions/helpers/get-progress.d.ts +4 -2
- package/dist/functions/helpers/get-progress.js +13 -6
- package/dist/functions/helpers/get-retry-stats.js +1 -1
- package/dist/functions/helpers/io.d.ts +17 -1
- package/dist/functions/helpers/io.js +21 -6
- package/dist/functions/helpers/read-with-progress.d.ts +3 -1
- package/dist/functions/helpers/read-with-progress.js +2 -2
- package/dist/functions/helpers/write-lambda-error.d.ts +1 -1
- package/dist/functions/helpers/write-lambda-error.js +1 -0
- package/dist/functions/helpers/write-post-render-data.js +1 -0
- package/dist/functions/index.js +4 -4
- package/dist/functions/info.d.ts +2 -2
- package/dist/functions/info.js +2 -1
- package/dist/functions/launch.js +206 -13
- package/dist/functions/progress.d.ts +1 -1
- package/dist/functions/progress.js +10 -1
- package/dist/functions/renderer.js +104 -74
- package/dist/functions/start.d.ts +5 -1
- package/dist/functions/start.js +23 -1
- package/dist/functions/still.js +17 -4
- package/dist/index.d.ts +6 -2
- package/dist/index.js +5 -1
- package/dist/shared/aws-clients.d.ts +13 -2
- package/dist/shared/aws-clients.js +56 -26
- package/dist/shared/bundle-site.d.ts +2 -1
- package/dist/shared/constants.d.ts +31 -6
- package/dist/shared/constants.js +14 -7
- package/dist/shared/get-cloudwatch-stream-url.d.ts +8 -0
- package/dist/shared/get-cloudwatch-stream-url.js +7 -0
- package/dist/shared/get-function-version.d.ts +1 -2
- package/dist/shared/hosted-layers.js +60 -60
- package/dist/shared/invoke-webhook.d.ts +59 -0
- package/dist/shared/invoke-webhook.js +103 -0
- package/dist/shared/is-in-lambda.js +5 -1
- package/dist/shared/lambda-version-string.d.ts +1 -0
- package/dist/shared/lambda-version-string.js +7 -0
- package/dist/shared/validate-frames-per-lambda.d.ts +4 -1
- package/dist/shared/validate-frames-per-lambda.js +4 -3
- package/dist/shared/validate-outname.d.ts +3 -2
- package/dist/shared/validate-outname.js +5 -1
- package/package.json +9 -9
- package/remotionlambda.zip +0 -0
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
4
4
|
const aws_policies_1 = require("aws-policies");
|
|
5
|
-
const
|
|
5
|
+
const version_1 = require("remotion/version");
|
|
6
|
+
const get_regions_1 = require("../api/get-regions");
|
|
6
7
|
const quit_1 = require("../cli/helpers/quit");
|
|
7
8
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
8
|
-
const constants_1 = require("../shared/constants");
|
|
9
9
|
const runtimes = ['nodejs14.x'];
|
|
10
10
|
const archictures = ['arm64', 'x86_64'];
|
|
11
11
|
const layerInfo = {
|
|
@@ -37,13 +37,13 @@ const layerInfo = {
|
|
|
37
37
|
const makeLayerPublic = async () => {
|
|
38
38
|
const layers = ['fonts', 'ffmpeg', 'chromium'];
|
|
39
39
|
for (const architecture of archictures) {
|
|
40
|
-
for (const region of (0,
|
|
40
|
+
for (const region of (0, get_regions_1.getRegions)()) {
|
|
41
41
|
for (const layer of layers) {
|
|
42
42
|
const layerName = `remotion-binaries-${layer}-${architecture}`;
|
|
43
43
|
const { Version, LayerArn } = await (0, aws_clients_1.getLambdaClient)(region).send(new client_lambda_1.PublishLayerVersionCommand({
|
|
44
44
|
Content: {
|
|
45
45
|
S3Bucket: 'remotionlambda-binaries-' + region,
|
|
46
|
-
S3Key: `remotion-layer-${layer}-
|
|
46
|
+
S3Key: `remotion-layer-${layer}-v8-${architecture}.zip`,
|
|
47
47
|
},
|
|
48
48
|
LayerName: layerName,
|
|
49
49
|
LicenseInfo: layer === 'chromium'
|
|
@@ -52,7 +52,7 @@ const makeLayerPublic = async () => {
|
|
|
52
52
|
? 'Compiled from FFMPEG source. Read FFMPEG license: https://ffmpeg.org/legal.html'
|
|
53
53
|
: 'Contains Noto Sans font. Read Noto Sans License: https://fonts.google.com/noto/specimen/Noto+Sans/about',
|
|
54
54
|
CompatibleRuntimes: runtimes,
|
|
55
|
-
Description:
|
|
55
|
+
Description: version_1.VERSION,
|
|
56
56
|
}));
|
|
57
57
|
await (0, aws_clients_1.getLambdaClient)(region).send(new client_lambda_1.AddLayerVersionPermissionCommand({
|
|
58
58
|
Action: aws_policies_1.lambda.GetLayerVersion,
|
|
@@ -6,7 +6,7 @@ const aws_clients_1 = require("../shared/aws-clients");
|
|
|
6
6
|
const bucketExistsInRegion = async ({ bucketName, region, expectedBucketOwner, }) => {
|
|
7
7
|
var _a;
|
|
8
8
|
try {
|
|
9
|
-
const bucket = await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.GetBucketLocationCommand({
|
|
9
|
+
const bucket = await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.GetBucketLocationCommand({
|
|
10
10
|
Bucket: bucketName,
|
|
11
11
|
ExpectedBucketOwner: expectedBucketOwner !== null && expectedBucketOwner !== void 0 ? expectedBucketOwner : undefined,
|
|
12
12
|
}));
|
package/dist/api/clean-items.js
CHANGED
|
@@ -11,7 +11,7 @@ const cleanItems = async ({ bucket, onAfterItemDeleted, onBeforeItemDeleted, reg
|
|
|
11
11
|
bucketName: bucket,
|
|
12
12
|
itemName: object,
|
|
13
13
|
});
|
|
14
|
-
await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.DeleteObjectCommand({
|
|
14
|
+
await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.DeleteObjectCommand({
|
|
15
15
|
Bucket: bucket,
|
|
16
16
|
Key: object,
|
|
17
17
|
}));
|
|
@@ -4,7 +4,7 @@ exports.createBucket = void 0;
|
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
5
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
6
6
|
const createBucket = async ({ region, bucketName, }) => {
|
|
7
|
-
await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.CreateBucketCommand({
|
|
7
|
+
await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.CreateBucketCommand({
|
|
8
8
|
Bucket: bucketName,
|
|
9
9
|
ACL: 'public-read',
|
|
10
10
|
}));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AwsRegion } from '../client';
|
|
2
|
+
import type { CustomCredentials } from '../shared/aws-clients';
|
|
3
|
+
export declare type DeleteRenderInput = {
|
|
4
|
+
region: AwsRegion;
|
|
5
|
+
bucketName: string;
|
|
6
|
+
renderId: string;
|
|
7
|
+
customCredentials?: CustomCredentials;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* @description Deletes a render artifact and it's metadata given it's renderId.
|
|
11
|
+
* @link https://remotion.dev/docs/lambda/deleterender
|
|
12
|
+
* @param params.region The AWS region in which the media resides.
|
|
13
|
+
* @param params.bucketName The `bucketName` that was specified during the render
|
|
14
|
+
* @param params.renderId The `renderId` that was obtained after triggering the render.
|
|
15
|
+
* @param params.customCredentials If the file was saved to a foreign cloud, pass credentials for reading from it.
|
|
16
|
+
*/
|
|
17
|
+
export declare const deleteRender: (input: DeleteRenderInput) => Promise<{
|
|
18
|
+
freedBytes: number;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteRender = void 0;
|
|
4
|
+
const defaults_1 = require("../defaults");
|
|
5
|
+
const expected_out_name_1 = require("../functions/helpers/expected-out-name");
|
|
6
|
+
const get_render_metadata_1 = require("../functions/helpers/get-render-metadata");
|
|
7
|
+
const io_1 = require("../functions/helpers/io");
|
|
8
|
+
const get_account_id_1 = require("../shared/get-account-id");
|
|
9
|
+
const clean_items_1 = require("./clean-items");
|
|
10
|
+
/**
|
|
11
|
+
* @description Deletes a render artifact and it's metadata given it's renderId.
|
|
12
|
+
* @link https://remotion.dev/docs/lambda/deleterender
|
|
13
|
+
* @param params.region The AWS region in which the media resides.
|
|
14
|
+
* @param params.bucketName The `bucketName` that was specified during the render
|
|
15
|
+
* @param params.renderId The `renderId` that was obtained after triggering the render.
|
|
16
|
+
* @param params.customCredentials If the file was saved to a foreign cloud, pass credentials for reading from it.
|
|
17
|
+
*/
|
|
18
|
+
const deleteRender = async (input) => {
|
|
19
|
+
var _a;
|
|
20
|
+
const expectedBucketOwner = await (0, get_account_id_1.getAccountId)({
|
|
21
|
+
region: input.region,
|
|
22
|
+
});
|
|
23
|
+
const renderMetadata = await (0, get_render_metadata_1.getRenderMetadata)({
|
|
24
|
+
bucketName: input.bucketName,
|
|
25
|
+
expectedBucketOwner,
|
|
26
|
+
region: input.region,
|
|
27
|
+
renderId: input.renderId,
|
|
28
|
+
});
|
|
29
|
+
const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, input.bucketName, (_a = input.customCredentials) !== null && _a !== void 0 ? _a : null);
|
|
30
|
+
await (0, io_1.lambdaDeleteFile)({
|
|
31
|
+
bucketName: renderBucketName,
|
|
32
|
+
customCredentials,
|
|
33
|
+
key,
|
|
34
|
+
region: input.region,
|
|
35
|
+
});
|
|
36
|
+
let files = await (0, io_1.lambdaLs)({
|
|
37
|
+
bucketName: input.bucketName,
|
|
38
|
+
prefix: (0, defaults_1.rendersPrefix)(input.renderId),
|
|
39
|
+
region: input.region,
|
|
40
|
+
expectedBucketOwner,
|
|
41
|
+
});
|
|
42
|
+
let totalSize = 0;
|
|
43
|
+
while (files.length > 0) {
|
|
44
|
+
totalSize += files.reduce((a, b) => {
|
|
45
|
+
var _a;
|
|
46
|
+
return a + ((_a = b.Size) !== null && _a !== void 0 ? _a : 0);
|
|
47
|
+
}, 0);
|
|
48
|
+
await (0, clean_items_1.cleanItems)({
|
|
49
|
+
list: files.map((f) => f.Key),
|
|
50
|
+
bucket: input.bucketName,
|
|
51
|
+
onAfterItemDeleted: () => undefined,
|
|
52
|
+
onBeforeItemDeleted: () => undefined,
|
|
53
|
+
region: input.region,
|
|
54
|
+
});
|
|
55
|
+
files = await (0, io_1.lambdaLs)({
|
|
56
|
+
bucketName: input.bucketName,
|
|
57
|
+
prefix: (0, defaults_1.rendersPrefix)(input.renderId),
|
|
58
|
+
region: input.region,
|
|
59
|
+
expectedBucketOwner,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
freedBytes: totalSize,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
exports.deleteRender = deleteRender;
|
package/dist/api/delete-site.js
CHANGED
|
@@ -23,11 +23,6 @@ const deleteSite = async ({ bucketName, siteName, region, onAfterItemDeleted, })
|
|
|
23
23
|
region,
|
|
24
24
|
expectedBucketOwner: accountId,
|
|
25
25
|
});
|
|
26
|
-
if (files.length === 0) {
|
|
27
|
-
return {
|
|
28
|
-
totalSizeInBytes: 0,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
26
|
let totalSize = 0;
|
|
32
27
|
while (files.length > 0) {
|
|
33
28
|
totalSize += files.reduce((a, b) => {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deployFunction = void 0;
|
|
4
|
+
const version_1 = require("remotion/version");
|
|
4
5
|
const get_functions_1 = require("../api/get-functions");
|
|
5
6
|
const constants_1 = require("../shared/constants");
|
|
6
7
|
const function_zip_path_1 = require("../shared/function-zip-path");
|
|
7
8
|
const get_account_id_1 = require("../shared/get-account-id");
|
|
9
|
+
const lambda_version_string_1 = require("../shared/lambda-version-string");
|
|
8
10
|
const validate_architecture_1 = require("../shared/validate-architecture");
|
|
9
11
|
const validate_aws_region_1 = require("../shared/validate-aws-region");
|
|
10
12
|
const validate_custom_role_arn_1 = require("../shared/validate-custom-role-arn");
|
|
@@ -36,7 +38,7 @@ const deployFunction = async (options) => {
|
|
|
36
38
|
(0, validate_disk_size_in_mb_1.validateDiskSizeInMb)(diskSizeInMb);
|
|
37
39
|
(0, validate_custom_role_arn_1.validateCustomRoleArn)(options.customRoleArn);
|
|
38
40
|
const fnNameRender = [
|
|
39
|
-
`${constants_1.RENDER_FN_PREFIX}${
|
|
41
|
+
`${constants_1.RENDER_FN_PREFIX}${lambda_version_string_1.LAMBDA_VERSION_STRING}`,
|
|
40
42
|
`mem${options.memorySizeInMb}mb`,
|
|
41
43
|
`disk${diskSizeInMb}mb`,
|
|
42
44
|
`${options.timeoutInSeconds}sec`,
|
|
@@ -46,7 +48,7 @@ const deployFunction = async (options) => {
|
|
|
46
48
|
compatibleOnly: true,
|
|
47
49
|
region: options.region,
|
|
48
50
|
});
|
|
49
|
-
const alreadyDeployed = fns.find((f) => f.version ===
|
|
51
|
+
const alreadyDeployed = fns.find((f) => f.version === version_1.VERSION &&
|
|
50
52
|
f.memorySizeInMb === options.memorySizeInMb &&
|
|
51
53
|
f.timeoutInSeconds === options.timeoutInSeconds &&
|
|
52
54
|
f.diskSizeInMb === diskSizeInMb);
|
|
@@ -11,6 +11,8 @@ export declare type DeploySiteInput = {
|
|
|
11
11
|
onUploadProgress?: (upload: UploadDirProgress) => void;
|
|
12
12
|
webpackOverride?: WebpackOverrideFn;
|
|
13
13
|
enableCaching?: boolean;
|
|
14
|
+
publicDir?: string | null;
|
|
15
|
+
rootDir?: string;
|
|
14
16
|
};
|
|
15
17
|
};
|
|
16
18
|
export declare type DeploySiteOutput = Promise<{
|
package/dist/api/deploy-site.js
CHANGED
|
@@ -47,6 +47,8 @@ const deploySite = async ({ bucketName, entryPoint, siteName, options, region, }
|
|
|
47
47
|
publicPath: `/${subFolder}/`,
|
|
48
48
|
webpackOverride: (_b = options === null || options === void 0 ? void 0 : options.webpackOverride) !== null && _b !== void 0 ? _b : ((f) => f),
|
|
49
49
|
enableCaching: (_c = options === null || options === void 0 ? void 0 : options.enableCaching) !== null && _c !== void 0 ? _c : true,
|
|
50
|
+
publicDir: options === null || options === void 0 ? void 0 : options.publicDir,
|
|
51
|
+
rootDir: options === null || options === void 0 ? void 0 : options.rootDir,
|
|
50
52
|
});
|
|
51
53
|
await Promise.all([
|
|
52
54
|
(0, upload_dir_1.uploadDir)({
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import type { LambdaReadFileProgress } from '../functions/helpers/read-with-progress';
|
|
2
2
|
import type { AwsRegion } from '../pricing/aws-regions';
|
|
3
|
+
import type { CustomCredentials } from '../shared/aws-clients';
|
|
3
4
|
export declare type DownloadMediaInput = {
|
|
4
5
|
region: AwsRegion;
|
|
5
6
|
bucketName: string;
|
|
6
7
|
renderId: string;
|
|
7
8
|
outPath: string;
|
|
8
9
|
onProgress?: LambdaReadFileProgress;
|
|
10
|
+
customCredentials?: CustomCredentials;
|
|
9
11
|
};
|
|
10
12
|
export declare type DownloadMediaOutput = {
|
|
11
13
|
outputPath: string;
|
|
12
14
|
sizeInBytes: number;
|
|
13
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* @description Triggers a render on a lambda given a composition and a lambda function.
|
|
18
|
+
* @link https://remotion.dev/docs/lambda/downloadmedia
|
|
19
|
+
* @param params.region The AWS region in which the media resides.
|
|
20
|
+
* @param params.bucketName The `bucketName` that was specified during the render.
|
|
21
|
+
* @param params.renderId The `renderId` that was obtained after triggering the render.
|
|
22
|
+
* @param params.outPath Where to save the media.
|
|
23
|
+
* @param params.onProgress Progress callback function - see docs for details.
|
|
24
|
+
* @param params.customCredentials If the file was saved to a foreign cloud, pass credentials for reading from it.
|
|
25
|
+
* @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
|
|
26
|
+
*/
|
|
14
27
|
export declare const downloadMedia: (input: DownloadMediaInput) => Promise<DownloadMediaOutput>;
|
|
15
28
|
/**
|
|
16
29
|
* @deprecated Renamed to downloadMedia()
|
|
@@ -10,8 +10,19 @@ const expected_out_name_1 = require("../functions/helpers/expected-out-name");
|
|
|
10
10
|
const get_render_metadata_1 = require("../functions/helpers/get-render-metadata");
|
|
11
11
|
const read_with_progress_1 = require("../functions/helpers/read-with-progress");
|
|
12
12
|
const get_account_id_1 = require("../shared/get-account-id");
|
|
13
|
+
/**
|
|
14
|
+
* @description Triggers a render on a lambda given a composition and a lambda function.
|
|
15
|
+
* @link https://remotion.dev/docs/lambda/downloadmedia
|
|
16
|
+
* @param params.region The AWS region in which the media resides.
|
|
17
|
+
* @param params.bucketName The `bucketName` that was specified during the render.
|
|
18
|
+
* @param params.renderId The `renderId` that was obtained after triggering the render.
|
|
19
|
+
* @param params.outPath Where to save the media.
|
|
20
|
+
* @param params.onProgress Progress callback function - see docs for details.
|
|
21
|
+
* @param params.customCredentials If the file was saved to a foreign cloud, pass credentials for reading from it.
|
|
22
|
+
* @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
|
|
23
|
+
*/
|
|
13
24
|
const downloadMedia = async (input) => {
|
|
14
|
-
var _a;
|
|
25
|
+
var _a, _b;
|
|
15
26
|
const expectedBucketOwner = await (0, get_account_id_1.getAccountId)({
|
|
16
27
|
region: input.region,
|
|
17
28
|
});
|
|
@@ -23,14 +34,15 @@ const downloadMedia = async (input) => {
|
|
|
23
34
|
});
|
|
24
35
|
const outputPath = path_1.default.resolve(process.cwd(), input.outPath);
|
|
25
36
|
renderer_1.RenderInternals.ensureOutputDirectory(outputPath);
|
|
26
|
-
const { key, renderBucketName } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, input.bucketName);
|
|
37
|
+
const { key, renderBucketName, customCredentials } = (0, expected_out_name_1.getExpectedOutName)(renderMetadata, input.bucketName, (_a = input.customCredentials) !== null && _a !== void 0 ? _a : null);
|
|
27
38
|
const { sizeInBytes } = await (0, read_with_progress_1.lambdaDownloadFileWithProgress)({
|
|
28
39
|
bucketName: renderBucketName,
|
|
29
40
|
expectedBucketOwner,
|
|
30
41
|
key,
|
|
31
42
|
region: input.region,
|
|
32
|
-
onProgress: (
|
|
43
|
+
onProgress: (_b = input.onProgress) !== null && _b !== void 0 ? _b : (() => undefined),
|
|
33
44
|
outputPath,
|
|
45
|
+
customCredentials,
|
|
34
46
|
});
|
|
35
47
|
return {
|
|
36
48
|
outputPath,
|
|
@@ -4,7 +4,7 @@ exports.enableS3Website = void 0;
|
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
5
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
6
6
|
const enableS3Website = async ({ region, bucketName, }) => {
|
|
7
|
-
await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.PutBucketWebsiteCommand({
|
|
7
|
+
await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.PutBucketWebsiteCommand({
|
|
8
8
|
Bucket: bucketName,
|
|
9
9
|
WebsiteConfiguration: {
|
|
10
10
|
IndexDocument: {
|
|
@@ -4,10 +4,11 @@ import * as LambdaSDK from '@aws-sdk/client-lambda';
|
|
|
4
4
|
import * as S3SDK from '@aws-sdk/client-s3';
|
|
5
5
|
import * as ServiceQuotasSDK from '@aws-sdk/client-service-quotas';
|
|
6
6
|
import type { AwsRegion } from '../client';
|
|
7
|
-
import type { ServiceMapping } from '../shared/aws-clients';
|
|
7
|
+
import type { CustomCredentials, ServiceMapping } from '../shared/aws-clients';
|
|
8
8
|
export declare type GetAwsClientInput<T extends keyof ServiceMapping> = {
|
|
9
9
|
region: AwsRegion;
|
|
10
10
|
service: T;
|
|
11
|
+
customCredentials?: CustomCredentials | null;
|
|
11
12
|
};
|
|
12
13
|
declare type SdkMapping = {
|
|
13
14
|
s3: typeof S3SDK;
|
|
@@ -25,7 +26,8 @@ export declare type GetAwsClientOutput<T extends keyof ServiceMapping> = {
|
|
|
25
26
|
* @link https://remotion.dev/docs/lambda/getawsclient
|
|
26
27
|
* @param {AwsRegion} params.region The region in which the S3 bucket resides in.
|
|
27
28
|
* @param {string} params.service One of `iam`, `s3`, `cloudwatch`, `iam` or `servicequotas`
|
|
29
|
+
* @param {CustomCredentials} params.customCredentials Pass endpoint and credentials if you want to connect to a different cloud for S3
|
|
28
30
|
* @returns {GetAwsClientOutput<T>} Returns `client` and `sdk` of a AWS service
|
|
29
31
|
*/
|
|
30
|
-
export declare const getAwsClient: <T extends keyof ServiceMapping>({ region, service, }: GetAwsClientInput<T>) => GetAwsClientOutput<T>;
|
|
32
|
+
export declare const getAwsClient: <T extends keyof ServiceMapping>({ region, service, customCredentials, }: GetAwsClientInput<T>) => GetAwsClientOutput<T>;
|
|
31
33
|
export {};
|
|
@@ -35,11 +35,16 @@ const aws_clients_1 = require("../shared/aws-clients");
|
|
|
35
35
|
* @link https://remotion.dev/docs/lambda/getawsclient
|
|
36
36
|
* @param {AwsRegion} params.region The region in which the S3 bucket resides in.
|
|
37
37
|
* @param {string} params.service One of `iam`, `s3`, `cloudwatch`, `iam` or `servicequotas`
|
|
38
|
+
* @param {CustomCredentials} params.customCredentials Pass endpoint and credentials if you want to connect to a different cloud for S3
|
|
38
39
|
* @returns {GetAwsClientOutput<T>} Returns `client` and `sdk` of a AWS service
|
|
39
40
|
*/
|
|
40
|
-
const getAwsClient = ({ region, service, }) => {
|
|
41
|
+
const getAwsClient = ({ region, service, customCredentials, }) => {
|
|
41
42
|
return {
|
|
42
|
-
client: (0, aws_clients_1.getServiceClient)(
|
|
43
|
+
client: (0, aws_clients_1.getServiceClient)({
|
|
44
|
+
region,
|
|
45
|
+
service,
|
|
46
|
+
customCredentials: customCredentials !== null && customCredentials !== void 0 ? customCredentials : null,
|
|
47
|
+
}),
|
|
43
48
|
sdk: {
|
|
44
49
|
lambda: LambdaSDK,
|
|
45
50
|
cloudwatch: CloudWatchSDK,
|
package/dist/api/get-buckets.js
CHANGED
|
@@ -5,13 +5,13 @@ const client_s3_1 = require("@aws-sdk/client-s3");
|
|
|
5
5
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
6
6
|
const constants_1 = require("../shared/constants");
|
|
7
7
|
const getRemotionS3Buckets = async (region) => {
|
|
8
|
-
const { Buckets } = await (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.ListBucketsCommand({}));
|
|
8
|
+
const { Buckets } = await (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.ListBucketsCommand({}));
|
|
9
9
|
if (!Buckets) {
|
|
10
10
|
return { remotionBuckets: [] };
|
|
11
11
|
}
|
|
12
12
|
const remotionBuckets = Buckets.filter((b) => { var _a; return (_a = b.Name) === null || _a === void 0 ? void 0 : _a.startsWith(constants_1.REMOTION_BUCKET_PREFIX); });
|
|
13
13
|
const locations = await Promise.all(remotionBuckets.map((bucket) => {
|
|
14
|
-
return (0, aws_clients_1.getS3Client)(region).send(new client_s3_1.GetBucketLocationCommand({
|
|
14
|
+
return (0, aws_clients_1.getS3Client)(region, null).send(new client_s3_1.GetBucketLocationCommand({
|
|
15
15
|
Bucket: bucket.Name,
|
|
16
16
|
}));
|
|
17
17
|
}));
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { AwsRegion } from '../pricing/aws-regions';
|
|
2
|
-
import type { LambdaVersions } from '../shared/constants';
|
|
3
2
|
export declare type FunctionInfo = {
|
|
4
3
|
functionName: string;
|
|
5
4
|
timeoutInSeconds: number;
|
|
6
5
|
memorySizeInMb: number;
|
|
7
|
-
version:
|
|
6
|
+
version: string | null;
|
|
8
7
|
diskSizeInMb: number;
|
|
9
8
|
};
|
|
10
9
|
export declare type GetFunctionInfoInput = {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getFunctions = void 0;
|
|
4
4
|
const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
5
|
+
const version_1 = require("remotion/version");
|
|
5
6
|
const aws_clients_1 = require("../shared/aws-clients");
|
|
6
7
|
const constants_1 = require("../shared/constants");
|
|
7
8
|
const get_function_version_1 = require("../shared/get-function-version");
|
|
@@ -73,7 +74,7 @@ const getFunctions = async (options) => {
|
|
|
73
74
|
if (!options.compatibleOnly) {
|
|
74
75
|
return true;
|
|
75
76
|
}
|
|
76
|
-
return l.version ===
|
|
77
|
+
return l.version === version_1.VERSION;
|
|
77
78
|
});
|
|
78
79
|
};
|
|
79
80
|
exports.getFunctions = getFunctions;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { AwsRegion } from '../pricing/aws-regions';
|
|
2
|
+
import type { CustomCredentials } from '../shared/aws-clients';
|
|
2
3
|
import type { RenderProgress } from '../shared/constants';
|
|
3
4
|
export declare type GetRenderInput = {
|
|
4
5
|
functionName: string;
|
|
5
6
|
bucketName: string;
|
|
6
7
|
renderId: string;
|
|
7
8
|
region: AwsRegion;
|
|
9
|
+
s3OutputProvider?: CustomCredentials;
|
|
8
10
|
};
|
|
9
11
|
/**
|
|
10
12
|
* @description Gets the current status of a render originally triggered via renderMediaOnLambda().
|
|
@@ -13,6 +15,7 @@ export declare type GetRenderInput = {
|
|
|
13
15
|
* @param {string} params.bucketName The name of the bucket that was used in the render.
|
|
14
16
|
* @param {string} params.renderId The ID of the render that was returned by `renderMediaOnLambda()`.
|
|
15
17
|
* @param {AwsRegion} params.region The region in which the render was triggered.
|
|
18
|
+
* @param {CustomCredentials} params.s3OutputProvider? Endpoint and credentials if the output file is stored outside of AWS.
|
|
16
19
|
* @returns {Promise<RenderProgress>} See documentation for this function to see all properties on the return object.
|
|
17
20
|
*/
|
|
18
|
-
export declare const getRenderProgress: ({ functionName, bucketName, renderId, region, }: GetRenderInput) => Promise<RenderProgress>;
|
|
21
|
+
export declare const getRenderProgress: ({ functionName, bucketName, renderId, region, s3OutputProvider, }: GetRenderInput) => Promise<RenderProgress>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRenderProgress = void 0;
|
|
4
|
+
const version_1 = require("remotion/version");
|
|
4
5
|
const call_lambda_1 = require("../shared/call-lambda");
|
|
5
6
|
const constants_1 = require("../shared/constants");
|
|
6
7
|
/**
|
|
@@ -10,15 +11,18 @@ const constants_1 = require("../shared/constants");
|
|
|
10
11
|
* @param {string} params.bucketName The name of the bucket that was used in the render.
|
|
11
12
|
* @param {string} params.renderId The ID of the render that was returned by `renderMediaOnLambda()`.
|
|
12
13
|
* @param {AwsRegion} params.region The region in which the render was triggered.
|
|
14
|
+
* @param {CustomCredentials} params.s3OutputProvider? Endpoint and credentials if the output file is stored outside of AWS.
|
|
13
15
|
* @returns {Promise<RenderProgress>} See documentation for this function to see all properties on the return object.
|
|
14
16
|
*/
|
|
15
|
-
const getRenderProgress = async ({ functionName, bucketName, renderId, region, }) => {
|
|
17
|
+
const getRenderProgress = async ({ functionName, bucketName, renderId, region, s3OutputProvider, }) => {
|
|
16
18
|
const result = await (0, call_lambda_1.callLambda)({
|
|
17
19
|
functionName,
|
|
18
20
|
type: constants_1.LambdaRoutines.status,
|
|
19
21
|
payload: {
|
|
20
22
|
bucketName,
|
|
21
23
|
renderId,
|
|
24
|
+
version: version_1.VERSION,
|
|
25
|
+
s3OutputProvider,
|
|
22
26
|
},
|
|
23
27
|
region,
|
|
24
28
|
});
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import type { AwsRegion } from '../pricing/aws-regions';
|
|
2
|
-
import type { LambdaVersions } from '../shared/constants';
|
|
3
2
|
import type { FunctionInfo } from './get-function-info';
|
|
4
3
|
export declare let mockFunctionsStore: (FunctionInfo & {
|
|
5
4
|
region: AwsRegion;
|
|
6
|
-
version:
|
|
5
|
+
version: string;
|
|
7
6
|
})[];
|
|
8
7
|
export declare const addFunction: (fn: FunctionInfo, region: AwsRegion) => void;
|
|
9
8
|
export declare const deleteMockFunction: (name: string, region: string) => void;
|
|
10
9
|
export declare const findFunction: (name: string, region: string) => (FunctionInfo & {
|
|
11
10
|
region: AwsRegion;
|
|
12
|
-
version:
|
|
11
|
+
version: string;
|
|
13
12
|
}) | undefined;
|
|
14
|
-
export declare const getAllMockFunctions: (region: string, version:
|
|
13
|
+
export declare const getAllMockFunctions: (region: string, version: string | null) => (FunctionInfo & {
|
|
15
14
|
region: AwsRegion;
|
|
16
|
-
version:
|
|
15
|
+
version: string;
|
|
17
16
|
})[];
|
|
18
17
|
export declare const cleanFnStore: () => void;
|
|
19
18
|
export declare const markFunctionAsIncompatible: (functionName: string) => void;
|
package/dist/api/presign-url.js
CHANGED
|
@@ -19,7 +19,7 @@ const validate_presign_expiration_1 = require("../shared/validate-presign-expira
|
|
|
19
19
|
const presignUrl = async ({ region, bucketName, objectKey, checkIfObjectExists = false, expiresInSeconds, }) => {
|
|
20
20
|
(0, validate_bucketname_1.validateBucketName)(bucketName, { mustStartWithRemotion: false });
|
|
21
21
|
(0, validate_presign_expiration_1.validatePresignExpiration)(expiresInSeconds);
|
|
22
|
-
const s3Client = (0, aws_clients_1.getS3Client)(region);
|
|
22
|
+
const s3Client = (0, aws_clients_1.getS3Client)(region, null);
|
|
23
23
|
if (checkIfObjectExists) {
|
|
24
24
|
try {
|
|
25
25
|
await s3Client.send(new client_s3_1.HeadObjectCommand({
|
|
@@ -31,6 +31,11 @@ const presignUrl = async ({ region, bucketName, objectKey, checkIfObjectExists =
|
|
|
31
31
|
if (err.name === 'NotFound') {
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
|
+
if (err.message === 'UnknownError' ||
|
|
35
|
+
err.$metadata
|
|
36
|
+
.httpStatusCode === 403) {
|
|
37
|
+
throw new Error(`Unable to access item "${objectKey}" from bucket "${bucketName}". You must have permission for both "s3:GetObject" and "s3:ListBucket" actions.`);
|
|
38
|
+
}
|
|
34
39
|
throw err;
|
|
35
40
|
}
|
|
36
41
|
}
|
|
@@ -8,16 +8,16 @@ export declare type RenderMediaOnLambdaInput = {
|
|
|
8
8
|
functionName: string;
|
|
9
9
|
serveUrl: string;
|
|
10
10
|
composition: string;
|
|
11
|
-
inputProps
|
|
11
|
+
inputProps?: unknown;
|
|
12
12
|
codec: LambdaCodec;
|
|
13
|
-
imageFormat
|
|
13
|
+
imageFormat?: ImageFormat;
|
|
14
14
|
crf?: number | undefined;
|
|
15
15
|
envVariables?: Record<string, string>;
|
|
16
16
|
pixelFormat?: PixelFormat;
|
|
17
17
|
proResProfile?: ProResProfile;
|
|
18
|
-
privacy
|
|
18
|
+
privacy?: Privacy;
|
|
19
19
|
quality?: number;
|
|
20
|
-
maxRetries
|
|
20
|
+
maxRetries?: number;
|
|
21
21
|
framesPerLambda?: number;
|
|
22
22
|
logLevel?: LogLevel;
|
|
23
23
|
frameRange?: FrameRange;
|
|
@@ -29,10 +29,17 @@ export declare type RenderMediaOnLambdaInput = {
|
|
|
29
29
|
numberOfGifLoops?: number | null;
|
|
30
30
|
concurrencyPerLambda?: number;
|
|
31
31
|
downloadBehavior?: DownloadBehavior | null;
|
|
32
|
+
muted?: boolean;
|
|
33
|
+
overwrite?: boolean;
|
|
34
|
+
webhook?: {
|
|
35
|
+
url: string;
|
|
36
|
+
secret: string | null;
|
|
37
|
+
};
|
|
32
38
|
};
|
|
33
39
|
export declare type RenderMediaOnLambdaOutput = {
|
|
34
40
|
renderId: string;
|
|
35
41
|
bucketName: string;
|
|
42
|
+
cloudWatchLogs: string;
|
|
36
43
|
};
|
|
37
44
|
/**
|
|
38
45
|
* @description Triggers a render on a lambda given a composition and a lambda function.
|
|
@@ -41,19 +48,20 @@ export declare type RenderMediaOnLambdaOutput = {
|
|
|
41
48
|
* @param params.serveUrl The URL of the deployed project
|
|
42
49
|
* @param params.composition The ID of the composition which should be rendered.
|
|
43
50
|
* @param params.inputProps The input props that should be passed to the composition.
|
|
44
|
-
* @param params.codec The
|
|
45
|
-
* @param params.imageFormat In which image format the frames should be rendered.
|
|
51
|
+
* @param params.codec The media codec which should be used for encoding.
|
|
52
|
+
* @param params.imageFormat In which image format the frames should be rendered. Default "jpeg"
|
|
46
53
|
* @param params.crf The constant rate factor to be used during encoding.
|
|
47
54
|
* @param params.envVariables Object containing environment variables to be inserted into the video environment
|
|
48
55
|
* @param params.proResProfile The ProRes profile if rendering a ProRes video
|
|
49
56
|
* @param params.quality JPEG quality if JPEG was selected as the image format.
|
|
50
|
-
* @param params.region The AWS region in which the
|
|
51
|
-
* @param params.maxRetries How often rendering a chunk may fail before the
|
|
57
|
+
* @param params.region The AWS region in which the media should be rendered.
|
|
58
|
+
* @param params.maxRetries How often rendering a chunk may fail before the media render gets aborted. Default "1"
|
|
52
59
|
* @param params.logLevel Level of logging that Lambda function should perform. Default "info".
|
|
60
|
+
* @param params.webhook Webhook URL to be called upon completion or timeout of the rendering process.
|
|
53
61
|
* @returns {Promise<RenderMediaOnLambdaOutput>} See documentation for detailed structure
|
|
54
62
|
*/
|
|
55
|
-
export declare const renderMediaOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
63
|
+
export declare const renderMediaOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
56
64
|
/**
|
|
57
65
|
* @deprecated Renamed to renderMediaOnLambda()
|
|
58
66
|
*/
|
|
59
|
-
export declare const renderVideoOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|
|
67
|
+
export declare const renderVideoOnLambda: ({ functionName, serveUrl, inputProps, codec, imageFormat, crf, envVariables, pixelFormat, proResProfile, quality, region, maxRetries, composition, framesPerLambda, privacy, logLevel, frameRange, outName, timeoutInMilliseconds, chromiumOptions, scale, numberOfGifLoops, everyNthFrame, concurrencyPerLambda, downloadBehavior, muted, overwrite, webhook, }: RenderMediaOnLambdaInput) => Promise<RenderMediaOnLambdaOutput>;
|