awscdk-construct-scte-scheduler
Version:
AWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API
45 lines • 5.84 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lambda = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const fs = require("fs");
const path = require("path");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
const constructs_1 = require("constructs");
class Lambda extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
const { channelId, scteDurationInSeconds } = props;
const TS_ENTRY = path.resolve(__dirname, 'code', 'index.ts');
const JS_ENTRY = path.resolve(__dirname, 'code', 'index.js');
this.func = new aws_lambda_nodejs_1.NodejsFunction(scope, 'ScheduleSCTE', {
runtime: aws_lambda_1.Runtime.NODEJS_LATEST,
entry: fs.existsSync(TS_ENTRY) ? TS_ENTRY : JS_ENTRY,
// projectRoot: path.resolve(__dirname, '..'),
// depsLockFilePath: path.resolve(__dirname, '..', 'package-lock.json'),
handler: 'handler',
timeout: aws_cdk_lib_1.Duration.seconds(30),
environment: {
NODE_ENV: process.env.NODE_ENV,
REGION: process.env.CDK_DEFAULT_REGION,
CHANNEL_ID: channelId,
AVAIL_LENGTH: `${scteDurationInSeconds}`,
},
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.TWO_WEEKS,
});
// Add a statement to call MediaLive schedule API
this.func.addToRolePolicy(aws_iam_1.PolicyStatement.fromJson({
Effect: 'Allow',
Action: 'medialive:*',
Resource: '*',
}));
}
}
exports.Lambda = Lambda;
_a = JSII_RTTI_SYMBOL_1;
Lambda[_a] = { fqn: "awscdk-construct-scte-scheduler.Lambda", version: "0.0.27" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNkNBQXlEO0FBQ3pELGlEQUFzRDtBQUN0RCx1REFBaUQ7QUFDakQscUVBQStEO0FBQy9ELDJDQUF1QztBQU92QyxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUduQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxrQ0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDcEQsT0FBTyxFQUFFLG9CQUFPLENBQUMsYUFBYTtZQUM5QixLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ3BELDhDQUE4QztZQUM5Qyx3RUFBd0U7WUFDeEUsT0FBTyxFQUFFLFNBQVM7WUFDbEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixXQUFXLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBa0I7Z0JBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUE0QjtnQkFDaEQsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFlBQVksRUFBRSxHQUFHLHFCQUFxQixFQUFFO2FBQ3pDO1lBQ0QsWUFBWSxFQUFFLHNCQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7U0FDM0MsQ0FBQyxDQUFDO1FBQ0gsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUN2Qix5QkFBZSxDQUFDLFFBQVEsQ0FBQztZQUN2QixNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLFFBQVEsRUFBRSxHQUFHO1NBQ2QsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztBQWxDSCx3QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRHVyYXRpb24sIGF3c19sb2dzIGFzIGxvZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhUHJvcHMge1xuICByZWFkb25seSBjaGFubmVsSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2N0ZUR1cmF0aW9uSW5TZWNvbmRzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGEgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuYzogTm9kZWpzRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgY2hhbm5lbElkLCBzY3RlRHVyYXRpb25JblNlY29uZHMgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgVFNfRU5UUlkgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnY29kZScsICdpbmRleC50cycpO1xuICAgIGNvbnN0IEpTX0VOVFJZID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2NvZGUnLCAnaW5kZXguanMnKTtcblxuICAgIHRoaXMuZnVuYyA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgJ1NjaGVkdWxlU0NURScsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTX0xBVEVTVCxcbiAgICAgIGVudHJ5OiBmcy5leGlzdHNTeW5jKFRTX0VOVFJZKSA/IFRTX0VOVFJZIDogSlNfRU5UUlksXG4gICAgICAvLyBwcm9qZWN0Um9vdDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJyksXG4gICAgICAvLyBkZXBzTG9ja0ZpbGVQYXRoOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAncGFja2FnZS1sb2NrLmpzb24nKSxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTk9ERV9FTlY6IHByb2Nlc3MuZW52Lk5PREVfRU5WIGFzIHN0cmluZyxcbiAgICAgICAgUkVHSU9OOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gYXMgc3RyaW5nLFxuICAgICAgICBDSEFOTkVMX0lEOiBjaGFubmVsSWQsXG4gICAgICAgIEFWQUlMX0xFTkdUSDogYCR7c2N0ZUR1cmF0aW9uSW5TZWNvbmRzfWAsXG4gICAgICB9LFxuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxuICAgIH0pO1xuICAgIC8vIEFkZCBhIHN0YXRlbWVudCB0byBjYWxsIE1lZGlhTGl2ZSBzY2hlZHVsZSBBUElcbiAgICB0aGlzLmZ1bmMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgUG9saWN5U3RhdGVtZW50LmZyb21Kc29uKHtcbiAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICBBY3Rpb246ICdtZWRpYWxpdmU6KicsXG4gICAgICAgIFJlc291cmNlOiAnKicsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59Il19