@fjall/components-infrastructure 0.75.2 → 0.76.0
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.
- package/dist/lib/app.d.ts +32 -8
- package/dist/lib/app.js +58 -11
- package/dist/lib/config/aws/backupGlobalSettings.d.ts +1 -1
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -1
- package/dist/lib/config/aws/cloudTrail.d.ts +1 -1
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +1 -1
- package/dist/lib/config/aws/ecrDefaultImage.d.ts +1 -1
- package/dist/lib/config/aws/ecrDefaultImage.js +2 -2
- package/dist/lib/config/aws/identityCenter.d.ts +3 -3
- package/dist/lib/config/aws/identityCenter.js +1 -1
- package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +2 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -1
- package/dist/lib/config/aws/ipam.js +2 -4
- package/dist/lib/config/aws/organisation.d.ts +3 -3
- package/dist/lib/config/aws/organisation.js +1 -1
- package/dist/lib/config/aws/organisationsAccess.d.ts +1 -1
- package/dist/lib/config/aws/organisationsAccess.js +1 -1
- package/dist/lib/config/monitoring.d.ts +18 -0
- package/dist/lib/config/monitoring.js +22 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +3 -3
- package/dist/lib/patterns/aws/buildkite.js +1 -1
- package/dist/lib/patterns/aws/compute.d.ts +8 -8
- package/dist/lib/patterns/aws/compute.js +5 -5
- package/dist/lib/patterns/aws/database.d.ts +191 -24
- package/dist/lib/patterns/aws/database.js +201 -42
- package/dist/lib/patterns/aws/fivetranProxy.d.ts +5 -5
- package/dist/lib/patterns/aws/fivetranProxy.js +1 -1
- package/dist/lib/patterns/aws/hostedZone.d.ts +2 -2
- package/dist/lib/patterns/aws/hostedZone.js +1 -1
- package/dist/lib/patterns/aws/managedAccount.d.ts +2 -2
- package/dist/lib/patterns/aws/managedAccount.js +1 -1
- package/dist/lib/patterns/aws/managedIdentityCenter.js +1 -1
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +3 -3
- package/dist/lib/patterns/aws/managedOrganisation.js +1 -1
- package/dist/lib/patterns/aws/managedPlatform.d.ts +2 -2
- package/dist/lib/patterns/aws/managedPlatform.js +2 -4
- package/dist/lib/patterns/aws/storage.d.ts +4 -55
- package/dist/lib/patterns/aws/storage.js +3 -103
- package/dist/lib/resources/aws/backup/backupPlan.d.ts +2 -2
- package/dist/lib/resources/aws/backup/backupPlan.js +1 -1
- package/dist/lib/resources/aws/backup/backupVault.d.ts +2 -2
- package/dist/lib/resources/aws/backup/backupVault.js +1 -1
- package/dist/lib/resources/aws/base/awsStack.js +1 -1
- package/dist/lib/resources/aws/compute/ec2.d.ts +3 -3
- package/dist/lib/resources/aws/compute/ec2.js +1 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +9 -9
- package/dist/lib/resources/aws/compute/ecs.js +63 -19
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +6 -7
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +3 -7
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +6 -7
- package/dist/lib/resources/aws/compute/ecsSpot.js +3 -11
- package/dist/lib/resources/aws/compute/lambda.d.ts +4 -4
- package/dist/lib/resources/aws/compute/lambda.js +1 -1
- package/dist/lib/resources/aws/database/database.d.ts +2 -2
- package/dist/lib/resources/aws/database/database.js +1 -1
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +2 -2
- package/dist/lib/resources/aws/database/databaseInstance.js +2 -2
- package/dist/lib/resources/aws/database/index.d.ts +0 -1
- package/dist/lib/resources/aws/database/index.js +1 -2
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +22 -6
- package/dist/lib/resources/aws/database/rdsAurora.js +212 -84
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +39 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +34 -5
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +16 -10
- package/dist/lib/resources/aws/database/rdsInstance.js +126 -63
- package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +2 -2
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -1
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +1 -1
- package/dist/lib/resources/aws/iam/instanceProfile.js +1 -1
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/managedPolicy.js +1 -1
- package/dist/lib/resources/aws/iam/policy.d.ts +1 -1
- package/dist/lib/resources/aws/iam/policy.js +1 -1
- package/dist/lib/resources/aws/iam/role.d.ts +1 -1
- package/dist/lib/resources/aws/iam/role.js +1 -1
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +1 -1
- package/dist/lib/resources/aws/iam/securityGroup.js +1 -1
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +2 -1
- package/dist/lib/resources/aws/logging/logGroup.d.ts +2 -2
- package/dist/lib/resources/aws/logging/logGroup.js +1 -1
- package/dist/lib/resources/aws/monitoring/index.d.ts +1 -0
- package/dist/lib/resources/aws/monitoring/index.js +18 -0
- package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +28 -0
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +69 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipam.js +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +1 -2
- package/dist/lib/resources/aws/networking/vpc.d.ts +3 -3
- package/dist/lib/resources/aws/networking/vpc.js +1 -1
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +2 -2
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +1 -1
- package/dist/lib/resources/aws/secrets/alias.d.ts +1 -1
- package/dist/lib/resources/aws/secrets/alias.js +1 -1
- package/dist/lib/resources/aws/secrets/parameter.d.ts +1 -1
- package/dist/lib/resources/aws/secrets/parameter.js +1 -1
- package/dist/lib/resources/aws/secrets/secret.d.ts +8 -4
- package/dist/lib/resources/aws/secrets/secret.js +19 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +4 -4
- package/dist/lib/resources/aws/storage/ecr.js +1 -1
- package/dist/lib/resources/aws/storage/s3.d.ts +2 -2
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/awsCustomResource.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.js +1 -1
- package/dist/lib/resources/aws/utilities/codeBuild.d.ts +1 -1
- package/dist/lib/resources/aws/utilities/codeBuild.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.d.ts +3 -3
- package/dist/lib/resources/aws/utilities/customResource.js +1 -1
- package/dist/lib/resources/aws/utilities/customResourceProvider.d.ts +2 -2
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -1
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +2 -2
- package/dist/lib/resources/aws/utilities/resourceShare.js +1 -1
- package/dist/lib/utils/getAsync.d.ts +1 -1
- package/dist/lib/utils/getAsync.js +1 -1
- package/dist/lib/utils/getConfig.d.ts +2 -2
- package/dist/lib/utils/getConfig.js +3 -3
- package/dist/lib/utils/standardTagsAspect.d.ts +2 -2
- package/dist/lib/utils/standardTagsAspect.js +6 -5
- package/dist/lib/utils/tagResource.d.ts +1 -1
- package/dist/lib/utils/tagResource.js +1 -1
- package/package.json +3 -3
- package/dist/lib/__tests__/patterns/__snapshots__/compute.test.js.snap +0 -433
- package/dist/lib/__tests__/patterns/compute.test.d.ts +0 -1
- package/dist/lib/__tests__/patterns/compute.test.js +0 -137
- package/dist/lib/__tests__/simple.test.d.ts +0 -0
- package/dist/lib/__tests__/simple.test.js +0 -12
- package/dist/lib/patterns/aws/basicApp.d.ts +0 -0
- package/dist/lib/patterns/aws/basicApp.js +0 -150
- package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -44
- package/dist/lib/patterns/aws/freeTierApp.js +0 -83
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +0 -45
- package/dist/lib/patterns/aws/spotInstanceApp.js +0 -85
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +0 -15
- package/dist/lib/resources/aws/database/databaseFreeTier.js +0 -29
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +0 -37
- package/dist/lib/resources/aws/database/rdsFreeTier.js +0 -84
- package/dist/lib/resources/aws/organisations/account.d.ts +0 -37
- package/dist/lib/resources/aws/organisations/account.js +0 -220
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +0 -14
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +0 -61
- package/dist/lib/resources/aws/organisations/index.d.ts +0 -8
- package/dist/lib/resources/aws/organisations/index.js +0 -22
- package/dist/lib/resources/aws/organisations/interfaces.d.ts +0 -105
- package/dist/lib/resources/aws/organisations/interfaces.js +0 -3
- package/dist/lib/resources/aws/organisations/organisation.d.ts +0 -47
- package/dist/lib/resources/aws/organisations/organisation.js +0 -263
- package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +0 -28
- package/dist/lib/resources/aws/organisations/organisationalUnit.js +0 -170
- package/dist/lib/resources/aws/organisations/policy.d.ts +0 -17
- package/dist/lib/resources/aws/organisations/policy.js +0 -93
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +0 -13
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +0 -58
- package/dist/lib/resources/aws/organisations/types.d.ts +0 -165
- package/dist/lib/resources/aws/organisations/types.js +0 -36
- package/dist/lib/utils/directTagging.d.ts +0 -31
- package/dist/lib/utils/directTagging.js +0 -86
- package/dist/lib/utils/fjallConstruct.d.ts +0 -8
- package/dist/lib/utils/fjallConstruct.js +0 -18
- package/dist/lib/utils/fjallStackSynthesizer.d.ts +0 -9
- package/dist/lib/utils/fjallStackSynthesizer.js +0 -22
- package/dist/lib/utils/tagContext.d.ts +0 -28
- package/dist/lib/utils/tagContext.js +0 -53
- package/dist/lib/utils/tagSynthesizer.d.ts +0 -13
- package/dist/lib/utils/tagSynthesizer.js +0 -55
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// import AwsStack, { AwsStackProps } from "../../resources/aws/base/awsStack";
|
|
3
|
-
// import { Vpc } from "../../resources/aws/networking/vpc";
|
|
4
|
-
// import Fargate, {
|
|
5
|
-
// ContainerSecret,
|
|
6
|
-
// ScalingType,
|
|
7
|
-
// Protocol
|
|
8
|
-
// } from "../../resources/aws/compute/ecs";
|
|
9
|
-
// import Database from "../../resources/aws/database/database";
|
|
10
|
-
// import { Secret } from "../../resources/aws/secrets";
|
|
11
|
-
// import { Ecr } from "../../resources/aws/storage";
|
|
12
|
-
// import { Fn, SecretValue } from "aws-cdk-lib";
|
|
13
|
-
// import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
14
|
-
// import { KeyValue } from "../../types";
|
|
15
|
-
// /**
|
|
16
|
-
// * Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
17
|
-
// * to treat these as required properties and avoid constant null checking.
|
|
18
|
-
// */
|
|
19
|
-
// export interface BasicAppPropDefaults {
|
|
20
|
-
// tags: KeyValue;
|
|
21
|
-
// serviceName: string;
|
|
22
|
-
// clusterName: string;
|
|
23
|
-
// protocol: Protocol;
|
|
24
|
-
// scalingType: ScalingType;
|
|
25
|
-
// containerPort: number;
|
|
26
|
-
// }
|
|
27
|
-
// export interface BasicAppProps {
|
|
28
|
-
// accountId?: string;
|
|
29
|
-
// clusterName?: string;
|
|
30
|
-
// containerCommand?: string[];
|
|
31
|
-
// containerEnvironment?: KeyValue;
|
|
32
|
-
// containerPort?: number;
|
|
33
|
-
// containerSecrets?: string[];
|
|
34
|
-
// environment: string;
|
|
35
|
-
// // The team/domain/business-unit that is responsible for this service
|
|
36
|
-
// owner?: string;
|
|
37
|
-
// parentDomain?: string; // Fix to make a dependency of protocol
|
|
38
|
-
// listenerPort?: number;
|
|
39
|
-
// protocol?: Protocol;
|
|
40
|
-
// region?: string;
|
|
41
|
-
// scalingType?: ScalingType;
|
|
42
|
-
// serviceName?: string;
|
|
43
|
-
// taskRoleInlinePolicies?: {
|
|
44
|
-
// [name: string]: PolicyDocument;
|
|
45
|
-
// };
|
|
46
|
-
// taskRoleManagedPolicies?: IManagedPolicy[];
|
|
47
|
-
// tags?: KeyValue;
|
|
48
|
-
// }
|
|
49
|
-
// export class BasicApp {
|
|
50
|
-
// private vpcStack: AwsStack;
|
|
51
|
-
// private databaseStack: AwsStack;
|
|
52
|
-
// private secretStack: AwsStack;
|
|
53
|
-
// private computeStack: AwsStack;
|
|
54
|
-
// constructor(id: string, rawProps: BasicAppProps) {
|
|
55
|
-
// const props = this.getProps(id, rawProps);
|
|
56
|
-
// const stackProps = this.getStackProps(props);
|
|
57
|
-
// this.vpcStack = new AwsStack(`${id}Network`, [], stackProps)
|
|
58
|
-
// .addNetwork(
|
|
59
|
-
// Vpc.build(`${id}Vpc`, {
|
|
60
|
-
// accountId: props.accountId,
|
|
61
|
-
// ipv4IpamPoolId: Fn.importValue(`IpamPoolId${props?.accountId}`),
|
|
62
|
-
// region: props.region,
|
|
63
|
-
// tags: props.tags
|
|
64
|
-
// })
|
|
65
|
-
// )
|
|
66
|
-
// .addContainerRegistry(Ecr.build(`${id}Ecr`));
|
|
67
|
-
// this.databaseStack = new AwsStack(
|
|
68
|
-
// `${id}Database`,
|
|
69
|
-
// this.vpcStack,
|
|
70
|
-
// stackProps
|
|
71
|
-
// )
|
|
72
|
-
// .addNetwork(this.vpcStack.getNetwork())
|
|
73
|
-
// .addResource(Database.build(`${id}Database`));
|
|
74
|
-
// //TODO: validate id does not contain special characters (no hyphens - no slashes etc) database instances won't allow it
|
|
75
|
-
// const dbResource = this.databaseStack.getResource(
|
|
76
|
-
// `${id}Database`
|
|
77
|
-
// ) as Database;
|
|
78
|
-
// const secretObjectValue: ContainerSecret = {};
|
|
79
|
-
// if (props.containerSecrets) {
|
|
80
|
-
// for (const secretObject of props.containerSecrets) {
|
|
81
|
-
// secretObjectValue[secretObject] = SecretValue.unsafePlainText("");
|
|
82
|
-
// }
|
|
83
|
-
// }
|
|
84
|
-
// this.secretStack = new AwsStack(`${id}Secret`, [], stackProps).addResource(
|
|
85
|
-
// Secret.build(`${id}Secret`, {
|
|
86
|
-
// secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
87
|
-
// secretObjectValue: secretObjectValue,
|
|
88
|
-
// tags: props.tags
|
|
89
|
-
// })
|
|
90
|
-
// );
|
|
91
|
-
// this.computeStack = new AwsStack(
|
|
92
|
-
// `${id}Compute`,
|
|
93
|
-
// [this.vpcStack, this.databaseStack, this.secretStack],
|
|
94
|
-
// stackProps
|
|
95
|
-
// )
|
|
96
|
-
// .addNetwork(this.vpcStack.getNetwork())
|
|
97
|
-
// .addResource(
|
|
98
|
-
// Fargate.build(`${id}Fargate`, {
|
|
99
|
-
// clusterName: props.clusterName,
|
|
100
|
-
// protocol: props.protocol,
|
|
101
|
-
// //TODO: This should work via line 126, but doesn't work (at least on update)
|
|
102
|
-
// databaseConnection: dbResource.connections,
|
|
103
|
-
// containerCommand: props.containerCommand,
|
|
104
|
-
// containerEnvironment: props.containerEnvironment,
|
|
105
|
-
// containerPort: props.containerPort,
|
|
106
|
-
// containerSecrets: secretObjectValue,
|
|
107
|
-
// ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
108
|
-
// parentDomain: props.parentDomain?.toLowerCase(),
|
|
109
|
-
// listenerPort: props.listenerPort,
|
|
110
|
-
// scalingType: props.scalingType,
|
|
111
|
-
// serviceName: props.serviceName,
|
|
112
|
-
// taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
113
|
-
// taskRoleManagedPolicies: props.taskRoleManagedPolicies,
|
|
114
|
-
// tags: props.tags
|
|
115
|
-
// })
|
|
116
|
-
// )
|
|
117
|
-
// .connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
118
|
-
// }
|
|
119
|
-
// getStackProps(props: BasicAppProps): AwsStackProps | undefined {
|
|
120
|
-
// if (!props) return;
|
|
121
|
-
// return {
|
|
122
|
-
// accountId: props.accountId,
|
|
123
|
-
// region: props.region
|
|
124
|
-
// };
|
|
125
|
-
// }
|
|
126
|
-
// getProps(
|
|
127
|
-
// id: string,
|
|
128
|
-
// rawProps: BasicAppProps
|
|
129
|
-
// ): BasicAppProps & BasicAppPropDefaults {
|
|
130
|
-
// const defaultProps = {
|
|
131
|
-
// tags: {
|
|
132
|
-
// "fjall:costAllocation:service": "app",
|
|
133
|
-
// "fjall:costAllocation:environment":
|
|
134
|
-
// rawProps.environment || "production",
|
|
135
|
-
// "fjall:costAllocation:owner": rawProps.owner || "engineer"
|
|
136
|
-
// },
|
|
137
|
-
// scalingType: ScalingType.CPU,
|
|
138
|
-
// protocol: rawProps.parentDomain ? Protocol.HTTPS : Protocol.HTTP,
|
|
139
|
-
// containerPort: 3000,
|
|
140
|
-
// serviceName: `${id}Service`,
|
|
141
|
-
// clusterName: `${id}Cluster`
|
|
142
|
-
// };
|
|
143
|
-
// return {
|
|
144
|
-
// ...defaultProps,
|
|
145
|
-
// ...rawProps
|
|
146
|
-
// };
|
|
147
|
-
// }
|
|
148
|
-
// }
|
|
149
|
-
// export default BasicApp;
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWNBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2Jhc2ljQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsNERBQTREO0FBQzVELG9CQUFvQjtBQUNwQixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYiw0Q0FBNEM7QUFDNUMsZ0VBQWdFO0FBQ2hFLHdEQUF3RDtBQUN4RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELHdFQUF3RTtBQUN4RSwwQ0FBMEM7QUFFMUMsTUFBTTtBQUNOLCtGQUErRjtBQUMvRiw2RUFBNkU7QUFDN0UsTUFBTTtBQUNOLDBDQUEwQztBQUMxQyxvQkFBb0I7QUFDcEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qix3QkFBd0I7QUFDeEIsOEJBQThCO0FBQzlCLDJCQUEyQjtBQUMzQixJQUFJO0FBRUosbUNBQW1DO0FBQ25DLHdCQUF3QjtBQUN4QiwwQkFBMEI7QUFDMUIsaUNBQWlDO0FBQ2pDLHFDQUFxQztBQUNyQyw0QkFBNEI7QUFDNUIsaUNBQWlDO0FBQ2pDLHlCQUF5QjtBQUN6QiwwRUFBMEU7QUFDMUUsb0JBQW9CO0FBQ3BCLG1FQUFtRTtBQUNuRSwyQkFBMkI7QUFDM0IseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQiwrQkFBK0I7QUFDL0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQixzQ0FBc0M7QUFDdEMsT0FBTztBQUNQLGdEQUFnRDtBQUNoRCxxQkFBcUI7QUFDckIsSUFBSTtBQUVKLDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMscUNBQXFDO0FBQ3JDLG1DQUFtQztBQUNuQyxvQ0FBb0M7QUFFcEMsdURBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCxvREFBb0Q7QUFFcEQsbUVBQW1FO0FBQ25FLHFCQUFxQjtBQUNyQixrQ0FBa0M7QUFDbEMsd0NBQXdDO0FBQ3hDLDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYixVQUFVO0FBQ1Ysc0RBQXNEO0FBRXRELHlDQUF5QztBQUN6Qyx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCLG1CQUFtQjtBQUNuQixRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hELHVEQUF1RDtBQUV2RCw4SEFBOEg7QUFFOUgseURBQXlEO0FBQ3pELHdCQUF3QjtBQUN4QixxQkFBcUI7QUFFckIscURBQXFEO0FBQ3JELG9DQUFvQztBQUNwQyw2REFBNkQ7QUFDN0QsNkVBQTZFO0FBQzdFLFVBQVU7QUFDVixRQUFRO0FBRVIsa0ZBQWtGO0FBQ2xGLHNDQUFzQztBQUN0QyxvRUFBb0U7QUFDcEUsZ0RBQWdEO0FBQ2hELDJCQUEyQjtBQUMzQixXQUFXO0FBQ1gsU0FBUztBQUVULHdDQUF3QztBQUN4Qyx3QkFBd0I7QUFDeEIsK0RBQStEO0FBQy9ELG1CQUFtQjtBQUNuQixRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hELHNCQUFzQjtBQUN0QiwwQ0FBMEM7QUFDMUMsNENBQTRDO0FBQzVDLHNDQUFzQztBQUN0Qyx5RkFBeUY7QUFDekYsd0RBQXdEO0FBQ3hELHNEQUFzRDtBQUN0RCw4REFBOEQ7QUFDOUQsZ0RBQWdEO0FBQ2hELGlEQUFpRDtBQUNqRCxpRUFBaUU7QUFDakUsNkRBQTZEO0FBQzdELDhDQUE4QztBQUM5Qyw0Q0FBNEM7QUFDNUMsNENBQTRDO0FBQzVDLGtFQUFrRTtBQUNsRSxvRUFBb0U7QUFDcEUsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYixVQUFVO0FBQ1YseURBQXlEO0FBQ3pELE1BQU07QUFFTixxRUFBcUU7QUFDckUsMEJBQTBCO0FBRTFCLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsNkJBQTZCO0FBQzdCLFNBQVM7QUFDVCxNQUFNO0FBRU4sY0FBYztBQUNkLGtCQUFrQjtBQUNsQiw4QkFBOEI7QUFDOUIsOENBQThDO0FBQzlDLDZCQUE2QjtBQUM3QixnQkFBZ0I7QUFDaEIsaURBQWlEO0FBQ2pELDhDQUE4QztBQUM5QyxrREFBa0Q7QUFDbEQscUVBQXFFO0FBQ3JFLFdBQVc7QUFDWCxzQ0FBc0M7QUFDdEMsMEVBQTBFO0FBQzFFLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFDckMsb0NBQW9DO0FBQ3BDLFNBQVM7QUFFVCxlQUFlO0FBQ2YseUJBQXlCO0FBQ3pCLG9CQUFvQjtBQUNwQixTQUFTO0FBQ1QsTUFBTTtBQUNOLElBQUk7QUFDSiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgQXdzU3RhY2ssIHsgQXdzU3RhY2tQcm9wcyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2Jhc2UvYXdzU3RhY2tcIjtcbi8vIGltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvdnBjXCI7XG4vLyBpbXBvcnQgRmFyZ2F0ZSwge1xuLy8gICBDb250YWluZXJTZWNyZXQsXG4vLyAgIFNjYWxpbmdUeXBlLFxuLy8gICBQcm90b2NvbFxuLy8gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuLy8gaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlXCI7XG4vLyBpbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG4vLyBpbXBvcnQgeyBFY3IgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zdG9yYWdlXCI7XG4vLyBpbXBvcnQgeyBGbiwgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbi8vIGltcG9ydCB7IElNYW5hZ2VkUG9saWN5LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG4vLyBpbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG4vLyAvKipcbi8vICAqIEludGVyc2VjdGVkIHdpdGggQmFzaWNBcHBQcm9wcyBpbiB0aGUgZ2V0UHJvcHMgbWV0aG9kLiBUaGlzIGFsbG93cyB0aGUgQmFzaWNBcHAgY29uc3RydWN0XG4vLyAgKiB0byB0cmVhdCB0aGVzZSBhcyByZXF1aXJlZCBwcm9wZXJ0aWVzIGFuZCBhdm9pZCBjb25zdGFudCBudWxsIGNoZWNraW5nLlxuLy8gICovXG4vLyBleHBvcnQgaW50ZXJmYWNlIEJhc2ljQXBwUHJvcERlZmF1bHRzIHtcbi8vICAgdGFnczogS2V5VmFsdWU7XG4vLyAgIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4vLyAgIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4vLyAgIHByb3RvY29sOiBQcm90b2NvbDtcbi8vICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlO1xuLy8gICBjb250YWluZXJQb3J0OiBudW1iZXI7XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQmFzaWNBcHBQcm9wcyB7XG4vLyAgIGFjY291bnRJZD86IHN0cmluZztcbi8vICAgY2x1c3Rlck5hbWU/OiBzdHJpbmc7XG4vLyAgIGNvbnRhaW5lckNvbW1hbmQ/OiBzdHJpbmdbXTtcbi8vICAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiBLZXlWYWx1ZTtcbi8vICAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcbi8vICAgY29udGFpbmVyU2VjcmV0cz86IHN0cmluZ1tdO1xuLy8gICBlbnZpcm9ubWVudDogc3RyaW5nO1xuLy8gICAvLyBUaGUgdGVhbS9kb21haW4vYnVzaW5lc3MtdW5pdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGlzIHNlcnZpY2Vcbi8vICAgb3duZXI/OiBzdHJpbmc7XG4vLyAgIHBhcmVudERvbWFpbj86IHN0cmluZzsgLy8gRml4IHRvIG1ha2UgYSBkZXBlbmRlbmN5IG9mIHByb3RvY29sXG4vLyAgIGxpc3RlbmVyUG9ydD86IG51bWJlcjtcbi8vICAgcHJvdG9jb2w/OiBQcm90b2NvbDtcbi8vICAgcmVnaW9uPzogc3RyaW5nO1xuLy8gICBzY2FsaW5nVHlwZT86IFNjYWxpbmdUeXBlO1xuLy8gICBzZXJ2aWNlTmFtZT86IHN0cmluZztcbi8vICAgdGFza1JvbGVJbmxpbmVQb2xpY2llcz86IHtcbi8vICAgICBbbmFtZTogc3RyaW5nXTogUG9saWN5RG9jdW1lbnQ7XG4vLyAgIH07XG4vLyAgIHRhc2tSb2xlTWFuYWdlZFBvbGljaWVzPzogSU1hbmFnZWRQb2xpY3lbXTtcbi8vICAgdGFncz86IEtleVZhbHVlO1xuLy8gfVxuXG4vLyBleHBvcnQgY2xhc3MgQmFzaWNBcHAge1xuLy8gICBwcml2YXRlIHZwY1N0YWNrOiBBd3NTdGFjaztcbi8vICAgcHJpdmF0ZSBkYXRhYmFzZVN0YWNrOiBBd3NTdGFjaztcbi8vICAgcHJpdmF0ZSBzZWNyZXRTdGFjazogQXdzU3RhY2s7XG4vLyAgIHByaXZhdGUgY29tcHV0ZVN0YWNrOiBBd3NTdGFjaztcblxuLy8gICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCByYXdQcm9wczogQmFzaWNBcHBQcm9wcykge1xuLy8gICAgIGNvbnN0IHByb3BzID0gdGhpcy5nZXRQcm9wcyhpZCwgcmF3UHJvcHMpO1xuLy8gICAgIGNvbnN0IHN0YWNrUHJvcHMgPSB0aGlzLmdldFN0YWNrUHJvcHMocHJvcHMpO1xuXG4vLyAgICAgdGhpcy52cGNTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1OZXR3b3JrYCwgW10sIHN0YWNrUHJvcHMpXG4vLyAgICAgICAuYWRkTmV0d29yayhcbi8vICAgICAgICAgVnBjLmJ1aWxkKGAke2lkfVZwY2AsIHtcbi8vICAgICAgICAgICBhY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZCxcbi8vICAgICAgICAgICBpcHY0SXBhbVBvb2xJZDogRm4uaW1wb3J0VmFsdWUoYElwYW1Qb29sSWQke3Byb3BzPy5hY2NvdW50SWR9YCksXG4vLyAgICAgICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4vLyAgICAgICAgICAgdGFnczogcHJvcHMudGFnc1xuLy8gICAgICAgICB9KVxuLy8gICAgICAgKVxuLy8gICAgICAgLmFkZENvbnRhaW5lclJlZ2lzdHJ5KEVjci5idWlsZChgJHtpZH1FY3JgKSk7XG5cbi8vICAgICB0aGlzLmRhdGFiYXNlU3RhY2sgPSBuZXcgQXdzU3RhY2soXG4vLyAgICAgICBgJHtpZH1EYXRhYmFzZWAsXG4vLyAgICAgICB0aGlzLnZwY1N0YWNrLFxuLy8gICAgICAgc3RhY2tQcm9wc1xuLy8gICAgIClcbi8vICAgICAgIC5hZGROZXR3b3JrKHRoaXMudnBjU3RhY2suZ2V0TmV0d29yaygpKVxuLy8gICAgICAgLmFkZFJlc291cmNlKERhdGFiYXNlLmJ1aWxkKGAke2lkfURhdGFiYXNlYCkpO1xuXG4vLyAgICAgLy9UT0RPOiB2YWxpZGF0ZSBpZCBkb2VzIG5vdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyAobm8gaHlwaGVucyAtIG5vIHNsYXNoZXMgZXRjKSBkYXRhYmFzZSBpbnN0YW5jZXMgd29uJ3QgYWxsb3cgaXRcblxuLy8gICAgIGNvbnN0IGRiUmVzb3VyY2UgPSB0aGlzLmRhdGFiYXNlU3RhY2suZ2V0UmVzb3VyY2UoXG4vLyAgICAgICBgJHtpZH1EYXRhYmFzZWBcbi8vICAgICApIGFzIERhdGFiYXNlO1xuXG4vLyAgICAgY29uc3Qgc2VjcmV0T2JqZWN0VmFsdWU6IENvbnRhaW5lclNlY3JldCA9IHt9O1xuLy8gICAgIGlmIChwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IHNlY3JldE9iamVjdCBvZiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4vLyAgICAgICAgIHNlY3JldE9iamVjdFZhbHVlW3NlY3JldE9iamVjdF0gPSBTZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoXCJcIik7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG4vLyAgICAgdGhpcy5zZWNyZXRTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1TZWNyZXRgLCBbXSwgc3RhY2tQcm9wcykuYWRkUmVzb3VyY2UoXG4vLyAgICAgICBTZWNyZXQuYnVpbGQoYCR7aWR9U2VjcmV0YCwge1xuLy8gICAgICAgICBzZWNyZXROYW1lOiBgLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbi8vICAgICAgICAgc2VjcmV0T2JqZWN0VmFsdWU6IHNlY3JldE9iamVjdFZhbHVlLFxuLy8gICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4vLyAgICAgICB9KVxuLy8gICAgICk7XG5cbi8vICAgICB0aGlzLmNvbXB1dGVTdGFjayA9IG5ldyBBd3NTdGFjayhcbi8vICAgICAgIGAke2lkfUNvbXB1dGVgLFxuLy8gICAgICAgW3RoaXMudnBjU3RhY2ssIHRoaXMuZGF0YWJhc2VTdGFjaywgdGhpcy5zZWNyZXRTdGFja10sXG4vLyAgICAgICBzdGFja1Byb3BzXG4vLyAgICAgKVxuLy8gICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4vLyAgICAgICAuYWRkUmVzb3VyY2UoXG4vLyAgICAgICAgIEZhcmdhdGUuYnVpbGQoYCR7aWR9RmFyZ2F0ZWAsIHtcbi8vICAgICAgICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4vLyAgICAgICAgICAgcHJvdG9jb2w6IHByb3BzLnByb3RvY29sLFxuLy8gICAgICAgICAgIC8vVE9ETzogVGhpcyBzaG91bGQgd29yayB2aWEgbGluZSAxMjYsIGJ1dCBkb2Vzbid0IHdvcmsgKGF0IGxlYXN0IG9uIHVwZGF0ZSlcbi8vICAgICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb246IGRiUmVzb3VyY2UuY29ubmVjdGlvbnMsXG4vLyAgICAgICAgICAgY29udGFpbmVyQ29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCxcbi8vICAgICAgICAgICBjb250YWluZXJFbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnQsXG4vLyAgICAgICAgICAgY29udGFpbmVyUG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbi8vICAgICAgICAgICBjb250YWluZXJTZWNyZXRzOiBzZWNyZXRPYmplY3RWYWx1ZSxcbi8vICAgICAgICAgICBlY3JSZXBvc2l0b3J5OiB0aGlzLnZwY1N0YWNrLmdldENvbnRhaW5lclJlZ2lzdHJ5KCksXG4vLyAgICAgICAgICAgcGFyZW50RG9tYWluOiBwcm9wcy5wYXJlbnREb21haW4/LnRvTG93ZXJDYXNlKCksXG4vLyAgICAgICAgICAgbGlzdGVuZXJQb3J0OiBwcm9wcy5saXN0ZW5lclBvcnQsXG4vLyAgICAgICAgICAgc2NhbGluZ1R5cGU6IHByb3BzLnNjYWxpbmdUeXBlLFxuLy8gICAgICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbi8vICAgICAgICAgICB0YXNrUm9sZUlubGluZVBvbGljaWVzOiBwcm9wcy50YXNrUm9sZUlubGluZVBvbGljaWVzLFxuLy8gICAgICAgICAgIHRhc2tSb2xlTWFuYWdlZFBvbGljaWVzOiBwcm9wcy50YXNrUm9sZU1hbmFnZWRQb2xpY2llcyxcbi8vICAgICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4vLyAgICAgICAgIH0pXG4vLyAgICAgICApXG4vLyAgICAgICAuY29ubmVjdChgJHtpZH1GYXJnYXRlYCwgYCR7aWR9RGF0YWJhc2VgLCA1NDMyKTtcbi8vICAgfVxuXG4vLyAgIGdldFN0YWNrUHJvcHMocHJvcHM6IEJhc2ljQXBwUHJvcHMpOiBBd3NTdGFja1Byb3BzIHwgdW5kZWZpbmVkIHtcbi8vICAgICBpZiAoIXByb3BzKSByZXR1cm47XG5cbi8vICAgICByZXR1cm4ge1xuLy8gICAgICAgYWNjb3VudElkOiBwcm9wcy5hY2NvdW50SWQsXG4vLyAgICAgICByZWdpb246IHByb3BzLnJlZ2lvblxuLy8gICAgIH07XG4vLyAgIH1cblxuLy8gICBnZXRQcm9wcyhcbi8vICAgICBpZDogc3RyaW5nLFxuLy8gICAgIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzXG4vLyAgICk6IEJhc2ljQXBwUHJvcHMgJiBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4vLyAgICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuLy8gICAgICAgdGFnczoge1xuLy8gICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIjogXCJhcHBcIixcbi8vICAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiOlxuLy8gICAgICAgICAgIHJhd1Byb3BzLmVudmlyb25tZW50IHx8IFwicHJvZHVjdGlvblwiLFxuLy8gICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IHJhd1Byb3BzLm93bmVyIHx8IFwiZW5naW5lZXJcIlxuLy8gICAgICAgfSxcbi8vICAgICAgIHNjYWxpbmdUeXBlOiBTY2FsaW5nVHlwZS5DUFUsXG4vLyAgICAgICBwcm90b2NvbDogcmF3UHJvcHMucGFyZW50RG9tYWluID8gUHJvdG9jb2wuSFRUUFMgOiBQcm90b2NvbC5IVFRQLFxuLy8gICAgICAgY29udGFpbmVyUG9ydDogMzAwMCxcbi8vICAgICAgIHNlcnZpY2VOYW1lOiBgJHtpZH1TZXJ2aWNlYCxcbi8vICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH1DbHVzdGVyYFxuLy8gICAgIH07XG5cbi8vICAgICByZXR1cm4ge1xuLy8gICAgICAgLi4uZGVmYXVsdFByb3BzLFxuLy8gICAgICAgLi4ucmF3UHJvcHNcbi8vICAgICB9O1xuLy8gICB9XG4vLyB9XG4vLyBleHBvcnQgZGVmYXVsdCBCYXNpY0FwcDtcbiJdfQ==
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { AwsStackProps } from "../../resources/aws/base/awsStack";
|
|
2
|
-
import { ScalingType } from "../../resources/aws/compute/ecs";
|
|
3
|
-
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
4
|
-
import { KeyValue } from "../../types";
|
|
5
|
-
/**
|
|
6
|
-
* Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
7
|
-
* to treat these as required properties and avoid constant null checking.
|
|
8
|
-
*/
|
|
9
|
-
export interface BasicAppPropDefaults {
|
|
10
|
-
serviceName: string;
|
|
11
|
-
clusterName: string;
|
|
12
|
-
scalingType: ScalingType;
|
|
13
|
-
containerPort: number;
|
|
14
|
-
}
|
|
15
|
-
export interface BasicAppProps {
|
|
16
|
-
account?: string;
|
|
17
|
-
clusterName?: string;
|
|
18
|
-
containerEntryPoint?: string[];
|
|
19
|
-
containerCommand?: string[];
|
|
20
|
-
containerEnvironment?: KeyValue;
|
|
21
|
-
containerPort?: number;
|
|
22
|
-
containerSecrets?: string[];
|
|
23
|
-
environment?: string;
|
|
24
|
-
owner?: string;
|
|
25
|
-
parentDomain?: string;
|
|
26
|
-
listenerPort?: number;
|
|
27
|
-
region?: string;
|
|
28
|
-
scalingType?: ScalingType;
|
|
29
|
-
serviceName?: string;
|
|
30
|
-
taskRoleInlinePolicies?: {
|
|
31
|
-
[name: string]: PolicyDocument;
|
|
32
|
-
};
|
|
33
|
-
taskRoleManagedPolicies?: IManagedPolicy[];
|
|
34
|
-
}
|
|
35
|
-
export declare class BasicApp {
|
|
36
|
-
private vpcStack;
|
|
37
|
-
private databaseStack;
|
|
38
|
-
private secretStack;
|
|
39
|
-
private computeStack;
|
|
40
|
-
constructor(id: string, rawProps: BasicAppProps);
|
|
41
|
-
getStackProps(props: BasicAppProps): AwsStackProps | undefined;
|
|
42
|
-
getProps(id: string, rawProps: BasicAppProps): BasicAppProps & BasicAppPropDefaults;
|
|
43
|
-
}
|
|
44
|
-
export default BasicApp;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BasicApp = void 0;
|
|
4
|
-
const awsStack_1 = require("../../resources/aws/base/awsStack");
|
|
5
|
-
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
6
|
-
const ecs_1 = require("../../resources/aws/compute/ecs");
|
|
7
|
-
const ecsFreeTier_1 = require("../../resources/aws/compute/ecsFreeTier");
|
|
8
|
-
const secrets_1 = require("../../resources/aws/secrets");
|
|
9
|
-
const storage_1 = require("../../resources/aws/storage");
|
|
10
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
|
-
const databaseFreeTier_1 = require("../../resources/aws/database/databaseFreeTier");
|
|
12
|
-
class BasicApp {
|
|
13
|
-
constructor(id, rawProps) {
|
|
14
|
-
const props = this.getProps(id, rawProps);
|
|
15
|
-
const stackProps = this.getStackProps(props);
|
|
16
|
-
this.vpcStack = new awsStack_1.default(`${id}Network`, [], stackProps)
|
|
17
|
-
.addNetwork(vpc_1.Vpc.build(`${id}Vpc`, {
|
|
18
|
-
region: props.region
|
|
19
|
-
}))
|
|
20
|
-
.addContainerRegistry(storage_1.Ecr.build(`${id}Ecr`));
|
|
21
|
-
this.databaseStack = new awsStack_1.default(`${id}Database`, this.vpcStack, stackProps)
|
|
22
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
23
|
-
.addResource(databaseFreeTier_1.default.build(`${id}Database`, {}));
|
|
24
|
-
// Fetches the dbResource from the databaseStack
|
|
25
|
-
const dbResource = this.databaseStack.getResource(`${id}Database`);
|
|
26
|
-
const secretObjectValue = {};
|
|
27
|
-
if (props.containerSecrets) {
|
|
28
|
-
for (const secretObject of props.containerSecrets) {
|
|
29
|
-
secretObjectValue[secretObject] = aws_cdk_lib_1.SecretValue.unsafePlainText("");
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
this.secretStack = new awsStack_1.default(`${id}Secret`, [], stackProps).addResource(secrets_1.Secret.build(`${id}Secret`, {
|
|
33
|
-
secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
34
|
-
secretObjectValue: secretObjectValue
|
|
35
|
-
}));
|
|
36
|
-
this.computeStack = new awsStack_1.default(`${id}Compute`, [this.vpcStack, this.databaseStack, this.secretStack], stackProps)
|
|
37
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
38
|
-
.addResource(ecsFreeTier_1.default.build(`${id}Fargate`, {
|
|
39
|
-
clusterName: props.clusterName,
|
|
40
|
-
//TODO: This should work via line 124, but doesn't work (at least on update)
|
|
41
|
-
databaseConnection: dbResource.databaseSecurityGroup.connections,
|
|
42
|
-
containerEntryPoint: props.containerEntryPoint,
|
|
43
|
-
containerCommand: props.containerCommand,
|
|
44
|
-
containerEnvironment: props.containerEnvironment,
|
|
45
|
-
containerPort: props.containerPort,
|
|
46
|
-
containerSecrets: secretObjectValue,
|
|
47
|
-
ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
48
|
-
parentDomain: props.parentDomain?.toLowerCase(),
|
|
49
|
-
listenerPort: props.listenerPort,
|
|
50
|
-
serviceName: props.serviceName,
|
|
51
|
-
taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
52
|
-
taskRoleManagedPolicies: props.taskRoleManagedPolicies
|
|
53
|
-
}))
|
|
54
|
-
.connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
55
|
-
}
|
|
56
|
-
getStackProps(props) {
|
|
57
|
-
if (!props)
|
|
58
|
-
return;
|
|
59
|
-
return {
|
|
60
|
-
accountId: props.account,
|
|
61
|
-
region: props.region
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
getProps(id, rawProps) {
|
|
65
|
-
const defaultProps = {
|
|
66
|
-
scalingType: ecs_1.ScalingType.CPU,
|
|
67
|
-
containerPort: rawProps.containerPort || 3000,
|
|
68
|
-
serviceName: `${id}Service`,
|
|
69
|
-
clusterName: `${id}Cluster`,
|
|
70
|
-
containerEntryPoint: ["node", "main.js"],
|
|
71
|
-
containerCommand: rawProps.containerPort
|
|
72
|
-
? [`${rawProps.containerPort}`]
|
|
73
|
-
: [`3000`]
|
|
74
|
-
};
|
|
75
|
-
return {
|
|
76
|
-
...defaultProps,
|
|
77
|
-
...rawProps
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.BasicApp = BasicApp;
|
|
82
|
-
exports.default = BasicApp;
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZVRpZXJBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2ZyZWVUaWVyQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUE0RTtBQUM1RSw0REFBeUQ7QUFDekQseURBQStFO0FBQy9FLHlFQUFpRTtBQUNqRSx5REFBcUQ7QUFDckQseURBQWtEO0FBQ2xELDZDQUEwQztBQUcxQyxvRkFBcUU7QUFtQ3JFLE1BQWEsUUFBUTtJQU1uQixZQUFZLEVBQVUsRUFBRSxRQUF1QjtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQzthQUN6RCxVQUFVLENBQ1QsU0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQ0g7YUFDQSxvQkFBb0IsQ0FBQyxhQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxrQkFBUSxDQUMvQixHQUFHLEVBQUUsVUFBVSxFQUNmLElBQUksQ0FBQyxRQUFRLEVBQ2IsVUFBVSxDQUNYO2FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdEMsV0FBVyxDQUFDLDBCQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRCxnREFBZ0Q7UUFDaEQsTUFB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LEVBQUUsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ2IsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLFlBQVk7WUFDZixHQUFHLFFBQVE7U0FDWixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBckdELDRCQXFHQztBQUNELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBd3NTdGFjaywgeyBBd3NTdGFja1Byb3BzIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IENvbnRhaW5lclNlY3JldCwgU2NhbGluZ1R5cGUgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IEVjMkNsdXN0ZXIgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NGcmVlVGllclwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuaW1wb3J0IHsgRWNyIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc3RvcmFnZVwiO1xuaW1wb3J0IHsgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElNYW5hZ2VkUG9saWN5LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlRnJlZVRpZXJcIjtcblxuLyoqXG4gKiBJbnRlcnNlY3RlZCB3aXRoIEJhc2ljQXBwUHJvcHMgaW4gdGhlIGdldFByb3BzIG1ldGhvZC4gVGhpcyBhbGxvd3MgdGhlIEJhc2ljQXBwIGNvbnN0cnVjdFxuICogdG8gdHJlYXQgdGhlc2UgYXMgcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgYXZvaWQgY29uc3RhbnQgbnVsbCBjaGVja2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIHNjYWxpbmdUeXBlOiBTY2FsaW5nVHlwZTtcbiAgY29udGFpbmVyUG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2ljQXBwUHJvcHMge1xuICBhY2NvdW50Pzogc3RyaW5nO1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgY29udGFpbmVyRW50cnlQb2ludD86IHN0cmluZ1tdO1xuICBjb250YWluZXJDb21tYW5kPzogc3RyaW5nW107XG4gIGNvbnRhaW5lckVudmlyb25tZW50PzogS2V5VmFsdWU7XG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG4gIGNvbnRhaW5lclNlY3JldHM/OiBzdHJpbmdbXTtcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIC8vIFRoZSB0ZWFtL2RvbWFpbi9idXNpbmVzcy11bml0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHRoaXMgc2VydmljZVxuICBvd25lcj86IHN0cmluZztcbiAgcGFyZW50RG9tYWluPzogc3RyaW5nOyAvLyBGaXggdG8gbWFrZSBhIGRlcGVuZGVuY3kgb2YgcHJvdG9jb2xcbiAgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHNjYWxpbmdUeXBlPzogU2NhbGluZ1R5cGU7XG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuICB0YXNrUm9sZUlubGluZVBvbGljaWVzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBQb2xpY3lEb2N1bWVudDtcbiAgfTtcbiAgdGFza1JvbGVNYW5hZ2VkUG9saWNpZXM/OiBJTWFuYWdlZFBvbGljeVtdO1xufVxuXG5leHBvcnQgY2xhc3MgQmFzaWNBcHAge1xuICBwcml2YXRlIHZwY1N0YWNrOiBBd3NTdGFjaztcbiAgcHJpdmF0ZSBkYXRhYmFzZVN0YWNrOiBBd3NTdGFjaztcbiAgcHJpdmF0ZSBzZWNyZXRTdGFjazogQXdzU3RhY2s7XG4gIHByaXZhdGUgY29tcHV0ZVN0YWNrOiBBd3NTdGFjaztcblxuICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCByYXdQcm9wczogQmFzaWNBcHBQcm9wcykge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5nZXRQcm9wcyhpZCwgcmF3UHJvcHMpO1xuICAgIGNvbnN0IHN0YWNrUHJvcHMgPSB0aGlzLmdldFN0YWNrUHJvcHMocHJvcHMpO1xuXG4gICAgdGhpcy52cGNTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1OZXR3b3JrYCwgW10sIHN0YWNrUHJvcHMpXG4gICAgICAuYWRkTmV0d29yayhcbiAgICAgICAgVnBjLmJ1aWxkKGAke2lkfVZwY2AsIHtcbiAgICAgICAgICByZWdpb246IHByb3BzLnJlZ2lvblxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmFkZENvbnRhaW5lclJlZ2lzdHJ5KEVjci5idWlsZChgJHtpZH1FY3JgKSk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU3RhY2sgPSBuZXcgQXdzU3RhY2soXG4gICAgICBgJHtpZH1EYXRhYmFzZWAsXG4gICAgICB0aGlzLnZwY1N0YWNrLFxuICAgICAgc3RhY2tQcm9wc1xuICAgIClcbiAgICAgIC5hZGROZXR3b3JrKHRoaXMudnBjU3RhY2suZ2V0TmV0d29yaygpKVxuICAgICAgLmFkZFJlc291cmNlKERhdGFiYXNlLmJ1aWxkKGAke2lkfURhdGFiYXNlYCwge30pKTtcblxuICAgIC8vIEZldGNoZXMgdGhlIGRiUmVzb3VyY2UgZnJvbSB0aGUgZGF0YWJhc2VTdGFja1xuICAgIGNvbnN0IGRiUmVzb3VyY2UgPSB0aGlzLmRhdGFiYXNlU3RhY2suZ2V0UmVzb3VyY2UoXG4gICAgICBgJHtpZH1EYXRhYmFzZWBcbiAgICApIGFzIERhdGFiYXNlO1xuXG4gICAgY29uc3Qgc2VjcmV0T2JqZWN0VmFsdWU6IENvbnRhaW5lclNlY3JldCA9IHt9O1xuICAgIGlmIChwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHNlY3JldE9iamVjdCBvZiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICAgIHNlY3JldE9iamVjdFZhbHVlW3NlY3JldE9iamVjdF0gPSBTZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoXCJcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWNyZXRTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1TZWNyZXRgLCBbXSwgc3RhY2tQcm9wcykuYWRkUmVzb3VyY2UoXG4gICAgICBTZWNyZXQuYnVpbGQoYCR7aWR9U2VjcmV0YCwge1xuICAgICAgICBzZWNyZXROYW1lOiBgLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgc2VjcmV0T2JqZWN0VmFsdWU6IHNlY3JldE9iamVjdFZhbHVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbXB1dGVTdGFjayA9IG5ldyBBd3NTdGFjayhcbiAgICAgIGAke2lkfUNvbXB1dGVgLFxuICAgICAgW3RoaXMudnBjU3RhY2ssIHRoaXMuZGF0YWJhc2VTdGFjaywgdGhpcy5zZWNyZXRTdGFja10sXG4gICAgICBzdGFja1Byb3BzXG4gICAgKVxuICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4gICAgICAuYWRkUmVzb3VyY2UoXG4gICAgICAgIEVjMkNsdXN0ZXIuYnVpbGQoYCR7aWR9RmFyZ2F0ZWAsIHtcbiAgICAgICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICAgICAgLy9UT0RPOiBUaGlzIHNob3VsZCB3b3JrIHZpYSBsaW5lIDEyNCwgYnV0IGRvZXNuJ3Qgd29yayAoYXQgbGVhc3Qgb24gdXBkYXRlKVxuICAgICAgICAgIGRhdGFiYXNlQ29ubmVjdGlvbjogZGJSZXNvdXJjZS5kYXRhYmFzZVNlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnMsXG4gICAgICAgICAgY29udGFpbmVyRW50cnlQb2ludDogcHJvcHMuY29udGFpbmVyRW50cnlQb2ludCxcbiAgICAgICAgICBjb250YWluZXJDb21tYW5kOiBwcm9wcy5jb250YWluZXJDb21tYW5kLFxuICAgICAgICAgIGNvbnRhaW5lckVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudCxcbiAgICAgICAgICBjb250YWluZXJQb3J0OiBwcm9wcy5jb250YWluZXJQb3J0LFxuICAgICAgICAgIGNvbnRhaW5lclNlY3JldHM6IHNlY3JldE9iamVjdFZhbHVlLFxuICAgICAgICAgIGVjclJlcG9zaXRvcnk6IHRoaXMudnBjU3RhY2suZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSxcbiAgICAgICAgICBwYXJlbnREb21haW46IHByb3BzLnBhcmVudERvbWFpbj8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBsaXN0ZW5lclBvcnQ6IHByb3BzLmxpc3RlbmVyUG9ydCxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgICAgdGFza1JvbGVJbmxpbmVQb2xpY2llczogcHJvcHMudGFza1JvbGVJbmxpbmVQb2xpY2llcyxcbiAgICAgICAgICB0YXNrUm9sZU1hbmFnZWRQb2xpY2llczogcHJvcHMudGFza1JvbGVNYW5hZ2VkUG9saWNpZXNcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5jb25uZWN0KGAke2lkfUZhcmdhdGVgLCBgJHtpZH1EYXRhYmFzZWAsIDU0MzIpO1xuICB9XG5cbiAgZ2V0U3RhY2tQcm9wcyhwcm9wczogQmFzaWNBcHBQcm9wcyk6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMpIHJldHVybjtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50SWQ6IHByb3BzLmFjY291bnQsXG4gICAgICByZWdpb246IHByb3BzLnJlZ2lvblxuICAgIH07XG4gIH1cblxuICBnZXRQcm9wcyhcbiAgICBpZDogc3RyaW5nLFxuICAgIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzXG4gICk6IEJhc2ljQXBwUHJvcHMgJiBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHJhd1Byb3BzLmNvbnRhaW5lclBvcnQgfHwgMzAwMCxcbiAgICAgIHNlcnZpY2VOYW1lOiBgJHtpZH1TZXJ2aWNlYCxcbiAgICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH1DbHVzdGVyYCxcbiAgICAgIGNvbnRhaW5lckVudHJ5UG9pbnQ6IFtcIm5vZGVcIiwgXCJtYWluLmpzXCJdLFxuICAgICAgY29udGFpbmVyQ29tbWFuZDogcmF3UHJvcHMuY29udGFpbmVyUG9ydFxuICAgICAgICA/IFtgJHtyYXdQcm9wcy5jb250YWluZXJQb3J0fWBdXG4gICAgICAgIDogW2AzMDAwYF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgIC4uLnJhd1Byb3BzXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQmFzaWNBcHA7XG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { AwsStackProps } from "../../resources/aws/base/awsStack";
|
|
2
|
-
import { ScalingType } from "../../resources/aws/compute/ecs";
|
|
3
|
-
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
4
|
-
import { KeyValue } from "../../types";
|
|
5
|
-
/**
|
|
6
|
-
* Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
7
|
-
* to treat these as required properties and avoid constant null checking.
|
|
8
|
-
*/
|
|
9
|
-
export interface BasicAppPropDefaults {
|
|
10
|
-
serviceName: string;
|
|
11
|
-
clusterName: string;
|
|
12
|
-
scalingType: ScalingType;
|
|
13
|
-
containerPort: number;
|
|
14
|
-
}
|
|
15
|
-
export interface BasicAppProps {
|
|
16
|
-
account?: string;
|
|
17
|
-
clusterName?: string;
|
|
18
|
-
containerEntryPoint?: string[];
|
|
19
|
-
containerCommand?: string[];
|
|
20
|
-
containerEnvironment?: KeyValue;
|
|
21
|
-
containerPort?: number;
|
|
22
|
-
containerSecrets?: string[];
|
|
23
|
-
accountName: string;
|
|
24
|
-
owner?: string;
|
|
25
|
-
parentDomain?: string;
|
|
26
|
-
environment: string;
|
|
27
|
-
listenerPort?: number;
|
|
28
|
-
region?: string;
|
|
29
|
-
scalingType?: ScalingType;
|
|
30
|
-
serviceName?: string;
|
|
31
|
-
taskRoleInlinePolicies?: {
|
|
32
|
-
[name: string]: PolicyDocument;
|
|
33
|
-
};
|
|
34
|
-
taskRoleManagedPolicies?: IManagedPolicy[];
|
|
35
|
-
}
|
|
36
|
-
export declare class BasicApp {
|
|
37
|
-
private vpcStack;
|
|
38
|
-
private databaseStack;
|
|
39
|
-
private secretStack;
|
|
40
|
-
private computeStack;
|
|
41
|
-
constructor(id: string, rawProps: BasicAppProps);
|
|
42
|
-
getStackProps(props: BasicAppProps): AwsStackProps | undefined;
|
|
43
|
-
getProps(id: string, rawProps: BasicAppProps): BasicAppProps & BasicAppPropDefaults;
|
|
44
|
-
}
|
|
45
|
-
export default BasicApp;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BasicApp = void 0;
|
|
4
|
-
const awsStack_1 = require("../../resources/aws/base/awsStack");
|
|
5
|
-
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
6
|
-
const ecs_1 = require("../../resources/aws/compute/ecs");
|
|
7
|
-
const ecsSpot_1 = require("../../resources/aws/compute/ecsSpot");
|
|
8
|
-
const secrets_1 = require("../../resources/aws/secrets");
|
|
9
|
-
const storage_1 = require("../../resources/aws/storage");
|
|
10
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
|
-
const databaseInstance_1 = require("../../resources/aws/database/databaseInstance");
|
|
12
|
-
class BasicApp {
|
|
13
|
-
constructor(id, rawProps) {
|
|
14
|
-
const props = this.getProps(id, rawProps);
|
|
15
|
-
const stackProps = this.getStackProps(props);
|
|
16
|
-
this.vpcStack = new awsStack_1.default(`${id}Network`, [], stackProps)
|
|
17
|
-
.addNetwork(vpc_1.Vpc.build(`${id}Vpc`, {
|
|
18
|
-
// environment: props.environment,
|
|
19
|
-
region: props.region
|
|
20
|
-
}))
|
|
21
|
-
.addContainerRegistry(storage_1.Ecr.build(`${id}Ecr`));
|
|
22
|
-
this.databaseStack = new awsStack_1.default(`${id}Database`, this.vpcStack, stackProps)
|
|
23
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
24
|
-
.addResource(databaseInstance_1.default.build(`${id}Database`, {}));
|
|
25
|
-
// Fetches the dbResource from the databaseStack
|
|
26
|
-
const dbResource = this.databaseStack.getResource(`${id}Database`);
|
|
27
|
-
const secretObjectValue = {};
|
|
28
|
-
if (props.containerSecrets) {
|
|
29
|
-
for (const secretObject of props.containerSecrets) {
|
|
30
|
-
secretObjectValue[secretObject] = aws_cdk_lib_1.SecretValue.unsafePlainText("");
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
this.secretStack = new awsStack_1.default(`${id}Secret`, [], stackProps).addResource(secrets_1.Secret.build(`${id}Secret`, {
|
|
34
|
-
secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
35
|
-
secretObjectValue: secretObjectValue
|
|
36
|
-
}));
|
|
37
|
-
this.computeStack = new awsStack_1.default(`${id}Compute`, [this.vpcStack, this.databaseStack, this.secretStack], stackProps)
|
|
38
|
-
.addNetwork(this.vpcStack.getNetwork())
|
|
39
|
-
.addResource(ecsSpot_1.default.build(`${id}Fargate`, {
|
|
40
|
-
clusterName: props.clusterName,
|
|
41
|
-
//TODO: This should work via line 124, but doesn't work (at least on update)
|
|
42
|
-
databaseConnection: dbResource.databaseSecurityGroup.connections,
|
|
43
|
-
containerEntryPoint: props.containerEntryPoint,
|
|
44
|
-
containerCommand: props.containerCommand,
|
|
45
|
-
containerEnvironment: props.containerEnvironment,
|
|
46
|
-
containerPort: props.containerPort,
|
|
47
|
-
containerSecrets: secretObjectValue,
|
|
48
|
-
ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
49
|
-
parentDomain: props.parentDomain?.toLowerCase(),
|
|
50
|
-
listenerPort: props.listenerPort,
|
|
51
|
-
serviceName: props.serviceName,
|
|
52
|
-
taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
53
|
-
taskRoleManagedPolicies: props.taskRoleManagedPolicies
|
|
54
|
-
}))
|
|
55
|
-
.connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
56
|
-
}
|
|
57
|
-
getStackProps(props) {
|
|
58
|
-
if (!props)
|
|
59
|
-
return;
|
|
60
|
-
return {
|
|
61
|
-
accountId: props.account,
|
|
62
|
-
region: props.region,
|
|
63
|
-
accountName: props.accountName
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
getProps(id, rawProps) {
|
|
67
|
-
const defaultProps = {
|
|
68
|
-
scalingType: ecs_1.ScalingType.CPU,
|
|
69
|
-
containerPort: rawProps.containerPort || 3000,
|
|
70
|
-
serviceName: `${id}Service`,
|
|
71
|
-
clusterName: `${id}Cluster`,
|
|
72
|
-
containerEntryPoint: ["node", "main.js"],
|
|
73
|
-
containerCommand: rawProps.containerPort
|
|
74
|
-
? [`${rawProps.containerPort}`]
|
|
75
|
-
: [`3000`]
|
|
76
|
-
};
|
|
77
|
-
return {
|
|
78
|
-
...defaultProps,
|
|
79
|
-
...rawProps
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.BasicApp = BasicApp;
|
|
84
|
-
exports.default = BasicApp;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdEluc3RhbmNlQXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9zcG90SW5zdGFuY2VBcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQTRFO0FBQzVFLDREQUF5RDtBQUN6RCx5REFBK0U7QUFDL0UsaUVBQTZEO0FBQzdELHlEQUFxRDtBQUNyRCx5REFBa0Q7QUFDbEQsNkNBQTBDO0FBRzFDLG9GQUFxRTtBQW9DckUsTUFBYSxRQUFRO0lBTW5CLFlBQVksRUFBVSxFQUFFLFFBQXVCO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFRLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDO2FBQ3pELFVBQVUsQ0FDVCxTQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDcEIsa0NBQWtDO1lBQ2xDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNyQixDQUFDLENBQ0g7YUFDQSxvQkFBb0IsQ0FBQyxhQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxrQkFBUSxDQUMvQixHQUFHLEVBQUUsVUFBVSxFQUNmLElBQUksQ0FBQyxRQUFRLEVBQ2IsVUFBVSxDQUNYO2FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDdEMsV0FBVyxDQUFDLDBCQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztR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LENBQUMsYUFBYTtnQkFDdEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUNiLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxZQUFZO1lBQ2YsR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZHRCw0QkF1R0M7QUFDRCxrQkFBZSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXdzU3RhY2ssIHsgQXdzU3RhY2tQcm9wcyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvdnBjXCI7XG5pbXBvcnQgeyBDb250YWluZXJTZWNyZXQsIFNjYWxpbmdUeXBlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NcIjtcbmltcG9ydCBFYzJDbHVzdGVyIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzU3BvdFwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuaW1wb3J0IHsgRWNyIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc3RvcmFnZVwiO1xuaW1wb3J0IHsgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElNYW5hZ2VkUG9saWN5LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlSW5zdGFuY2VcIjtcblxuLyoqXG4gKiBJbnRlcnNlY3RlZCB3aXRoIEJhc2ljQXBwUHJvcHMgaW4gdGhlIGdldFByb3BzIG1ldGhvZC4gVGhpcyBhbGxvd3MgdGhlIEJhc2ljQXBwIGNvbnN0cnVjdFxuICogdG8gdHJlYXQgdGhlc2UgYXMgcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgYXZvaWQgY29uc3RhbnQgbnVsbCBjaGVja2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIHNjYWxpbmdUeXBlOiBTY2FsaW5nVHlwZTtcbiAgY29udGFpbmVyUG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2ljQXBwUHJvcHMge1xuICBhY2NvdW50Pzogc3RyaW5nO1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgY29udGFpbmVyRW50cnlQb2ludD86IHN0cmluZ1tdO1xuICBjb250YWluZXJDb21tYW5kPzogc3RyaW5nW107XG4gIGNvbnRhaW5lckVudmlyb25tZW50PzogS2V5VmFsdWU7XG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG4gIGNvbnRhaW5lclNlY3JldHM/OiBzdHJpbmdbXTtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHRlYW0vZG9tYWluL2J1c2luZXNzLXVuaXQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgdGhpcyBzZXJ2aWNlXG4gIG93bmVyPzogc3RyaW5nO1xuICBwYXJlbnREb21haW4/OiBzdHJpbmc7IC8vIEZpeCB0byBtYWtlIGEgZGVwZW5kZW5jeSBvZiBwcm90b2NvbFxuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBsaXN0ZW5lclBvcnQ/OiBudW1iZXI7XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgc2NhbGluZ1R5cGU/OiBTY2FsaW5nVHlwZTtcbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XG4gIHRhc2tSb2xlSW5saW5lUG9saWNpZXM/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IFBvbGljeURvY3VtZW50O1xuICB9O1xuICB0YXNrUm9sZU1hbmFnZWRQb2xpY2llcz86IElNYW5hZ2VkUG9saWN5W107XG59XG5cbmV4cG9ydCBjbGFzcyBCYXNpY0FwcCB7XG4gIHByaXZhdGUgdnBjU3RhY2s6IEF3c1N0YWNrO1xuICBwcml2YXRlIGRhdGFiYXNlU3RhY2s6IEF3c1N0YWNrO1xuICBwcml2YXRlIHNlY3JldFN0YWNrOiBBd3NTdGFjaztcbiAgcHJpdmF0ZSBjb21wdXRlU3RhY2s6IEF3c1N0YWNrO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzKSB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmdldFByb3BzKGlkLCByYXdQcm9wcyk7XG4gICAgY29uc3Qgc3RhY2tQcm9wcyA9IHRoaXMuZ2V0U3RhY2tQcm9wcyhwcm9wcyk7XG5cbiAgICB0aGlzLnZwY1N0YWNrID0gbmV3IEF3c1N0YWNrKGAke2lkfU5ldHdvcmtgLCBbXSwgc3RhY2tQcm9wcylcbiAgICAgIC5hZGROZXR3b3JrKFxuICAgICAgICBWcGMuYnVpbGQoYCR7aWR9VnBjYCwge1xuICAgICAgICAgIC8vIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgICAgICByZWdpb246IHByb3BzLnJlZ2lvblxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmFkZENvbnRhaW5lclJlZ2lzdHJ5KEVjci5idWlsZChgJHtpZH1FY3JgKSk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU3RhY2sgPSBuZXcgQXdzU3RhY2soXG4gICAgICBgJHtpZH1EYXRhYmFzZWAsXG4gICAgICB0aGlzLnZwY1N0YWNrLFxuICAgICAgc3RhY2tQcm9wc1xuICAgIClcbiAgICAgIC5hZGROZXR3b3JrKHRoaXMudnBjU3RhY2suZ2V0TmV0d29yaygpKVxuICAgICAgLmFkZFJlc291cmNlKERhdGFiYXNlLmJ1aWxkKGAke2lkfURhdGFiYXNlYCwge30pKTtcblxuICAgIC8vIEZldGNoZXMgdGhlIGRiUmVzb3VyY2UgZnJvbSB0aGUgZGF0YWJhc2VTdGFja1xuICAgIGNvbnN0IGRiUmVzb3VyY2UgPSB0aGlzLmRhdGFiYXNlU3RhY2suZ2V0UmVzb3VyY2UoXG4gICAgICBgJHtpZH1EYXRhYmFzZWBcbiAgICApIGFzIERhdGFiYXNlO1xuXG4gICAgY29uc3Qgc2VjcmV0T2JqZWN0VmFsdWU6IENvbnRhaW5lclNlY3JldCA9IHt9O1xuICAgIGlmIChwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHNlY3JldE9iamVjdCBvZiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4gICAgICAgIHNlY3JldE9iamVjdFZhbHVlW3NlY3JldE9iamVjdF0gPSBTZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoXCJcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWNyZXRTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1TZWNyZXRgLCBbXSwgc3RhY2tQcm9wcykuYWRkUmVzb3VyY2UoXG4gICAgICBTZWNyZXQuYnVpbGQoYCR7aWR9U2VjcmV0YCwge1xuICAgICAgICBzZWNyZXROYW1lOiBgLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbiAgICAgICAgc2VjcmV0T2JqZWN0VmFsdWU6IHNlY3JldE9iamVjdFZhbHVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbXB1dGVTdGFjayA9IG5ldyBBd3NTdGFjayhcbiAgICAgIGAke2lkfUNvbXB1dGVgLFxuICAgICAgW3RoaXMudnBjU3RhY2ssIHRoaXMuZGF0YWJhc2VTdGFjaywgdGhpcy5zZWNyZXRTdGFja10sXG4gICAgICBzdGFja1Byb3BzXG4gICAgKVxuICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4gICAgICAuYWRkUmVzb3VyY2UoXG4gICAgICAgIEVjMkNsdXN0ZXIuYnVpbGQoYCR7aWR9RmFyZ2F0ZWAsIHtcbiAgICAgICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICAgICAgLy9UT0RPOiBUaGlzIHNob3VsZCB3b3JrIHZpYSBsaW5lIDEyNCwgYnV0IGRvZXNuJ3Qgd29yayAoYXQgbGVhc3Qgb24gdXBkYXRlKVxuICAgICAgICAgIGRhdGFiYXNlQ29ubmVjdGlvbjogZGJSZXNvdXJjZS5kYXRhYmFzZVNlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnMsXG4gICAgICAgICAgY29udGFpbmVyRW50cnlQb2ludDogcHJvcHMuY29udGFpbmVyRW50cnlQb2ludCxcbiAgICAgICAgICBjb250YWluZXJDb21tYW5kOiBwcm9wcy5jb250YWluZXJDb21tYW5kLFxuICAgICAgICAgIGNvbnRhaW5lckVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudCxcbiAgICAgICAgICBjb250YWluZXJQb3J0OiBwcm9wcy5jb250YWluZXJQb3J0LFxuICAgICAgICAgIGNvbnRhaW5lclNlY3JldHM6IHNlY3JldE9iamVjdFZhbHVlLFxuICAgICAgICAgIGVjclJlcG9zaXRvcnk6IHRoaXMudnBjU3RhY2suZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSxcbiAgICAgICAgICBwYXJlbnREb21haW46IHByb3BzLnBhcmVudERvbWFpbj8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBsaXN0ZW5lclBvcnQ6IHByb3BzLmxpc3RlbmVyUG9ydCxcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgICAgdGFza1JvbGVJbmxpbmVQb2xpY2llczogcHJvcHMudGFza1JvbGVJbmxpbmVQb2xpY2llcyxcbiAgICAgICAgICB0YXNrUm9sZU1hbmFnZWRQb2xpY2llczogcHJvcHMudGFza1JvbGVNYW5hZ2VkUG9saWNpZXNcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5jb25uZWN0KGAke2lkfUZhcmdhdGVgLCBgJHtpZH1EYXRhYmFzZWAsIDU0MzIpO1xuICB9XG5cbiAgZ2V0U3RhY2tQcm9wcyhwcm9wczogQmFzaWNBcHBQcm9wcyk6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMpIHJldHVybjtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50SWQ6IHByb3BzLmFjY291bnQsXG4gICAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICAgIGFjY291bnROYW1lOiBwcm9wcy5hY2NvdW50TmFtZVxuICAgIH07XG4gIH1cblxuICBnZXRQcm9wcyhcbiAgICBpZDogc3RyaW5nLFxuICAgIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzXG4gICk6IEJhc2ljQXBwUHJvcHMgJiBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHJhd1Byb3BzLmNvbnRhaW5lclBvcnQgfHwgMzAwMCxcbiAgICAgIHNlcnZpY2VOYW1lOiBgJHtpZH1TZXJ2aWNlYCxcbiAgICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH1DbHVzdGVyYCxcbiAgICAgIGNvbnRhaW5lckVudHJ5UG9pbnQ6IFtcIm5vZGVcIiwgXCJtYWluLmpzXCJdLFxuICAgICAgY29udGFpbmVyQ29tbWFuZDogcmF3UHJvcHMuY29udGFpbmVyUG9ydFxuICAgICAgICA/IFtgJHtyYXdQcm9wcy5jb250YWluZXJQb3J0fWBdXG4gICAgICAgIDogW2AzMDAwYF1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgIC4uLnJhd1Byb3BzXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQmFzaWNBcHA7XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Connections, IConnectable, SecurityGroup, Vpc } from "aws-cdk-lib/aws-ec2";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { StackBuilder } from "../base/awsStack";
|
|
4
|
-
interface DatabaseProps {
|
|
5
|
-
vpc: Vpc;
|
|
6
|
-
}
|
|
7
|
-
export default class Database extends Construct implements IConnectable {
|
|
8
|
-
private readonly resource;
|
|
9
|
-
connections: Connections;
|
|
10
|
-
databaseSecurityGroup: SecurityGroup;
|
|
11
|
-
databaseSecretName: string;
|
|
12
|
-
constructor(scope: Construct, id: string, props: DatabaseProps);
|
|
13
|
-
static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constructs_1 = require("constructs");
|
|
4
|
-
const _1 = require("./");
|
|
5
|
-
class Database extends constructs_1.Construct {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id);
|
|
8
|
-
this.resource = new _1.RdsFreeTier(scope, `${id}Rds`, {
|
|
9
|
-
vpc: props.vpc,
|
|
10
|
-
databaseName: id.replace("Database", "")
|
|
11
|
-
});
|
|
12
|
-
this.connections = this.resource.connections;
|
|
13
|
-
this.databaseSecurityGroup = this.resource.databaseSecurityGroup;
|
|
14
|
-
}
|
|
15
|
-
//todo: move to generic 'resource' class
|
|
16
|
-
static build(id, props) {
|
|
17
|
-
return (sb) => {
|
|
18
|
-
const newProps = {
|
|
19
|
-
...props,
|
|
20
|
-
...{
|
|
21
|
-
vpc: sb.getNetwork() || props?.vpc
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
return new this(sb.getStack(), id, newProps);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.default = Database;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2VGcmVlVGllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlRnJlZVRpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSwyQ0FBdUM7QUFHdkMseUJBQWlDO0FBT2pDLE1BQXFCLFFBQVMsU0FBUSxzQkFBUztJQU03QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNqRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxZQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1NBQ3pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7SUFDbkUsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUE4QjtRQUU5QixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFrQjtnQkFDOUIsR0FBRyxLQUFLO2dCQUNSLEdBQUc7b0JBQ0QsR0FBRyxFQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQVUsSUFBSSxLQUFLLEVBQUUsR0FBRztpQkFDNUM7YUFDRixDQUFDO1lBRUYsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxDRCwyQkFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgSUNvbm5lY3RhYmxlLFxuICBTZWN1cml0eUdyb3VwLFxuICBWcGNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyBSZHNGcmVlVGllciB9IGZyb20gXCIuL1wiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcblxuaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICB2cGM6IFZwYztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBSZHNGcmVlVGllcjtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIGRhdGFiYXNlU2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIGRhdGFiYXNlU2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgUmRzRnJlZVRpZXIoc2NvcGUsIGAke2lkfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBpZC5yZXBsYWNlKFwiRGF0YWJhc2VcIiwgXCJcIilcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlc291cmNlLmNvbm5lY3Rpb25zO1xuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwID0gdGhpcy5yZXNvdXJjZS5kYXRhYmFzZVNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICAvL3RvZG86IG1vdmUgdG8gZ2VuZXJpYyAncmVzb3VyY2UnIGNsYXNzXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogUGFydGlhbDxEYXRhYmFzZVByb3BzPlxuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBEYXRhYmFzZVByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBWcGMpIHx8IHByb3BzPy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Duration, StackProps } from "aws-cdk-lib";
|
|
2
|
-
import { Connections, IConnectable, InstanceType, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
-
import { IInstanceEngine } from "aws-cdk-lib/aws-rds";
|
|
4
|
-
import { Construct } from "constructs";
|
|
5
|
-
import { SecurityGroup } from "../iam";
|
|
6
|
-
import { Secret } from "../secrets";
|
|
7
|
-
interface RdsProps extends StackProps {
|
|
8
|
-
vpc?: IVpc;
|
|
9
|
-
databaseName?: string;
|
|
10
|
-
engine?: IInstanceEngine;
|
|
11
|
-
instanceType?: InstanceType;
|
|
12
|
-
maxAllocatedStorage?: number;
|
|
13
|
-
allocatedStorage?: number;
|
|
14
|
-
backupRetention?: Duration;
|
|
15
|
-
clusterIdentifier?: string;
|
|
16
|
-
monitoringInterval?: Duration;
|
|
17
|
-
preferredMaintenanceWindow?: string;
|
|
18
|
-
port?: number;
|
|
19
|
-
enablePerformanceInsights?: boolean;
|
|
20
|
-
databaseProxy?: boolean;
|
|
21
|
-
readReplica?: boolean;
|
|
22
|
-
}
|
|
23
|
-
export declare class RdsFreeTier extends Construct implements IConnectable {
|
|
24
|
-
connections: Connections;
|
|
25
|
-
databaseSecurityGroup: SecurityGroup;
|
|
26
|
-
vpc: IVpc;
|
|
27
|
-
private databaseCredentials;
|
|
28
|
-
private encryptionKey;
|
|
29
|
-
private database;
|
|
30
|
-
constructor(scope: Construct, id: string, props: RdsProps);
|
|
31
|
-
addVpc(props: RdsProps): void;
|
|
32
|
-
addDatabase(props: RdsProps): void;
|
|
33
|
-
getCredentials(): Secret;
|
|
34
|
-
getHostEndpoint(): string;
|
|
35
|
-
getHostPort(): string;
|
|
36
|
-
}
|
|
37
|
-
export {};
|