UNPKG

cdk-nextjs

Version:

Deploy Next.js apps on AWS with CDK

64 lines 12 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.NextjsGlobalContainers = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const constants_1 = require("../constants"); const nextjs_containers_1 = require("../nextjs-compute/nextjs-containers"); const nextjs_distribution_1 = require("../nextjs-distribution"); const nextjs_base_construct_1 = require("./nextjs-base-construct"); /** * Deploy Next.js globally distributed with containers. Uses [CloudFront * Distribution](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html) * as Content Delivery Network (CDN) for global distribution and [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) * for containers. */ class NextjsGlobalContainers extends nextjs_base_construct_1.NextjsBaseConstruct { get url() { return `https://${this.nextjsDistribution.distribution.domainName}`; } constructor(scope, id, props) { super(scope, id, props, constants_1.NextjsType.GLOBAL_CONTAINERS); this.props = props; this.nextjsContainers = this.createNextjsContainers(); this.nextjsFileSystem.allowCompute({ connections: this.nextjsContainers.albFargateService.service.connections, role: this.nextjsContainers.albFargateService.taskDefinition.taskRole, }); this.nextjsDistribution = this.createNextjsDistribution(); } createNextjsContainers() { if (!this.nextjsBuild.imageForNextjsContainers) { throw new Error("nextjsBuild.dockerImageAsset is undefined"); } return new nextjs_containers_1.NextjsContainers(this, "NextjsContainers", { accessPoint: this.nextjsFileSystem.accessPoint, buildId: this.nextjsBuild.buildId, dockerImageAsset: this.nextjsBuild.imageForNextjsContainers, fileSystem: this.nextjsFileSystem.fileSystem, healthCheckPath: this.baseProps.healthCheckPath, nextjsType: this.nextjsType, relativeEntrypointPath: this.nextjsBuild.relativePathToEntrypoint, overrides: this.props.overrides?.nextjsContainers, vpc: this.nextjsVpc.vpc, ...this.props.overrides?.nextjsGlobalContainers?.nextjsContainersProps, }); } createNextjsDistribution() { return new nextjs_distribution_1.NextjsDistribution(this, "NextjsDistribution", { assetsBucket: this.nextjsStaticAssets.bucket, basePath: this.props.basePath, certificate: this.nextjsContainers.albFargateService.certificate, distribution: this.props.distribution, loadBalancer: this.nextjsContainers.albFargateService.loadBalancer, nextjsType: this.nextjsType, overrides: this.props.overrides?.nextjsDistribution, publicDirEntries: this.nextjsBuild.publicDirEntries, ...this.props.overrides?.nextjsGlobalContainers?.nextjsDistributionProps, }); } } exports.NextjsGlobalContainers = NextjsGlobalContainers; _a = JSII_RTTI_SYMBOL_1; NextjsGlobalContainers[_a] = { fqn: "cdk-nextjs.NextjsGlobalContainers", version: "0.4.10" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLWdsb2JhbC1jb250YWluZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtZ2xvYmFsLWNvbnRhaW5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSw0Q0FBMEM7QUFHMUMsMkVBRzZDO0FBQzdDLGdFQUdnQztBQUNoQyxtRUFLaUM7QUErQmpDOzs7OztHQUtHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSwyQ0FBbUI7SUFHN0QsSUFBSSxHQUFHO1FBQ0wsT0FBTyxXQUFXLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUlELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxzQkFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7WUFDakMsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVztZQUN4RSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxRQUFRO1NBQ3RFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBQ08sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUM5QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQ2pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCO1lBQzNELFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlO1lBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixzQkFBc0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QjtZQUNqRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO1lBQ2pELEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7WUFDdkIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUI7U0FDdkUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNPLHdCQUF3QjtRQUM5QixPQUFPLElBQUksd0NBQWtCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hELFlBQVksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsV0FBVztZQUNoRSxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ3JDLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsWUFBWTtZQUNsRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGtCQUFrQjtZQUNuRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQjtZQUNuRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QjtTQUN6RSxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXBESCx3REFxREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXN0cmlidXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXh0anNUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHNcIjtcbmltcG9ydCB7IE9wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wc1wiO1xuaW1wb3J0IHtcbiAgTmV4dGpzQ29udGFpbmVycyxcbiAgTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1jb21wdXRlL25leHRqcy1jb250YWluZXJzXCI7XG5pbXBvcnQge1xuICBOZXh0anNEaXN0cmlidXRpb24sXG4gIE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcyxcbn0gZnJvbSBcIi4uL25leHRqcy1kaXN0cmlidXRpb25cIjtcbmltcG9ydCB7XG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VPdmVycmlkZXMsXG4gIE5leHRqc0Jhc2VDb25zdHJ1Y3QsXG4gIE5leHRqc0Jhc2VQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLWJhc2UtY29uc3RydWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlc1xuICBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzUHJvcHM/OiBPcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wcztcbiAgcmVhZG9ubHkgbmV4dGpzRGlzdHJpYnV0aW9uUHJvcHM/OiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc0dsb2JhbENvbnRhaW5lcnNgLiBPdmVycmlkZXMgYXJlIGxvd2VyIGxldmVsIHRoYW5cbiAqIHByb3BzIGFuZCBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIENESyBDb25zdHJ1Y3RzIGdpdmluZyB5b3UgbW9yZSBjb250cm9sLiBJdCdzXG4gKiByZWNvbW1lbmRlZCB0byB1c2UgY2F1dGlvbiBhbmQgcmV2aWV3IHNvdXJjZSBjb2RlIHNvIHlvdSBrbm93IGhvdyB0aGV5J3JlIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyBleHRlbmRzIE5leHRqc0Jhc2VPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNHbG9iYWxDb250YWluZXJzPzogTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcztcbiAgcmVhZG9ubHkgbmV4dGpzQ29udGFpbmVycz86IE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXM7XG4gIHJlYWRvbmx5IG5leHRqc0Rpc3RyaWJ1dGlvbj86IE5leHRqc0Rpc3RyaWJ1dGlvbk92ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNHbG9iYWxDb250YWluZXJzUHJvcHMgZXh0ZW5kcyBOZXh0anNCYXNlUHJvcHMge1xuICAvKipcbiAgICogQnJpbmcgeW91ciBvd24gZGlzdHJpYnV0aW9uLiBDYW4gYmUgdXNlZCB3aXRoIGBiYXNlUGF0aGAgdG8gaG9zdCBtdWx0aXBsZVxuICAgKiBhcHBzIG9uIHRoZSBzYW1lIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogT3ZlcnJpZGUgcHJvcHMgb2YgYW55IGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IE5leHRqc0dsb2JhbENvbnRhaW5lcnNPdmVycmlkZXM7XG59XG5cbi8qKlxuICogRGVwbG95IE5leHQuanMgZ2xvYmFsbHkgZGlzdHJpYnV0ZWQgd2l0aCBjb250YWluZXJzLiBVc2VzIFtDbG91ZEZyb250XG4gKiBEaXN0cmlidXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kaXN0cmlidXRpb24td29ya2luZy13aXRoLmh0bWwpXG4gKiBhcyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgKENETikgZm9yIGdsb2JhbCBkaXN0cmlidXRpb24gYW5kIFtBV1MgRmFyZ2F0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvQVdTX0ZhcmdhdGUuaHRtbClcbiAqIGZvciBjb250YWluZXJzLlxuICovXG5leHBvcnQgY2xhc3MgTmV4dGpzR2xvYmFsQ29udGFpbmVycyBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3Qge1xuICBuZXh0anNDb250YWluZXJzOiBOZXh0anNDb250YWluZXJzO1xuICBuZXh0anNEaXN0cmlidXRpb246IE5leHRqc0Rpc3RyaWJ1dGlvbjtcbiAgZ2V0IHVybCgpIHtcbiAgICByZXR1cm4gYGh0dHBzOi8vJHt0aGlzLm5leHRqc0Rpc3RyaWJ1dGlvbi5kaXN0cmlidXRpb24uZG9tYWluTmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9wczogTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCBOZXh0anNUeXBlLkdMT0JBTF9DT05UQUlORVJTKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5uZXh0anNDb250YWluZXJzID0gdGhpcy5jcmVhdGVOZXh0anNDb250YWluZXJzKCk7XG4gICAgdGhpcy5uZXh0anNGaWxlU3lzdGVtLmFsbG93Q29tcHV0ZSh7XG4gICAgICBjb25uZWN0aW9uczogdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLnNlcnZpY2UuY29ubmVjdGlvbnMsXG4gICAgICByb2xlOiB0aGlzLm5leHRqc0NvbnRhaW5lcnMuYWxiRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUsXG4gICAgfSk7XG4gICAgdGhpcy5uZXh0anNEaXN0cmlidXRpb24gPSB0aGlzLmNyZWF0ZU5leHRqc0Rpc3RyaWJ1dGlvbigpO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzQ29udGFpbmVycygpIHtcbiAgICBpZiAoIXRoaXMubmV4dGpzQnVpbGQuaW1hZ2VGb3JOZXh0anNDb250YWluZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJuZXh0anNCdWlsZC5kb2NrZXJJbWFnZUFzc2V0IGlzIHVuZGVmaW5lZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOZXh0anNDb250YWluZXJzKHRoaXMsIFwiTmV4dGpzQ29udGFpbmVyc1wiLCB7XG4gICAgICBhY2Nlc3NQb2ludDogdGhpcy5uZXh0anNGaWxlU3lzdGVtLmFjY2Vzc1BvaW50LFxuICAgICAgYnVpbGRJZDogdGhpcy5uZXh0anNCdWlsZC5idWlsZElkLFxuICAgICAgZG9ja2VySW1hZ2VBc3NldDogdGhpcy5uZXh0anNCdWlsZC5pbWFnZUZvck5leHRqc0NvbnRhaW5lcnMsXG4gICAgICBmaWxlU3lzdGVtOiB0aGlzLm5leHRqc0ZpbGVTeXN0ZW0uZmlsZVN5c3RlbSxcbiAgICAgIGhlYWx0aENoZWNrUGF0aDogdGhpcy5iYXNlUHJvcHMuaGVhbHRoQ2hlY2tQYXRoLFxuICAgICAgbmV4dGpzVHlwZTogdGhpcy5uZXh0anNUeXBlLFxuICAgICAgcmVsYXRpdmVFbnRyeXBvaW50UGF0aDogdGhpcy5uZXh0anNCdWlsZC5yZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnQsXG4gICAgICBvdmVycmlkZXM6IHRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNDb250YWluZXJzLFxuICAgICAgdnBjOiB0aGlzLm5leHRqc1ZwYy52cGMsXG4gICAgICAuLi50aGlzLnByb3BzLm92ZXJyaWRlcz8ubmV4dGpzR2xvYmFsQ29udGFpbmVycz8ubmV4dGpzQ29udGFpbmVyc1Byb3BzLFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzRGlzdHJpYnV0aW9uKCkge1xuICAgIHJldHVybiBuZXcgTmV4dGpzRGlzdHJpYnV0aW9uKHRoaXMsIFwiTmV4dGpzRGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGFzc2V0c0J1Y2tldDogdGhpcy5uZXh0anNTdGF0aWNBc3NldHMuYnVja2V0LFxuICAgICAgYmFzZVBhdGg6IHRoaXMucHJvcHMuYmFzZVBhdGgsXG4gICAgICBjZXJ0aWZpY2F0ZTogdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLmNlcnRpZmljYXRlLFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLnByb3BzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGxvYWRCYWxhbmNlcjogdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlcixcbiAgICAgIG5leHRqc1R5cGU6IHRoaXMubmV4dGpzVHlwZSxcbiAgICAgIG92ZXJyaWRlczogdGhpcy5wcm9wcy5vdmVycmlkZXM/Lm5leHRqc0Rpc3RyaWJ1dGlvbixcbiAgICAgIHB1YmxpY0RpckVudHJpZXM6IHRoaXMubmV4dGpzQnVpbGQucHVibGljRGlyRW50cmllcyxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNHbG9iYWxDb250YWluZXJzPy5uZXh0anNEaXN0cmlidXRpb25Qcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19