UNPKG

cdk-efs-assets

Version:

Amazon EFS assets from Github repositories or S3 buckets

74 lines 9.41 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatefulFargateNginx = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const ec2 = require("aws-cdk-lib/aws-ec2"); const ecs = require("aws-cdk-lib/aws-ecs"); const efs = require("aws-cdk-lib/aws-efs"); const constructs_1 = require("constructs"); const efs_fargate_site_1 = require("./efs-fargate-site"); const synced_access_point_1 = require("./synced-access-point"); class StatefulFargateNginx extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); this.props = props; this.vpc = this.props.vpc ?? this._createVpc(); const staticSiteTask = new ecs.FargateTaskDefinition(this, 'FargateStaticSiteTask', { cpu: 256, memoryLimitMiB: 512, }); const nginx = staticSiteTask.addContainer('nginx', { image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'), logging: new ecs.AwsLogDriver({ streamPrefix: 'nginx' }), }); nginx.addPortMappings({ containerPort: 80 }); nginx.addMountPoints({ containerPath: '/usr/share/nginx/html', sourceVolume: 'efs-storage', readOnly: true, }); new efs_fargate_site_1.EfsFargateSite(this, 'StatefulSite', { vpc: this.vpc, accessPoint: this.createSyncedAccessPoint(), task: staticSiteTask, }); } _createVpc() { return new ec2.Vpc(this, 'Vpc', { maxAzs: 3, natGateways: 1 }); } ; _createEfsFileSystem() { return new efs.FileSystem(this, 'Filesystem', { vpc: this.vpc, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, }); } createSyncedAccessPoint() { const efsSyncedAccessPoint = new synced_access_point_1.SyncedAccessPoint(this, 'GithubSyncedAccessPoint', { vpc: this.vpc, fileSystem: this.props.efsFileSystem ?? this._createEfsFileSystem(), path: '/demo-github', createAcl: { ownerGid: '1001', ownerUid: '1001', permissions: '0755', }, posixUser: { uid: '1001', gid: '1001', }, syncSource: new synced_access_point_1.GithubSyncSource({ vpc: this.vpc, repository: this.props.github ?? 'https://github.com/cristurm/nyan-cat.git', syncDirectoryPath: '/', }), }); return efsSyncedAccessPoint; } } exports.StatefulFargateNginx = StatefulFargateNginx; _a = JSII_RTTI_SYMBOL_1; StatefulFargateNginx[_a] = { fqn: "cdk-efs-assets.StatefulFargateNginx", version: "0.3.95" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVmdWwtZmFyZ2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZWZ1bC1mYXJnYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTRDO0FBQzVDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLDJDQUF1QztBQUN2Qyx5REFBb0Q7QUFDcEQsK0RBQTRFO0FBdUI1RSxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBR2pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0M7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDbEYsR0FBRyxFQUFFLEdBQUc7WUFDUixjQUFjLEVBQUUsR0FBRztTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUNqRCxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsbUNBQW1DLENBQUM7WUFDM0UsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUN6RCxDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0MsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUNuQixhQUFhLEVBQUUsdUJBQXVCO1lBQ3RDLFlBQVksRUFBRSxhQUFhO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxpQ0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDdkMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsV0FBVyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUMzQyxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ08sVUFBVTtRQUNoQixPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQUEsQ0FBQztJQUNNLG9CQUFvQjtRQUMxQixPQUFPLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzVDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNNLHVCQUF1QjtRQUM1QixNQUFNLG9CQUFvQixHQUFHLElBQUksdUNBQWlCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQ2xGLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDbkUsSUFBSSxFQUFFLGNBQWM7WUFDcEIsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxNQUFNO2dCQUNoQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsV0FBVyxFQUFFLE1BQU07YUFDcEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsR0FBRyxFQUFFLE1BQU07YUFDWjtZQUNELFVBQVUsRUFBRSxJQUFJLHNDQUFnQixDQUFDO2dCQUMvQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLDBDQUEwQztnQkFDM0UsaUJBQWlCLEVBQUUsR0FBRzthQUN2QixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDOztBQTFESCxvREEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWZzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lZnMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFZnNGYXJnYXRlU2l0ZSB9IGZyb20gJy4vZWZzLWZhcmdhdGUtc2l0ZSc7XG5pbXBvcnQgeyBTeW5jZWRBY2Nlc3NQb2ludCwgR2l0aHViU3luY1NvdXJjZSB9IGZyb20gJy4vc3luY2VkLWFjY2Vzcy1wb2ludCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZWZ1bEZhcmdhdGVOZ2lueFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgZm9yIHRoZSBmYXJnYXRlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgYSBuZXcgVlBDXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFRoZSBnaXRodWIgcmVwb3NpdG9yeSB0byBjbG9uZSBhcyB0aGUgZG9jIHJvb3Qgb2YgdGhlIG5naW54XG4gICAqIEBkZWZhdWx0IGh0dHBzOi8vZ2l0aHViLmNvbS9jcmlzdHVybS9ueWFuLWNhdC5naXRcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBFRlMgRmlsZXNTeXN0ZW0gYXMgdGhlIHN0YXRlZnVsIHNoYXJlZCBzdG9yYWdlIG9mIHRoZSBGYXJnYXRlIHNlcnZpY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgYSBuZXcgRUZTIEZpbGVTeXN0ZW1cbiAgICovXG4gIHJlYWRvbmx5IGVmc0ZpbGVTeXN0ZW0/OiBlZnMuSUZpbGVTeXN0ZW07XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZWZ1bEZhcmdhdGVOZ2lueCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcHJvcHM6IFN0YXRlZnVsRmFyZ2F0ZU5naW54UHJvcHM7XG4gIHByaXZhdGUgdnBjOiBlYzIuSVZwYztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YXRlZnVsRmFyZ2F0ZU5naW54UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnZwYyA9IHRoaXMucHJvcHMudnBjID8/IHRoaXMuX2NyZWF0ZVZwYygpO1xuXG4gICAgY29uc3Qgc3RhdGljU2l0ZVRhc2sgPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbih0aGlzLCAnRmFyZ2F0ZVN0YXRpY1NpdGVUYXNrJywge1xuICAgICAgY3B1OiAyNTYsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogNTEyLFxuICAgIH0pO1xuICAgIGNvbnN0IG5naW54ID0gc3RhdGljU2l0ZVRhc2suYWRkQ29udGFpbmVyKCduZ2lueCcsIHtcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KCdwdWJsaWMuZWNyLmF3cy9uZ2lueC9uZ2lueDpsYXRlc3QnKSxcbiAgICAgIGxvZ2dpbmc6IG5ldyBlY3MuQXdzTG9nRHJpdmVyKHsgc3RyZWFtUHJlZml4OiAnbmdpbngnIH0pLFxuICAgIH0pO1xuICAgIG5naW54LmFkZFBvcnRNYXBwaW5ncyh7IGNvbnRhaW5lclBvcnQ6IDgwIH0pO1xuICAgIG5naW54LmFkZE1vdW50UG9pbnRzKHtcbiAgICAgIGNvbnRhaW5lclBhdGg6ICcvdXNyL3NoYXJlL25naW54L2h0bWwnLFxuICAgICAgc291cmNlVm9sdW1lOiAnZWZzLXN0b3JhZ2UnLFxuICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgfSk7XG4gICAgbmV3IEVmc0ZhcmdhdGVTaXRlKHRoaXMsICdTdGF0ZWZ1bFNpdGUnLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgYWNjZXNzUG9pbnQ6IHRoaXMuY3JlYXRlU3luY2VkQWNjZXNzUG9pbnQoKSxcbiAgICAgIHRhc2s6IHN0YXRpY1NpdGVUYXNrLFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgX2NyZWF0ZVZwYygpOiBlYzIuVnBjIHtcbiAgICByZXR1cm4gbmV3IGVjMi5WcGModGhpcywgJ1ZwYycsIHsgbWF4QXpzOiAzLCBuYXRHYXRld2F5czogMSB9KTtcbiAgfTtcbiAgcHJpdmF0ZSBfY3JlYXRlRWZzRmlsZVN5c3RlbSgpOiBlZnMuRmlsZVN5c3RlbSB7XG4gICAgcmV0dXJuIG5ldyBlZnMuRmlsZVN5c3RlbSh0aGlzLCAnRmlsZXN5c3RlbScsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gIH1cbiAgcHVibGljIGNyZWF0ZVN5bmNlZEFjY2Vzc1BvaW50KCk6IFN5bmNlZEFjY2Vzc1BvaW50IHtcbiAgICBjb25zdCBlZnNTeW5jZWRBY2Nlc3NQb2ludCA9IG5ldyBTeW5jZWRBY2Nlc3NQb2ludCh0aGlzLCAnR2l0aHViU3luY2VkQWNjZXNzUG9pbnQnLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZmlsZVN5c3RlbTogdGhpcy5wcm9wcy5lZnNGaWxlU3lzdGVtID8/IHRoaXMuX2NyZWF0ZUVmc0ZpbGVTeXN0ZW0oKSxcbiAgICAgIHBhdGg6ICcvZGVtby1naXRodWInLFxuICAgICAgY3JlYXRlQWNsOiB7XG4gICAgICAgIG93bmVyR2lkOiAnMTAwMScsXG4gICAgICAgIG93bmVyVWlkOiAnMTAwMScsXG4gICAgICAgIHBlcm1pc3Npb25zOiAnMDc1NScsXG4gICAgICB9LFxuICAgICAgcG9zaXhVc2VyOiB7XG4gICAgICAgIHVpZDogJzEwMDEnLFxuICAgICAgICBnaWQ6ICcxMDAxJyxcbiAgICAgIH0sXG4gICAgICBzeW5jU291cmNlOiBuZXcgR2l0aHViU3luY1NvdXJjZSh7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIHJlcG9zaXRvcnk6IHRoaXMucHJvcHMuZ2l0aHViID8/ICdodHRwczovL2dpdGh1Yi5jb20vY3Jpc3R1cm0vbnlhbi1jYXQuZ2l0JyxcbiAgICAgICAgc3luY0RpcmVjdG9yeVBhdGg6ICcvJyxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIHJldHVybiBlZnNTeW5jZWRBY2Nlc3NQb2ludDtcbiAgfVxufVxuIl19