UNPKG

awscdk-mediatailor-cloudfront-construct

Version:

CDK Construct to associate MediaTailor config with CloudFront distribution

78 lines 12.8 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudFront = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront"); const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins"); const constructs_1 = require("constructs"); class CloudFront extends constructs_1.Construct { constructor(scope, id, { videoContentSourceUrl, mediaTailorEndpointUrl, adSegmentSourceUrl, }) { super(scope, id); // Create content origin const videoContentOrigin = new aws_cloudfront_origins_1.HttpOrigin(aws_cdk_lib_1.Fn.select(2, aws_cdk_lib_1.Fn.split('/', videoContentSourceUrl)), { originSslProtocols: [aws_cloudfront_1.OriginSslPolicy.SSL_V3], protocolPolicy: aws_cloudfront_1.OriginProtocolPolicy.HTTPS_ONLY, }); // Create MediaTailor origin const mediaTailorOrigin = new aws_cloudfront_origins_1.HttpOrigin(aws_cdk_lib_1.Fn.select(2, aws_cdk_lib_1.Fn.split('/', mediaTailorEndpointUrl)), { originSslProtocols: [aws_cloudfront_1.OriginSslPolicy.SSL_V3], protocolPolicy: aws_cloudfront_1.OriginProtocolPolicy.HTTPS_ONLY, }); // Create Transcoded Ad origin const transocdedAdOrigin = new aws_cloudfront_origins_1.HttpOrigin(adSegmentSourceUrl ? aws_cdk_lib_1.Fn.select(2, aws_cdk_lib_1.Fn.split('/', videoContentSourceUrl)) : `segments.mediatailor.${aws_cdk_lib_1.Aws.REGION}.amazonaws.com`, { originSslProtocols: [aws_cloudfront_1.OriginSslPolicy.SSL_V3], protocolPolicy: aws_cloudfront_1.OriginProtocolPolicy.HTTPS_ONLY, }); // Create CloudFront distribution const distribution = new aws_cloudfront_1.Distribution(this, 'Distribution', { comment: `${aws_cdk_lib_1.Aws.STACK_NAME} - CloudFront distribution for MediaTailor`, defaultRootObject: '', minimumProtocolVersion: aws_cloudfront_1.SecurityPolicyProtocol.TLS_V1_2016, defaultBehavior: { origin: videoContentOrigin, cachePolicy: aws_cloudfront_1.CachePolicy.ELEMENTAL_MEDIA_PACKAGE, allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_ALL, viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, }, additionalBehaviors: { '/v1/m*': { origin: mediaTailorOrigin, cachePolicy: aws_cloudfront_1.CachePolicy.ELEMENTAL_MEDIA_PACKAGE, allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_ALL, viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, originRequestPolicy: aws_cloudfront_1.OriginRequestPolicy.ELEMENTAL_MEDIA_TAILOR, }, '/v1/dash/*': { origin: mediaTailorOrigin, cachePolicy: aws_cloudfront_1.CachePolicy.ELEMENTAL_MEDIA_PACKAGE, allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_ALL, viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, originRequestPolicy: aws_cloudfront_1.OriginRequestPolicy.ELEMENTAL_MEDIA_TAILOR, }, '/tm/*': { origin: transocdedAdOrigin, cachePolicy: aws_cloudfront_1.CachePolicy.ELEMENTAL_MEDIA_PACKAGE, allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_ALL, viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, originRequestPolicy: aws_cloudfront_1.OriginRequestPolicy.CORS_S3_ORIGIN, }, '/v1/segment/*': { origin: mediaTailorOrigin, cachePolicy: aws_cloudfront_1.CachePolicy.ELEMENTAL_MEDIA_PACKAGE, allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_ALL, viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS, originRequestPolicy: aws_cloudfront_1.OriginRequestPolicy.ELEMENTAL_MEDIA_TAILOR, }, }, }); this.distribution = distribution; } } exports.CloudFront = CloudFront; _a = JSII_RTTI_SYMBOL_1; CloudFront[_a] = { fqn: "awscdk-mediatailor-cloudfront-construct.CloudFront", version: "0.0.43" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xvdWRGcm9udC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbG91ZEZyb250LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXNDO0FBQ3RDLCtEQVNvQztBQUNwQywrRUFBZ0U7QUFDaEUsMkNBQXVDO0FBUXZDLE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBR3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsRUFDeEMscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsR0FDRjtRQUVoQixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLHdCQUF3QjtRQUN4QixNQUFNLGtCQUFrQixHQUFHLElBQUksbUNBQVUsQ0FDdkMsZ0JBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLGdCQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLEVBQ2xEO1lBQ0Usa0JBQWtCLEVBQUUsQ0FBQyxnQ0FBZSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxjQUFjLEVBQUUscUNBQW9CLENBQUMsVUFBVTtTQUNoRCxDQUNGLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLG1DQUFVLENBQ3RDLGdCQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxFQUNuRDtZQUNFLGtCQUFrQixFQUFFLENBQUMsZ0NBQWUsQ0FBQyxNQUFNLENBQUM7WUFDNUMsY0FBYyxFQUFFLHFDQUFvQixDQUFDLFVBQVU7U0FDaEQsQ0FDRixDQUFDO1FBRUYsOEJBQThCO1FBQzlCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxtQ0FBVSxDQUN2QyxrQkFBa0I7WUFDaEIsQ0FBQyxDQUFDLGdCQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsd0JBQXdCLGlCQUFHLENBQUMsTUFBTSxnQkFBZ0IsRUFDdEQ7WUFDRSxrQkFBa0IsRUFBRSxDQUFDLGdDQUFlLENBQUMsTUFBTSxDQUFDO1lBQzVDLGNBQWMsRUFBRSxxQ0FBb0IsQ0FBQyxVQUFVO1NBQ2hELENBQ0YsQ0FBQztRQUVGLGlDQUFpQztRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLDZCQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUMxRCxPQUFPLEVBQUUsR0FBRyxpQkFBRyxDQUFDLFVBQVUsNENBQTRDO1lBQ3RFLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsc0JBQXNCLEVBQUUsdUNBQXNCLENBQUMsV0FBVztZQUMxRCxlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLGtCQUFrQjtnQkFDMUIsV0FBVyxFQUFFLDRCQUFXLENBQUMsdUJBQXVCO2dCQUNoRCxjQUFjLEVBQUUsK0JBQWMsQ0FBQyxTQUFTO2dCQUN4QyxvQkFBb0IsRUFBRSxxQ0FBb0IsQ0FBQyxpQkFBaUI7YUFDN0Q7WUFDRCxtQkFBbUIsRUFBRTtnQkFDbkIsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRSxpQkFBaUI7b0JBQ3pCLFdBQVcsRUFBRSw0QkFBVyxDQUFDLHVCQUF1QjtvQkFDaEQsY0FBYyxFQUFFLCtCQUFjLENBQUMsU0FBUztvQkFDeEMsb0JBQW9CLEVBQUUscUNBQW9CLENBQUMsaUJBQWlCO29CQUM1RCxtQkFBbUIsRUFBRSxvQ0FBbUIsQ0FBQyxzQkFBc0I7aUJBQ2hFO2dCQUNELFlBQVksRUFBRTtvQkFDWixNQUFNLEVBQUUsaUJBQWlCO29CQUN6QixXQUFXLEVBQUUsNEJBQVcsQ0FBQyx1QkFBdUI7b0JBQ2hELGNBQWMsRUFBRSwrQkFBYyxDQUFDLFNBQVM7b0JBQ3hDLG9CQUFvQixFQUFFLHFDQUFvQixDQUFDLGlCQUFpQjtvQkFDNUQsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsc0JBQXNCO2lCQUNoRTtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsV0FBVyxFQUFFLDRCQUFXLENBQUMsdUJBQXVCO29CQUNoRCxjQUFjLEVBQUUsK0JBQWMsQ0FBQyxTQUFTO29CQUN4QyxvQkFBb0IsRUFBRSxxQ0FBb0IsQ0FBQyxpQkFBaUI7b0JBQzVELG1CQUFtQixFQUFFLG9DQUFtQixDQUFDLGNBQWM7aUJBQ3hEO2dCQUNELGVBQWUsRUFBRTtvQkFDZixNQUFNLEVBQUUsaUJBQWlCO29CQUN6QixXQUFXLEVBQUUsNEJBQVcsQ0FBQyx1QkFBdUI7b0JBQ2hELGNBQWMsRUFBRSwrQkFBYyxDQUFDLFNBQVM7b0JBQ3hDLG9CQUFvQixFQUFFLHFDQUFvQixDQUFDLGlCQUFpQjtvQkFDNUQsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsc0JBQXNCO2lCQUNoRTthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQzs7QUFwRkgsZ0NBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzLCBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gIE9yaWdpblNzbFBvbGljeSxcbiAgT3JpZ2luUHJvdG9jb2xQb2xpY3ksXG4gIERpc3RyaWJ1dGlvbixcbiAgU2VjdXJpdHlQb2xpY3lQcm90b2NvbCxcbiAgVmlld2VyUHJvdG9jb2xQb2xpY3ksXG4gIENhY2hlUG9saWN5LFxuICBBbGxvd2VkTWV0aG9kcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgSHR0cE9yaWdpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGcm9udFByb3BzIHtcbiAgcmVhZG9ubHkgdmlkZW9Db250ZW50U291cmNlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lZGlhVGFpbG9yRW5kcG9pbnRVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYWRTZWdtZW50U291cmNlVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2xvdWRGcm9udCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBkaXN0cmlidXRpb246IERpc3RyaWJ1dGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB7XG4gICAgdmlkZW9Db250ZW50U291cmNlVXJsLFxuICAgIG1lZGlhVGFpbG9yRW5kcG9pbnRVcmwsXG4gICAgYWRTZWdtZW50U291cmNlVXJsLFxuICB9OiBDbG91ZEZyb250UHJvcHMpIHtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBDcmVhdGUgY29udGVudCBvcmlnaW5cbiAgICBjb25zdCB2aWRlb0NvbnRlbnRPcmlnaW4gPSBuZXcgSHR0cE9yaWdpbihcbiAgICAgIEZuLnNlbGVjdCgyLCBGbi5zcGxpdCgnLycsIHZpZGVvQ29udGVudFNvdXJjZVVybCkpLFxuICAgICAge1xuICAgICAgICBvcmlnaW5Tc2xQcm90b2NvbHM6IFtPcmlnaW5Tc2xQb2xpY3kuU1NMX1YzXSxcbiAgICAgICAgcHJvdG9jb2xQb2xpY3k6IE9yaWdpblByb3RvY29sUG9saWN5LkhUVFBTX09OTFksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTWVkaWFUYWlsb3Igb3JpZ2luXG4gICAgY29uc3QgbWVkaWFUYWlsb3JPcmlnaW4gPSBuZXcgSHR0cE9yaWdpbihcbiAgICAgIEZuLnNlbGVjdCgyLCBGbi5zcGxpdCgnLycsIG1lZGlhVGFpbG9yRW5kcG9pbnRVcmwpKSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luU3NsUHJvdG9jb2xzOiBbT3JpZ2luU3NsUG9saWN5LlNTTF9WM10sXG4gICAgICAgIHByb3RvY29sUG9saWN5OiBPcmlnaW5Qcm90b2NvbFBvbGljeS5IVFRQU19PTkxZLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIFRyYW5zY29kZWQgQWQgb3JpZ2luXG4gICAgY29uc3QgdHJhbnNvY2RlZEFkT3JpZ2luID0gbmV3IEh0dHBPcmlnaW4oXG4gICAgICBhZFNlZ21lbnRTb3VyY2VVcmxcbiAgICAgICAgPyBGbi5zZWxlY3QoMiwgRm4uc3BsaXQoJy8nLCB2aWRlb0NvbnRlbnRTb3VyY2VVcmwpKVxuICAgICAgICA6IGBzZWdtZW50cy5tZWRpYXRhaWxvci4ke0F3cy5SRUdJT059LmFtYXpvbmF3cy5jb21gLFxuICAgICAge1xuICAgICAgICBvcmlnaW5Tc2xQcm90b2NvbHM6IFtPcmlnaW5Tc2xQb2xpY3kuU1NMX1YzXSxcbiAgICAgICAgcHJvdG9jb2xQb2xpY3k6IE9yaWdpblByb3RvY29sUG9saWN5LkhUVFBTX09OTFksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAgICBjb25zdCBkaXN0cmlidXRpb24gPSBuZXcgRGlzdHJpYnV0aW9uKHRoaXMsICdEaXN0cmlidXRpb24nLCB7XG4gICAgICBjb21tZW50OiBgJHtBd3MuU1RBQ0tfTkFNRX0gLSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBmb3IgTWVkaWFUYWlsb3JgLFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6ICcnLFxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvbjogU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMjAxNixcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjogeyAvLyBITFMvREFTSCBzZWdtZW50XG4gICAgICAgIG9yaWdpbjogdmlkZW9Db250ZW50T3JpZ2luLFxuICAgICAgICBjYWNoZVBvbGljeTogQ2FjaGVQb2xpY3kuRUxFTUVOVEFMX01FRElBX1BBQ0tBR0UsXG4gICAgICAgIGFsbG93ZWRNZXRob2RzOiBBbGxvd2VkTWV0aG9kcy5BTExPV19BTEwsXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOiB7XG4gICAgICAgICcvdjEvbSonOiB7IC8vIE1lZGlhVGFpbG9yIEhMUyBtYW5pZmVzdFxuICAgICAgICAgIG9yaWdpbjogbWVkaWFUYWlsb3JPcmlnaW4sXG4gICAgICAgICAgY2FjaGVQb2xpY3k6IENhY2hlUG9saWN5LkVMRU1FTlRBTF9NRURJQV9QQUNLQUdFLFxuICAgICAgICAgIGFsbG93ZWRNZXRob2RzOiBBbGxvd2VkTWV0aG9kcy5BTExPV19BTEwsXG4gICAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3k6IE9yaWdpblJlcXVlc3RQb2xpY3kuRUxFTUVOVEFMX01FRElBX1RBSUxPUixcbiAgICAgICAgfSxcbiAgICAgICAgJy92MS9kYXNoLyonOiB7IC8vIE1lZGlhVGFpbG9yIERBU0ggbWFuaWZlc3RcbiAgICAgICAgICBvcmlnaW46IG1lZGlhVGFpbG9yT3JpZ2luLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBDYWNoZVBvbGljeS5FTEVNRU5UQUxfTUVESUFfUEFDS0FHRSxcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMLFxuICAgICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBPcmlnaW5SZXF1ZXN0UG9saWN5LkVMRU1FTlRBTF9NRURJQV9UQUlMT1IsXG4gICAgICAgIH0sXG4gICAgICAgICcvdG0vKic6IHsgLy8gTWVkaWFUYWlsb3IgdHJhbnNjb2RlZCBBZCBzZWdtZW50c1xuICAgICAgICAgIG9yaWdpbjogdHJhbnNvY2RlZEFkT3JpZ2luLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBDYWNoZVBvbGljeS5FTEVNRU5UQUxfTUVESUFfUEFDS0FHRSxcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMLFxuICAgICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBPcmlnaW5SZXF1ZXN0UG9saWN5LkNPUlNfUzNfT1JJR0lOLFxuICAgICAgICB9LFxuICAgICAgICAnL3YxL3NlZ21lbnQvKic6IHsgLy8gTWVkaWFUYWlsb3Igc2VydmVyLXNpZGUgdHJhY2tpbmdcbiAgICAgICAgICBvcmlnaW46IG1lZGlhVGFpbG9yT3JpZ2luLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBDYWNoZVBvbGljeS5FTEVNRU5UQUxfTUVESUFfUEFDS0FHRSxcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMLFxuICAgICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBPcmlnaW5SZXF1ZXN0UG9saWN5LkVMRU1FTlRBTF9NRURJQV9UQUlMT1IsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kaXN0cmlidXRpb24gPSBkaXN0cmlidXRpb247XG4gIH1cbn0iXX0=