cdk-nextjs
Version:
Deploy Next.js apps on AWS with CDK
49 lines • 8.67 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NextjsRegionalContainers = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const constants_1 = require("../constants");
const nextjs_base_construct_1 = require("./nextjs-base-construct");
const nextjs_containers_1 = require("../nextjs-compute/nextjs-containers");
/**
* Deploy Next.js load balanced with containers. Uses [Application Load
* Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
* for load balancing and [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)
* for containers.
*/
class NextjsRegionalContainers extends nextjs_base_construct_1.NextjsBaseConstruct {
get url() {
return `http://${this.nextjsContainers.albFargateService.loadBalancer.loadBalancerDnsName}`;
}
constructor(scope, id, props) {
super(scope, id, props, constants_1.NextjsType.REGIONAL_CONTAINERS);
this.props = props;
this.nextjsContainers = this.createNextjsLoadBalancedContainers();
this.nextjsFileSystem.allowCompute({
connections: this.nextjsContainers.albFargateService.service.connections,
role: this.nextjsContainers.albFargateService.taskDefinition.taskRole,
});
}
createNextjsLoadBalancedContainers() {
if (!this.nextjsBuild.imageForNextjsContainers) {
throw new Error("nextjsBuild.imageForNextjsContainers 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,
overrides: this.props.overrides?.nextjsContainers,
relativeEntrypointPath: this.nextjsBuild.relativePathToEntrypoint,
vpc: this.nextjsVpc.vpc,
...this.props.overrides?.nextjsRegionalContainers?.nextjsContainerProps,
});
}
}
exports.NextjsRegionalContainers = NextjsRegionalContainers;
_a = JSII_RTTI_SYMBOL_1;
NextjsRegionalContainers[_a] = { fqn: "cdk-nextjs.NextjsRegionalContainers", version: "0.4.14" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dGpzLXJlZ2lvbmFsLWNvbnRhaW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1jb250YWluZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNENBQTBDO0FBQzFDLG1FQUtpQztBQUVqQywyRUFHNkM7QUF3QjdDOzs7OztHQUtHO0FBQ0gsTUFBYSx3QkFBeUIsU0FBUSwyQ0FBbUI7SUFFL0QsSUFBSSxHQUFHO1FBQ0wsT0FBTyxVQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsbUJBQ3ZELEVBQUUsQ0FBQztJQUNMLENBQUM7SUFJRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFvQztRQUVwQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDeEUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsUUFBUTtTQUN0RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0NBQWtDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3BELFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVztZQUM5QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQ2pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCO1lBQzNELFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtZQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlO1lBQy9DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO1lBQ2pELHNCQUFzQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCO1lBQ2pFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUc7WUFDdkIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0I7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF4Q0gsNERBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBOZXh0anNCYXNlQ29uc3RydWN0T3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlT3ZlcnJpZGVzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0LFxuICBOZXh0anNCYXNlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1iYXNlLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHNcIjtcbmltcG9ydCB7XG4gIE5leHRqc0NvbnRhaW5lcnMsXG4gIE5leHRqc0NvbnRhaW5lcnNPdmVycmlkZXMsXG59IGZyb20gXCIuLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29udGFpbmVyc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlc1xuICBleHRlbmRzIE5leHRqc0Jhc2VDb25zdHJ1Y3RPdmVycmlkZXMge1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJQcm9wcz86IE9wdGlvbmFsTmV4dGpzQ29udGFpbmVyc1Byb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgYE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc2AuIE92ZXJyaWRlcyBhcmUgbG93ZXIgbGV2ZWwgdGhhblxuICogcHJvcHMgYW5kIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gQ0RLIENvbnN0cnVjdHMgZ2l2aW5nIHlvdSBtb3JlIGNvbnRyb2wuIEl0J3NcbiAqIHJlY29tbWVuZGVkIHRvIHVzZSBjYXV0aW9uIGFuZCByZXZpZXcgc291cmNlIGNvZGUgc28geW91IGtub3cgaG93IHRoZXkncmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNPdmVycmlkZXMgZXh0ZW5kcyBOZXh0anNCYXNlT3ZlcnJpZGVzIHtcbiAgcmVhZG9ubHkgbmV4dGpzUmVnaW9uYWxDb250YWluZXJzPzogTmV4dGpzUmVnaW9uYWxDb250YWluZXJzQ29uc3RydWN0T3ZlcnJpZGVzO1xuICByZWFkb25seSBuZXh0anNDb250YWluZXJzPzogTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNQcm9wcyBleHRlbmRzIE5leHRqc0Jhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBwcm9wcyBvZiBhbnkgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogTmV4dGpzUmVnaW9uYWxDb250YWluZXJzT3ZlcnJpZGVzO1xufVxuXG4vKipcbiAqIERlcGxveSBOZXh0LmpzIGxvYWQgYmFsYW5jZWQgd2l0aCBjb250YWluZXJzLiBVc2VzIFtBcHBsaWNhdGlvbiBMb2FkXG4gKiBCYWxhbmNlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9hcHBsaWNhdGlvbi9pbnRyb2R1Y3Rpb24uaHRtbClcbiAqIGZvciBsb2FkIGJhbGFuY2luZyBhbmQgW0FXUyBGYXJnYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9BV1NfRmFyZ2F0ZS5odG1sKVxuICogZm9yIGNvbnRhaW5lcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXh0anNSZWdpb25hbENvbnRhaW5lcnMgZXh0ZW5kcyBOZXh0anNCYXNlQ29uc3RydWN0IHtcbiAgbmV4dGpzQ29udGFpbmVyczogTmV4dGpzQ29udGFpbmVycztcbiAgZ2V0IHVybCgpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly8ke1xuICAgICAgdGhpcy5uZXh0anNDb250YWluZXJzLmFsYkZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJEbnNOYW1lXG4gICAgfWA7XG4gIH1cblxuICBwcml2YXRlIHByb3BzOiBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNQcm9wcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCBOZXh0anNUeXBlLlJFR0lPTkFMX0NPTlRBSU5FUlMpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLm5leHRqc0NvbnRhaW5lcnMgPSB0aGlzLmNyZWF0ZU5leHRqc0xvYWRCYWxhbmNlZENvbnRhaW5lcnMoKTtcbiAgICB0aGlzLm5leHRqc0ZpbGVTeXN0ZW0uYWxsb3dDb21wdXRlKHtcbiAgICAgIGNvbm5lY3Rpb25zOiB0aGlzLm5leHRqc0NvbnRhaW5lcnMuYWxiRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZS5jb25uZWN0aW9ucyxcbiAgICAgIHJvbGU6IHRoaXMubmV4dGpzQ29udGFpbmVycy5hbGJGYXJnYXRlU2VydmljZS50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV4dGpzTG9hZEJhbGFuY2VkQ29udGFpbmVycygpIHtcbiAgICBpZiAoIXRoaXMubmV4dGpzQnVpbGQuaW1hZ2VGb3JOZXh0anNDb250YWluZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJuZXh0anNCdWlsZC5pbWFnZUZvck5leHRqc0NvbnRhaW5lcnMgaXMgdW5kZWZpbmVkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE5leHRqc0NvbnRhaW5lcnModGhpcywgXCJOZXh0anNDb250YWluZXJzXCIsIHtcbiAgICAgIGFjY2Vzc1BvaW50OiB0aGlzLm5leHRqc0ZpbGVTeXN0ZW0uYWNjZXNzUG9pbnQsXG4gICAgICBidWlsZElkOiB0aGlzLm5leHRqc0J1aWxkLmJ1aWxkSWQsXG4gICAgICBkb2NrZXJJbWFnZUFzc2V0OiB0aGlzLm5leHRqc0J1aWxkLmltYWdlRm9yTmV4dGpzQ29udGFpbmVycyxcbiAgICAgIGZpbGVTeXN0ZW06IHRoaXMubmV4dGpzRmlsZVN5c3RlbS5maWxlU3lzdGVtLFxuICAgICAgaGVhbHRoQ2hlY2tQYXRoOiB0aGlzLmJhc2VQcm9wcy5oZWFsdGhDaGVja1BhdGgsXG4gICAgICBuZXh0anNUeXBlOiB0aGlzLm5leHRqc1R5cGUsXG4gICAgICBvdmVycmlkZXM6IHRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNDb250YWluZXJzLFxuICAgICAgcmVsYXRpdmVFbnRyeXBvaW50UGF0aDogdGhpcy5uZXh0anNCdWlsZC5yZWxhdGl2ZVBhdGhUb0VudHJ5cG9pbnQsXG4gICAgICB2cGM6IHRoaXMubmV4dGpzVnBjLnZwYyxcbiAgICAgIC4uLnRoaXMucHJvcHMub3ZlcnJpZGVzPy5uZXh0anNSZWdpb25hbENvbnRhaW5lcnM/Lm5leHRqc0NvbnRhaW5lclByb3BzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=