@ctxpipe/aws-cdk 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +108 -0
  2. package/lib/ctxpipe.d.ts +19 -0
  3. package/lib/ctxpipe.d.ts.map +1 -0
  4. package/lib/ctxpipe.js +232 -0
  5. package/lib/ctxpipe.js.map +1 -0
  6. package/lib/index.d.ts +3 -0
  7. package/lib/index.d.ts.map +1 -0
  8. package/lib/index.js +6 -0
  9. package/lib/index.js.map +1 -0
  10. package/lib/internal/contracts.d.ts +119 -0
  11. package/lib/internal/contracts.d.ts.map +1 -0
  12. package/lib/internal/contracts.js +3 -0
  13. package/lib/internal/contracts.js.map +1 -0
  14. package/lib/internal/data-plane-construct.d.ts +7 -0
  15. package/lib/internal/data-plane-construct.d.ts.map +1 -0
  16. package/lib/internal/data-plane-construct.js +114 -0
  17. package/lib/internal/data-plane-construct.js.map +1 -0
  18. package/lib/internal/ingress-construct.d.ts +7 -0
  19. package/lib/internal/ingress-construct.d.ts.map +1 -0
  20. package/lib/internal/ingress-construct.js +94 -0
  21. package/lib/internal/ingress-construct.js.map +1 -0
  22. package/lib/internal/migrate-on-deploy-construct.d.ts +7 -0
  23. package/lib/internal/migrate-on-deploy-construct.d.ts.map +1 -0
  24. package/lib/internal/migrate-on-deploy-construct.js +208 -0
  25. package/lib/internal/migrate-on-deploy-construct.js.map +1 -0
  26. package/lib/internal/networking-construct.d.ts +7 -0
  27. package/lib/internal/networking-construct.d.ts.map +1 -0
  28. package/lib/internal/networking-construct.js +112 -0
  29. package/lib/internal/networking-construct.js.map +1 -0
  30. package/lib/internal/outputs-construct.d.ts +6 -0
  31. package/lib/internal/outputs-construct.d.ts.map +1 -0
  32. package/lib/internal/outputs-construct.js +65 -0
  33. package/lib/internal/outputs-construct.js.map +1 -0
  34. package/lib/internal/secrets-construct.d.ts +7 -0
  35. package/lib/internal/secrets-construct.d.ts.map +1 -0
  36. package/lib/internal/secrets-construct.js +211 -0
  37. package/lib/internal/secrets-construct.js.map +1 -0
  38. package/lib/internal/services-construct.d.ts +7 -0
  39. package/lib/internal/services-construct.d.ts.map +1 -0
  40. package/lib/internal/services-construct.js +123 -0
  41. package/lib/internal/services-construct.js.map +1 -0
  42. package/lib/internal/task-definitions-construct.d.ts +8 -0
  43. package/lib/internal/task-definitions-construct.d.ts.map +1 -0
  44. package/lib/internal/task-definitions-construct.js +204 -0
  45. package/lib/internal/task-definitions-construct.js.map +1 -0
  46. package/lib/pinned-service-image-tag.d.ts +7 -0
  47. package/lib/pinned-service-image-tag.d.ts.map +1 -0
  48. package/lib/pinned-service-image-tag.js +11 -0
  49. package/lib/pinned-service-image-tag.js.map +1 -0
  50. package/lib/types.d.ts +51 -0
  51. package/lib/types.d.ts.map +1 -0
  52. package/lib/types.js +3 -0
  53. package/lib/types.js.map +1 -0
  54. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-plane-construct.js","sourceRoot":"","sources":["../../src/internal/data-plane-construct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Construct } from "constructs";
2
+ import type { IngressConstructProps, IngressResources } from "./contracts";
3
+ export declare class IngressConstruct extends Construct {
4
+ readonly resources: IngressResources;
5
+ constructor(scope: Construct, id: string, props: IngressConstructProps);
6
+ }
7
+ //# sourceMappingURL=ingress-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingress-construct.d.ts","sourceRoot":"","sources":["../../src/internal/ingress-construct.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3E,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,SAAgB,SAAS,EAAE,gBAAgB,CAAC;gBAEzB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;CAyD9E"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.IngressConstruct = void 0;
37
+ const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2"));
38
+ const route53 = __importStar(require("aws-cdk-lib/aws-route53"));
39
+ const route53Targets = __importStar(require("aws-cdk-lib/aws-route53-targets"));
40
+ const constructs_1 = require("constructs");
41
+ class IngressConstruct extends constructs_1.Construct {
42
+ resources;
43
+ constructor(scope, id, props) {
44
+ super(scope, id);
45
+ const httpsListener = props.networking.alb.addListener("HttpsListener", {
46
+ port: 443,
47
+ protocol: elbv2.ApplicationProtocol.HTTPS,
48
+ sslPolicy: elbv2.SslPolicy.RECOMMENDED_TLS,
49
+ open: true,
50
+ certificates: [props.customDomain.certificate],
51
+ });
52
+ httpsListener.addTargets("BackendHttpsTarget", {
53
+ targets: [
54
+ props.backendService.loadBalancerTarget({
55
+ containerName: "backend",
56
+ containerPort: 3000,
57
+ }),
58
+ ],
59
+ port: 3000,
60
+ protocol: elbv2.ApplicationProtocol.HTTP,
61
+ healthCheck: {
62
+ path: "/.status",
63
+ healthyHttpCodes: "200-399",
64
+ },
65
+ });
66
+ props.networking.httpListener.addAction("HttpRedirect", {
67
+ action: elbv2.ListenerAction.redirect({
68
+ protocol: "HTTPS",
69
+ port: "443",
70
+ permanent: true,
71
+ }),
72
+ });
73
+ // Trailing dot makes the record name an FQDN so CDK does not append
74
+ // `zone.zoneName` to it. This lets callers import the hosted zone with
75
+ // only its ID (e.g. `HostedZone.fromHostedZoneId(...)`), where
76
+ // `zoneName` is an unresolved token.
77
+ const fqdnRecordName = `${props.customDomain.domainName}.`;
78
+ new route53.ARecord(this, "AlbAliasA", {
79
+ zone: props.customDomain.hostedZone,
80
+ recordName: fqdnRecordName,
81
+ target: route53.RecordTarget.fromAlias(new route53Targets.LoadBalancerTarget(props.networking.alb)),
82
+ });
83
+ new route53.AaaaRecord(this, "AlbAliasAaaa", {
84
+ zone: props.customDomain.hostedZone,
85
+ recordName: fqdnRecordName,
86
+ target: route53.RecordTarget.fromAlias(new route53Targets.LoadBalancerTarget(props.networking.alb)),
87
+ });
88
+ this.resources = {
89
+ appUrl: `https://${props.customDomain.domainName}`,
90
+ };
91
+ }
92
+ }
93
+ exports.IngressConstruct = IngressConstruct;
94
+ //# sourceMappingURL=ingress-construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingress-construct.js","sourceRoot":"","sources":["../../src/internal/ingress-construct.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8EAAgE;AAChE,iEAAmD;AACnD,gFAAkE;AAClE,2CAAuC;AAGvC,MAAa,gBAAiB,SAAQ,sBAAS;IAC7B,SAAS,CAAmB;IAE5C,YAAmB,KAAgB,EAAE,EAAU,EAAE,KAA4B;QAC3E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEjB,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE;YACtE,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,KAAK;YACzC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe;YAC1C,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;QACH,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE;YAC7C,OAAO,EAAE;gBACP,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBACtC,aAAa,EAAE,SAAS;oBACxB,aAAa,EAAE,IAAI;iBACpB,CAAC;aACH;YACD,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,IAAI;YACxC,WAAW,EAAE;gBACX,IAAI,EAAE,UAAU;gBAChB,gBAAgB,EAAE,SAAS;aAC5B;SACF,CAAC,CAAC;QAEH,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE;YACtD,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACpC,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,IAAI;aAChB,CAAC;SACH,CAAC,CAAC;QAEH,oEAAoE;QACpE,uEAAuE;QACvE,+DAA+D;QAC/D,qCAAqC;QACrC,MAAM,cAAc,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE;YACrC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU;YACnC,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CACpC,IAAI,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAC5D;SACF,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE;YAC3C,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU;YACnC,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CACpC,IAAI,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAC5D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG;YACf,MAAM,EAAE,WAAW,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;SACnD,CAAC;IACJ,CAAC;CACF;AA5DD,4CA4DC"}
@@ -0,0 +1,7 @@
1
+ import { Construct } from "constructs";
2
+ import type { MigrateOnDeployConstructProps, MigrateOnDeployResources } from "./contracts";
3
+ export declare class MigrateOnDeployConstruct extends Construct {
4
+ readonly resources: MigrateOnDeployResources;
5
+ constructor(scope: Construct, id: string, props: MigrateOnDeployConstructProps);
6
+ }
7
+ //# sourceMappingURL=migrate-on-deploy-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-on-deploy-construct.d.ts","sourceRoot":"","sources":["../../src/internal/migrate-on-deploy-construct.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAIrB,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,SAAgB,SAAS,EAAE,wBAAwB,CAAC;gBAEjC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B;CAkLtF"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MigrateOnDeployConstruct = void 0;
37
+ const cdk = __importStar(require("aws-cdk-lib"));
38
+ const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
39
+ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
40
+ const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
41
+ const cr = __importStar(require("aws-cdk-lib/custom-resources"));
42
+ const constructs_1 = require("constructs");
43
+ const PROVIDER_FUNCTION_TIMEOUT_SECONDS = 900;
44
+ class MigrateOnDeployConstruct extends constructs_1.Construct {
45
+ resources;
46
+ constructor(scope, id, props) {
47
+ super(scope, id);
48
+ const onEventHandler = new lambda.Function(this, "MigrateOnEvent", {
49
+ runtime: lambda.Runtime.NODEJS_20_X,
50
+ handler: "index.onEvent",
51
+ timeout: cdk.Duration.seconds(PROVIDER_FUNCTION_TIMEOUT_SECONDS),
52
+ code: lambda.Code.fromInline(`
53
+ const { ECSClient, RunTaskCommand } = require("@aws-sdk/client-ecs");
54
+
55
+ exports.onEvent = async (event) => {
56
+ if (event.RequestType === "Delete") {
57
+ return {
58
+ PhysicalResourceId: event.PhysicalResourceId || "ctxpipe-migrate",
59
+ Data: { Skipped: "true" },
60
+ };
61
+ }
62
+
63
+ const properties = event.ResourceProperties;
64
+ const ecs = new ECSClient({});
65
+ const runTaskResponse = await ecs.send(
66
+ new RunTaskCommand({
67
+ cluster: properties.ClusterArn,
68
+ taskDefinition: properties.TaskDefinitionArn,
69
+ launchType: "FARGATE",
70
+ networkConfiguration: {
71
+ awsvpcConfiguration: {
72
+ subnets: properties.SubnetIds,
73
+ securityGroups: properties.SecurityGroupIds,
74
+ assignPublicIp: "DISABLED",
75
+ },
76
+ },
77
+ }),
78
+ );
79
+
80
+ if (!runTaskResponse.tasks || runTaskResponse.tasks.length === 0) {
81
+ const failures = (runTaskResponse.failures || []).map((failure) => ({
82
+ arn: failure.arn,
83
+ reason: failure.reason,
84
+ detail: failure.detail,
85
+ }));
86
+ throw new Error("Failed to start migration task: " + JSON.stringify(failures));
87
+ }
88
+
89
+ const taskArn = runTaskResponse.tasks[0].taskArn;
90
+ if (!taskArn) {
91
+ throw new Error("Migration task started without task ARN");
92
+ }
93
+
94
+ return {
95
+ PhysicalResourceId: "ctxpipe-migrate",
96
+ Data: {
97
+ ClusterArn: properties.ClusterArn,
98
+ TaskArn: taskArn,
99
+ },
100
+ };
101
+ };
102
+ `),
103
+ });
104
+ const isCompleteHandler = new lambda.Function(this, "MigrateIsComplete", {
105
+ runtime: lambda.Runtime.NODEJS_20_X,
106
+ handler: "index.isComplete",
107
+ timeout: cdk.Duration.seconds(PROVIDER_FUNCTION_TIMEOUT_SECONDS),
108
+ code: lambda.Code.fromInline(`
109
+ const { ECSClient, DescribeTasksCommand } = require("@aws-sdk/client-ecs");
110
+
111
+ exports.isComplete = async (event) => {
112
+ if (event.RequestType === "Delete") {
113
+ return { IsComplete: true };
114
+ }
115
+
116
+ const clusterArn = event.Data.ClusterArn;
117
+ const taskArn = event.Data.TaskArn;
118
+ if (!clusterArn || !taskArn) {
119
+ throw new Error("Missing migration task identifiers");
120
+ }
121
+
122
+ const ecs = new ECSClient({});
123
+ const describeResponse = await ecs.send(
124
+ new DescribeTasksCommand({
125
+ cluster: clusterArn,
126
+ tasks: [taskArn],
127
+ }),
128
+ );
129
+
130
+ if (describeResponse.failures && describeResponse.failures.length > 0) {
131
+ throw new Error("Failed to describe migration task: " + JSON.stringify(describeResponse.failures));
132
+ }
133
+
134
+ const task = describeResponse.tasks && describeResponse.tasks[0];
135
+ if (!task) {
136
+ throw new Error("Migration task not found in DescribeTasks");
137
+ }
138
+
139
+ if (task.lastStatus !== "STOPPED") {
140
+ return { IsComplete: false };
141
+ }
142
+
143
+ const nonZeroExitContainer = (task.containers || []).find((container) => (container.exitCode || 0) !== 0);
144
+ if (nonZeroExitContainer) {
145
+ throw new Error(
146
+ "Migration task failed: " +
147
+ JSON.stringify({
148
+ stoppedReason: task.stoppedReason,
149
+ stopCode: task.stopCode,
150
+ containerName: nonZeroExitContainer.name,
151
+ exitCode: nonZeroExitContainer.exitCode,
152
+ reason: nonZeroExitContainer.reason,
153
+ }),
154
+ );
155
+ }
156
+
157
+ return {
158
+ IsComplete: true,
159
+ Data: {
160
+ StoppedReason: task.stoppedReason || "COMPLETED",
161
+ },
162
+ };
163
+ };
164
+ `),
165
+ });
166
+ const passRoleArns = [
167
+ props.tasks.migrateTask.taskRole.roleArn,
168
+ props.tasks.migrateTask.executionRole?.roleArn,
169
+ ].filter((arn) => arn !== undefined);
170
+ onEventHandler.addToRolePolicy(new iam.PolicyStatement({
171
+ actions: ["ecs:RunTask"],
172
+ resources: [props.tasks.migrateTask.taskDefinitionArn],
173
+ }));
174
+ onEventHandler.addToRolePolicy(new iam.PolicyStatement({
175
+ actions: ["iam:PassRole"],
176
+ resources: passRoleArns,
177
+ }));
178
+ isCompleteHandler.addToRolePolicy(new iam.PolicyStatement({
179
+ actions: ["ecs:DescribeTasks"],
180
+ resources: ["*"],
181
+ }));
182
+ const provider = new cr.Provider(this, "MigrateProvider", {
183
+ onEventHandler,
184
+ isCompleteHandler,
185
+ queryInterval: cdk.Duration.seconds(10),
186
+ totalTimeout: cdk.Duration.seconds(PROVIDER_FUNCTION_TIMEOUT_SECONDS),
187
+ });
188
+ const migrateResource = new cdk.CustomResource(this, "RunMigrations", {
189
+ serviceToken: provider.serviceToken,
190
+ serviceTimeout: cdk.Duration.seconds(PROVIDER_FUNCTION_TIMEOUT_SECONDS),
191
+ properties: {
192
+ ClusterArn: props.networking.cluster.clusterArn,
193
+ TaskDefinitionArn: props.tasks.migrateTask.taskDefinitionArn,
194
+ SubnetIds: props.networking.vpc
195
+ .selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS })
196
+ .subnetIds,
197
+ SecurityGroupIds: [props.networking.appSecurityGroup.securityGroupId],
198
+ },
199
+ });
200
+ migrateResource.node.addDependency(props.dataPlane.dbCluster);
201
+ migrateResource.node.addDependency(props.secrets.databaseUrlSecret);
202
+ this.resources = {
203
+ migrateResource,
204
+ };
205
+ }
206
+ }
207
+ exports.MigrateOnDeployConstruct = MigrateOnDeployConstruct;
208
+ //# sourceMappingURL=migrate-on-deploy-construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-on-deploy-construct.js","sourceRoot":"","sources":["../../src/internal/migrate-on-deploy-construct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Construct } from "constructs";
2
+ import type { NetworkingConstructProps, NetworkingResources } from "./contracts";
3
+ export declare class NetworkingConstruct extends Construct {
4
+ readonly resources: NetworkingResources;
5
+ constructor(scope: Construct, id: string, props: NetworkingConstructProps);
6
+ }
7
+ //# sourceMappingURL=networking-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networking-construct.d.ts","sourceRoot":"","sources":["../../src/internal/networking-construct.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,SAAgB,SAAS,EAAE,mBAAmB,CAAC;gBAE5B,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB;CAgGjF"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NetworkingConstruct = void 0;
37
+ const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
38
+ const ecs = __importStar(require("aws-cdk-lib/aws-ecs"));
39
+ const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2"));
40
+ const constructs_1 = require("constructs");
41
+ class NetworkingConstruct extends constructs_1.Construct {
42
+ resources;
43
+ constructor(scope, id, props) {
44
+ super(scope, id);
45
+ const vpc = new ec2.Vpc(this, "Vpc", {
46
+ maxAzs: props.maxAzs,
47
+ natGateways: props.natGateways,
48
+ subnetConfiguration: [
49
+ {
50
+ name: "public",
51
+ subnetType: ec2.SubnetType.PUBLIC,
52
+ cidrMask: 24,
53
+ },
54
+ {
55
+ name: "private",
56
+ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
57
+ cidrMask: 24,
58
+ },
59
+ ],
60
+ });
61
+ const appSecurityGroup = new ec2.SecurityGroup(this, "AppSecurityGroup", {
62
+ vpc,
63
+ allowAllOutbound: true,
64
+ });
65
+ appSecurityGroup.addIngressRule(appSecurityGroup, ec2.Port.tcp(3002), "Allow ECS services to reach UI on 3002");
66
+ appSecurityGroup.addIngressRule(appSecurityGroup, ec2.Port.tcp(3001), "Allow ECS services to reach codesearch on 3001");
67
+ const dbSecurityGroup = new ec2.SecurityGroup(this, "DbSecurityGroup", {
68
+ vpc,
69
+ allowAllOutbound: true,
70
+ });
71
+ dbSecurityGroup.addIngressRule(appSecurityGroup, ec2.Port.tcp(5432), "Allow PostgreSQL from ECS services");
72
+ const neptuneSecurityGroup = new ec2.SecurityGroup(this, "NeptuneSecurityGroup", {
73
+ vpc,
74
+ allowAllOutbound: true,
75
+ });
76
+ neptuneSecurityGroup.addIngressRule(appSecurityGroup, ec2.Port.tcp(8182), "Allow Neptune from ECS services");
77
+ const efsSecurityGroup = new ec2.SecurityGroup(this, "EfsSecurityGroup", {
78
+ vpc,
79
+ allowAllOutbound: true,
80
+ });
81
+ efsSecurityGroup.addIngressRule(appSecurityGroup, ec2.Port.tcp(2049), "Allow NFS from ECS services");
82
+ const cluster = new ecs.Cluster(this, "Cluster", {
83
+ vpc,
84
+ defaultCloudMapNamespace: {
85
+ name: "ctxpipe.local",
86
+ },
87
+ });
88
+ const alb = new elbv2.ApplicationLoadBalancer(this, "Alb", {
89
+ vpc,
90
+ internetFacing: true,
91
+ vpcSubnets: {
92
+ subnetType: ec2.SubnetType.PUBLIC,
93
+ },
94
+ });
95
+ const httpListener = alb.addListener("HttpListener", {
96
+ port: 80,
97
+ open: true,
98
+ });
99
+ this.resources = {
100
+ vpc,
101
+ appSecurityGroup,
102
+ dbSecurityGroup,
103
+ neptuneSecurityGroup,
104
+ efsSecurityGroup,
105
+ cluster,
106
+ alb,
107
+ httpListener,
108
+ };
109
+ }
110
+ }
111
+ exports.NetworkingConstruct = NetworkingConstruct;
112
+ //# sourceMappingURL=networking-construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networking-construct.js","sourceRoot":"","sources":["../../src/internal/networking-construct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Construct } from "constructs";
2
+ import type { OutputsConstructProps } from "./contracts";
3
+ export declare class OutputsConstruct extends Construct {
4
+ constructor(scope: Construct, id: string, props: OutputsConstructProps);
5
+ }
6
+ //# sourceMappingURL=outputs-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs-construct.d.ts","sourceRoot":"","sources":["../../src/internal/outputs-construct.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,SAAS;gBAC1B,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;CAyB9E"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.OutputsConstruct = void 0;
37
+ const cdk = __importStar(require("aws-cdk-lib"));
38
+ const constructs_1 = require("constructs");
39
+ class OutputsConstruct extends constructs_1.Construct {
40
+ constructor(scope, id, props) {
41
+ super(scope, id);
42
+ new cdk.CfnOutput(this, "AppUrl", {
43
+ value: props.appUrl,
44
+ });
45
+ new cdk.CfnOutput(this, "AlbDnsName", {
46
+ value: props.albDnsName,
47
+ });
48
+ new cdk.CfnOutput(this, "DatabaseUrlSecretArn", {
49
+ value: props.databaseUrlSecretArn,
50
+ });
51
+ new cdk.CfnOutput(this, "ModelProviderSecretArn", {
52
+ value: props.modelProviderSecretArn,
53
+ });
54
+ new cdk.CfnOutput(this, "SmtpSecretArn", {
55
+ value: props.smtpSecretArn,
56
+ });
57
+ if (props.connectorSecretArn) {
58
+ new cdk.CfnOutput(this, "ConnectorSecretArn", {
59
+ value: props.connectorSecretArn,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ exports.OutputsConstruct = OutputsConstruct;
65
+ //# sourceMappingURL=outputs-construct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs-construct.js","sourceRoot":"","sources":["../../src/internal/outputs-construct.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,2CAAuC;AAGvC,MAAa,gBAAiB,SAAQ,sBAAS;IAC7C,YAAmB,KAAgB,EAAE,EAAU,EAAE,KAA4B;QAC3E,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEjB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE;YAChC,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE;YACpC,KAAK,EAAE,KAAK,CAAC,UAAU;SACxB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE;YAC9C,KAAK,EAAE,KAAK,CAAC,oBAAoB;SAClC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE;YAChD,KAAK,EAAE,KAAK,CAAC,sBAAsB;SACpC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,aAAa;SAC3B,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,oBAAoB,EAAE;gBAC5C,KAAK,EAAE,KAAK,CAAC,kBAAkB;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA1BD,4CA0BC"}
@@ -0,0 +1,7 @@
1
+ import { Construct } from "constructs";
2
+ import type { SecretsConstructProps, SecretsResources } from "./contracts";
3
+ export declare class SecretsConstruct extends Construct {
4
+ readonly resources: SecretsResources;
5
+ constructor(scope: Construct, id: string, props: SecretsConstructProps);
6
+ }
7
+ //# sourceMappingURL=secrets-construct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-construct.d.ts","sourceRoot":"","sources":["../../src/internal/secrets-construct.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3E,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,SAAgB,SAAS,EAAE,gBAAgB,CAAC;gBAEzB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;CA6M9E"}