awscdk-construct-hls-session-runner
Version:
AWS CDK construct for deploying a Lambda function and SFN state machines to fetch an HLS manifest
39 lines • 6.47 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FetchLambda = 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_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 FetchLambda extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
const { hlsEndpointUrl, requestHeaders, indexOfRenditions, sessionRequirements, eventStartTime, requestSegments = false, timeoutInSeconds = 30, } = props;
const TS_ENTRY = path.resolve(__dirname, 'lambda', 'index.ts');
const JS_ENTRY = path.resolve(__dirname, 'lambda', 'index.js');
this.func = new aws_lambda_nodejs_1.NodejsFunction(scope, `NodejsFunction${id}`, {
runtime: aws_lambda_1.Runtime.NODEJS_18_X,
entry: fs.existsSync(TS_ENTRY) ? TS_ENTRY : JS_ENTRY,
handler: 'handler',
timeout: aws_cdk_lib_1.Duration.seconds(timeoutInSeconds),
environment: {
NODE_ENV: process.env.NODE_ENV,
HLS_ENDPOINT_URL: hlsEndpointUrl,
REQUEST_HEADERS: JSON.stringify(requestHeaders),
INDEX_OF_RENDITIONS: indexOfRenditions.toString(10),
SESSION_REQUIREMENTS: JSON.stringify(sessionRequirements),
EVENT_START_TIME: eventStartTime.toISOString(),
SEGMENT_REQUEST: requestSegments.toString(),
},
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.TWO_WEEKS,
});
}
}
exports.FetchLambda = FetchLambda;
_a = JSII_RTTI_SYMBOL_1;
FetchLambda[_a] = { fqn: "awscdk-construct-hls-session-runner.FetchLambda", version: "0.0.6" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmV0Y2hMYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRmV0Y2hMYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQUF5RDtBQUN6RCx1REFBaUQ7QUFDakQscUVBQStEO0FBQy9ELDJDQUF1QztBQWF2QyxNQUFhLFdBQVksU0FBUSxzQkFBUztJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUNKLGNBQWMsRUFDZCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsZUFBZSxHQUFHLEtBQUssRUFDdkIsZ0JBQWdCLEdBQUcsRUFBRSxHQUN0QixHQUFHLEtBQUssQ0FBQztRQUVWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGtDQUFjLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtZQUMzRCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDcEQsT0FBTyxFQUFFLFNBQVM7WUFDbEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1lBQzNDLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFrQjtnQkFDeEMsZ0JBQWdCLEVBQUUsY0FBYztnQkFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO2dCQUMvQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO2dCQUN6RCxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFO2dCQUM5QyxlQUFlLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRTthQUM1QztZQUNELFlBQVksRUFBRSxzQkFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbkNILGtDQW9DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgYXdzX2xvZ3MgYXMgbG9ncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTZXNzaW9uUmVxdWlyZW1lbnRzIH0gZnJvbSAnLi9TZXNzaW9uUnVubmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBGZXRjaExhbWJkYVByb3BzIHtcbiAgcmVhZG9ubHkgaGxzRW5kcG9pbnRVcmw6IHN0cmluZzsgLy8gU2Vzc3VpYiBJbml0aWFsaXphdGlvbiBVUkxcbiAgcmVhZG9ubHkgcmVxdWVzdEhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IC8vIEhvc3QgbmFtZSBvZiB0aGUgTWVkaWFUYWlsb3IgZW5kcG9pbnRcbiAgcmVhZG9ubHkgaW5kZXhPZlJlbmRpdGlvbnM6IG51bWJlcjsgLy8gTi10aCByZW5kaXRpb24gdG8gZmV0Y2hcbiAgcmVhZG9ubHkgc2Vzc2lvblJlcXVpcmVtZW50czogU2Vzc2lvblJlcXVpcmVtZW50cztcbiAgcmVhZG9ubHkgZXZlbnRTdGFydFRpbWU6IERhdGU7IC8vIFN0YXJ0IHRpbWUgb2YgdGhlIGV2ZW50XG4gIHJlYWRvbmx5IHJlcXVlc3RTZWdtZW50cz86IGJvb2xlYW47IC8vIFdoZXRoZXIgdG8gcmVxdWVzdCBzZWdtZW50c1xuICByZWFkb25seSB0aW1lb3V0SW5TZWNvbmRzPzogbnVtYmVyOyAvLyBUaW1lb3V0IHZhbHVlIGluIHNlY29uZHNcbn1cblxuZXhwb3J0IGNsYXNzIEZldGNoTGFtYmRhIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGZ1bmM6IE5vZGVqc0Z1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBGZXRjaExhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGhsc0VuZHBvaW50VXJsLFxuICAgICAgcmVxdWVzdEhlYWRlcnMsXG4gICAgICBpbmRleE9mUmVuZGl0aW9ucyxcbiAgICAgIHNlc3Npb25SZXF1aXJlbWVudHMsXG4gICAgICBldmVudFN0YXJ0VGltZSxcbiAgICAgIHJlcXVlc3RTZWdtZW50cyA9IGZhbHNlLFxuICAgICAgdGltZW91dEluU2Vjb25kcyA9IDMwLFxuICAgIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IFRTX0VOVFJZID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2xhbWJkYScsICdpbmRleC50cycpO1xuICAgIGNvbnN0IEpTX0VOVFJZID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2xhbWJkYScsICdpbmRleC5qcycpO1xuXG4gICAgdGhpcy5mdW5jID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHNjb3BlLCBgTm9kZWpzRnVuY3Rpb24ke2lkfWAsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBlbnRyeTogZnMuZXhpc3RzU3luYyhUU19FTlRSWSkgPyBUU19FTlRSWSA6IEpTX0VOVFJZLFxuICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyh0aW1lb3V0SW5TZWNvbmRzKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIE5PREVfRU5WOiBwcm9jZXNzLmVudi5OT0RFX0VOViBhcyBzdHJpbmcsXG4gICAgICAgIEhMU19FTkRQT0lOVF9VUkw6IGhsc0VuZHBvaW50VXJsLFxuICAgICAgICBSRVFVRVNUX0hFQURFUlM6IEpTT04uc3RyaW5naWZ5KHJlcXVlc3RIZWFkZXJzKSxcbiAgICAgICAgSU5ERVhfT0ZfUkVORElUSU9OUzogaW5kZXhPZlJlbmRpdGlvbnMudG9TdHJpbmcoMTApLFxuICAgICAgICBTRVNTSU9OX1JFUVVJUkVNRU5UUzogSlNPTi5zdHJpbmdpZnkoc2Vzc2lvblJlcXVpcmVtZW50cyksXG4gICAgICAgIEVWRU5UX1NUQVJUX1RJTUU6IGV2ZW50U3RhcnRUaW1lLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIFNFR01FTlRfUkVRVUVTVDogcmVxdWVzdFNlZ21lbnRzLnRvU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxuICAgIH0pO1xuICB9XG59Il19