@digitraffic/common 2023.1.26-1 → 2023.1.30-2
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.
@@ -1,13 +1,16 @@
|
|
1
1
|
import { Stack } from "aws-cdk-lib";
|
2
2
|
import { Construct } from "constructs";
|
3
|
-
import {
|
3
|
+
import { IVpc } from "aws-cdk-lib/aws-ec2";
|
4
|
+
import { AuroraPostgresEngineVersion, DatabaseCluster, DatabaseClusterProps, IParameterGroup } from "aws-cdk-lib/aws-rds";
|
5
|
+
import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
|
4
6
|
import { InstanceType } from "aws-cdk-lib/aws-ec2";
|
5
7
|
import { InfraStackConfiguration } from "./intra-stack-configuration";
|
8
|
+
import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
|
6
9
|
export interface DbConfiguration {
|
7
10
|
readonly secretArn: string;
|
8
11
|
readonly dbVersion: AuroraPostgresEngineVersion;
|
9
12
|
readonly dbInstanceType: InstanceType;
|
10
|
-
readonly snapshotIdentifier
|
13
|
+
readonly snapshotIdentifier?: string;
|
11
14
|
readonly instances: number;
|
12
15
|
readonly customParameterGroup: boolean;
|
13
16
|
readonly securityGroupId: string;
|
@@ -27,5 +30,7 @@ export declare class DbStack extends Stack {
|
|
27
30
|
static CLUSTER_WRITE_ENDPOINT_EXPORT_NAME: string;
|
28
31
|
static CLUSTER_PORT: number;
|
29
32
|
constructor(scope: Construct, id: string, isc: InfraStackConfiguration, configuration: DbConfiguration);
|
33
|
+
createParamaterGroup(configuration: DbConfiguration): IParameterGroup;
|
34
|
+
createClusterParameters(configuration: DbConfiguration, instanceName: string, vpc: IVpc, securityGroup: ISecurityGroup, parameterGroup: IParameterGroup, secret: ISecret): DatabaseClusterProps;
|
30
35
|
createAuroraCluster(isc: InfraStackConfiguration, configuration: DbConfiguration): DatabaseCluster;
|
31
36
|
}
|
@@ -24,14 +24,8 @@ class DbStack extends aws_cdk_lib_1.Stack {
|
|
24
24
|
(0, import_util_1.exportValue)(this, isc.environmentName, DbStack.CLUSTER_WRITE_ENDPOINT_EXPORT_NAME, cluster.clusterEndpoint.hostname);
|
25
25
|
(0, import_util_1.exportValue)(this, isc.environmentName, DbStack.CLUSTER_READ_ENDPOINT_EXPORT_NAME, cluster.clusterReadEndpoint.hostname);
|
26
26
|
}
|
27
|
-
|
28
|
-
|
29
|
-
const secret = aws_secretsmanager_1.Secret.fromSecretAttributes(this, "db-secret", {
|
30
|
-
secretCompleteArn: configuration.secretArn,
|
31
|
-
});
|
32
|
-
const securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "securitygroup", configuration.securityGroupId);
|
33
|
-
const vpc = (0, import_util_1.importVpc)(this, isc.environmentName);
|
34
|
-
const parameterGroup = configuration.customParameterGroup
|
27
|
+
createParamaterGroup(configuration) {
|
28
|
+
return configuration.customParameterGroup
|
35
29
|
? new aws_rds_1.ParameterGroup(this, `parameter-group-${configuration.dbVersion.auroraPostgresMajorVersion}`, {
|
36
30
|
engine: aws_rds_1.DatabaseClusterEngine.auroraPostgres({
|
37
31
|
version: configuration.dbVersion,
|
@@ -43,8 +37,9 @@ class DbStack extends aws_cdk_lib_1.Stack {
|
|
43
37
|
},
|
44
38
|
})
|
45
39
|
: aws_rds_1.ParameterGroup.fromParameterGroupName(this, "ParameterGroup", `default.aurora-postgresql${configuration.dbVersion.auroraPostgresMajorVersion}`);
|
46
|
-
|
47
|
-
|
40
|
+
}
|
41
|
+
createClusterParameters(configuration, instanceName, vpc, securityGroup, parameterGroup, secret) {
|
42
|
+
return {
|
48
43
|
engine: aws_rds_1.DatabaseClusterEngine.auroraPostgres({
|
49
44
|
version: configuration.dbVersion,
|
50
45
|
}),
|
@@ -74,7 +69,23 @@ class DbStack extends aws_cdk_lib_1.Stack {
|
|
74
69
|
},
|
75
70
|
credentials: aws_rds_1.Credentials.fromSecret(secret),
|
76
71
|
parameterGroup,
|
72
|
+
};
|
73
|
+
}
|
74
|
+
createAuroraCluster(isc, configuration) {
|
75
|
+
const instanceName = isc.environmentName + "-db";
|
76
|
+
const secret = aws_secretsmanager_1.Secret.fromSecretAttributes(this, "db-secret", {
|
77
|
+
secretCompleteArn: configuration.secretArn,
|
77
78
|
});
|
79
|
+
const securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "securitygroup", configuration.securityGroupId);
|
80
|
+
const vpc = (0, import_util_1.importVpc)(this, isc.environmentName);
|
81
|
+
const parameterGroup = this.createParamaterGroup(configuration);
|
82
|
+
const parameters = this.createClusterParameters(configuration, instanceName, vpc, securityGroup, parameterGroup, secret);
|
83
|
+
const cluster = configuration.snapshotIdentifier
|
84
|
+
? new aws_rds_1.DatabaseClusterFromSnapshot(this, instanceName, {
|
85
|
+
...parameters,
|
86
|
+
...{ snapshotIdentifier: configuration.snapshotIdentifier },
|
87
|
+
})
|
88
|
+
: new aws_rds_1.DatabaseCluster(this, instanceName, parameters);
|
78
89
|
// this workaround should prevent stack failing on version upgrade
|
79
90
|
const cfnInstances = cluster.node.children.filter((child) => child instanceof aws_rds_1.CfnDBInstance);
|
80
91
|
if (cfnInstances.length === 0) {
|
@@ -11,6 +11,10 @@ class NetworkStack extends aws_cdk_lib_1.Stack {
|
|
11
11
|
});
|
12
12
|
this.vpc = this.createVpc(configuration);
|
13
13
|
(0, import_util_1.exportValue)(this, isc.environmentName, "VPCID", this.vpc.vpcId);
|
14
|
+
(0, import_util_1.exportValue)(this, isc.environmentName, "digitrafficpublicASubnet", this.vpc.publicSubnets[0].subnetId);
|
15
|
+
(0, import_util_1.exportValue)(this, isc.environmentName, "digitrafficpublicBSubnet", this.vpc.publicSubnets[1].subnetId);
|
16
|
+
(0, import_util_1.exportValue)(this, isc.environmentName, "digitrafficprivateASubnet", this.vpc.privateSubnets[0].subnetId);
|
17
|
+
(0, import_util_1.exportValue)(this, isc.environmentName, "digitrafficprivateBSubnet", this.vpc.privateSubnets[1].subnetId);
|
14
18
|
}
|
15
19
|
createVpc(configuration) {
|
16
20
|
return new aws_ec2_1.Vpc(this, "DigitrafficVPC", {
|
@@ -18,7 +22,7 @@ class NetworkStack extends aws_cdk_lib_1.Stack {
|
|
18
22
|
availabilityZones: ["eu-west-1a", "eu-west-1b"],
|
19
23
|
enableDnsHostnames: true,
|
20
24
|
enableDnsSupport: true,
|
21
|
-
|
25
|
+
ipAddresses: aws_ec2_1.IpAddresses.cidr(configuration.cidr),
|
22
26
|
subnetConfiguration: [
|
23
27
|
{
|
24
28
|
name: "public",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@digitraffic/common",
|
3
|
-
"version": "2023.01.
|
3
|
+
"version": "2023.01.30-2",
|
4
4
|
"description": "",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -17,23 +17,22 @@
|
|
17
17
|
"src/**/*.ts"
|
18
18
|
],
|
19
19
|
"peerDependencies": {
|
20
|
-
"@aws-cdk/aws-synthetics-alpha": "
|
20
|
+
"@aws-cdk/aws-synthetics-alpha": "2.62.2-alpha.0",
|
21
21
|
"@types/geojson": "^7946.0.10",
|
22
|
-
"aws-cdk-lib": "^2.
|
23
|
-
"aws-sdk": "^2.
|
24
|
-
"axios": "^1.2.
|
22
|
+
"aws-cdk-lib": "^2.62.2",
|
23
|
+
"aws-sdk": "^2.1304.0",
|
24
|
+
"axios": "^1.2.6",
|
25
25
|
"change-case": "^4.1.2",
|
26
|
-
"constructs": "^10.1.
|
26
|
+
"constructs": "^10.1.235",
|
27
27
|
"geojson-validation": "^1.0.2",
|
28
28
|
"moment": "^2.29.4",
|
29
29
|
"node-ttl": "^0.2.0",
|
30
30
|
"pg-native": "^3.0.1",
|
31
|
-
"pg-promise": "^10.12.0"
|
32
|
-
"spex": "^3.0.0"
|
31
|
+
"pg-promise": "^10.12.0"
|
33
32
|
},
|
34
33
|
"devDependencies": {
|
35
|
-
"@aws-cdk/aws-synthetics-alpha": "2.
|
36
|
-
"@types/aws-lambda": "^8.10.
|
34
|
+
"@aws-cdk/aws-synthetics-alpha": "2.62.2-alpha.0",
|
35
|
+
"@types/aws-lambda": "^8.10.110",
|
37
36
|
"@types/geojson": "^7946.0.10",
|
38
37
|
"@types/jest": "^29.2.5",
|
39
38
|
"@types/node": "^18.11.18",
|
@@ -41,12 +40,12 @@
|
|
41
40
|
"@types/sinon": "^10.0.13",
|
42
41
|
"@typescript-eslint/eslint-plugin": "^5.48.2",
|
43
42
|
"@typescript-eslint/parser": "^5.48.2",
|
44
|
-
"aws-cdk-lib": "^2.
|
45
|
-
"aws-sdk": "^2.
|
46
|
-
"axios": "^1.2.
|
43
|
+
"aws-cdk-lib": "^2.62.2",
|
44
|
+
"aws-sdk": "^2.1304.0",
|
45
|
+
"axios": "^1.2.6",
|
47
46
|
"change-case": "^4.1.2",
|
48
47
|
"constructs": "^10.1.222",
|
49
|
-
"eslint": "^8.
|
48
|
+
"eslint": "^8.33.0",
|
50
49
|
"eslint-config-prettier": "^8.6.0",
|
51
50
|
"eslint-plugin-deprecation": "1.3.3",
|
52
51
|
"geojson-validation": "^1.0.2",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Duration, RemovalPolicy, Stack } from "aws-cdk-lib";
|
2
2
|
import { Construct } from "constructs";
|
3
|
-
import { SecurityGroup, SubnetType } from "aws-cdk-lib/aws-ec2";
|
3
|
+
import { IVpc, SecurityGroup, SubnetType } from "aws-cdk-lib/aws-ec2";
|
4
4
|
import {
|
5
5
|
AuroraPostgresEngineVersion,
|
6
6
|
CfnDBInstance,
|
@@ -8,20 +8,23 @@ import {
|
|
8
8
|
DatabaseCluster,
|
9
9
|
DatabaseClusterEngine,
|
10
10
|
DatabaseClusterFromSnapshot,
|
11
|
+
DatabaseClusterProps,
|
11
12
|
InstanceUpdateBehaviour,
|
13
|
+
IParameterGroup,
|
12
14
|
ParameterGroup,
|
13
15
|
} from "aws-cdk-lib/aws-rds";
|
14
|
-
import { Secret } from "aws-cdk-lib/aws-secretsmanager";
|
16
|
+
import { ISecret, Secret } from "aws-cdk-lib/aws-secretsmanager";
|
15
17
|
import { exportValue, importVpc } from "../import-util";
|
16
18
|
import { InstanceType } from "aws-cdk-lib/aws-ec2";
|
17
19
|
import { InfraStackConfiguration } from "./intra-stack-configuration";
|
20
|
+
import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
|
18
21
|
|
19
22
|
export interface DbConfiguration {
|
20
23
|
readonly secretArn: string;
|
21
24
|
|
22
25
|
readonly dbVersion: AuroraPostgresEngineVersion;
|
23
26
|
readonly dbInstanceType: InstanceType;
|
24
|
-
readonly snapshotIdentifier
|
27
|
+
readonly snapshotIdentifier?: string;
|
25
28
|
readonly instances: number;
|
26
29
|
readonly customParameterGroup: boolean;
|
27
30
|
readonly securityGroupId: string;
|
@@ -79,22 +82,8 @@ export class DbStack extends Stack {
|
|
79
82
|
);
|
80
83
|
}
|
81
84
|
|
82
|
-
|
83
|
-
|
84
|
-
configuration: DbConfiguration
|
85
|
-
): DatabaseCluster {
|
86
|
-
const instanceName = isc.environmentName + "-db";
|
87
|
-
const secret = Secret.fromSecretAttributes(this, "db-secret", {
|
88
|
-
secretCompleteArn: configuration.secretArn,
|
89
|
-
});
|
90
|
-
const securityGroup = SecurityGroup.fromSecurityGroupId(
|
91
|
-
this,
|
92
|
-
"securitygroup",
|
93
|
-
configuration.securityGroupId
|
94
|
-
);
|
95
|
-
const vpc = importVpc(this, isc.environmentName);
|
96
|
-
|
97
|
-
const parameterGroup = configuration.customParameterGroup
|
85
|
+
createParamaterGroup(configuration: DbConfiguration) {
|
86
|
+
return configuration.customParameterGroup
|
98
87
|
? new ParameterGroup(
|
99
88
|
this,
|
100
89
|
`parameter-group-${configuration.dbVersion.auroraPostgresMajorVersion}`,
|
@@ -114,9 +103,17 @@ export class DbStack extends Stack {
|
|
114
103
|
"ParameterGroup",
|
115
104
|
`default.aurora-postgresql${configuration.dbVersion.auroraPostgresMajorVersion}`
|
116
105
|
);
|
106
|
+
}
|
117
107
|
|
118
|
-
|
119
|
-
|
108
|
+
createClusterParameters(
|
109
|
+
configuration: DbConfiguration,
|
110
|
+
instanceName: string,
|
111
|
+
vpc: IVpc,
|
112
|
+
securityGroup: ISecurityGroup,
|
113
|
+
parameterGroup: IParameterGroup,
|
114
|
+
secret: ISecret
|
115
|
+
): DatabaseClusterProps {
|
116
|
+
return {
|
120
117
|
engine: DatabaseClusterEngine.auroraPostgres({
|
121
118
|
version: configuration.dbVersion,
|
122
119
|
}),
|
@@ -146,7 +143,38 @@ export class DbStack extends Stack {
|
|
146
143
|
},
|
147
144
|
credentials: Credentials.fromSecret(secret),
|
148
145
|
parameterGroup,
|
146
|
+
};
|
147
|
+
}
|
148
|
+
|
149
|
+
createAuroraCluster(
|
150
|
+
isc: InfraStackConfiguration,
|
151
|
+
configuration: DbConfiguration
|
152
|
+
): DatabaseCluster {
|
153
|
+
const instanceName = isc.environmentName + "-db";
|
154
|
+
const secret = Secret.fromSecretAttributes(this, "db-secret", {
|
155
|
+
secretCompleteArn: configuration.secretArn,
|
149
156
|
});
|
157
|
+
const securityGroup = SecurityGroup.fromSecurityGroupId(
|
158
|
+
this,
|
159
|
+
"securitygroup",
|
160
|
+
configuration.securityGroupId
|
161
|
+
);
|
162
|
+
const vpc = importVpc(this, isc.environmentName);
|
163
|
+
const parameterGroup = this.createParamaterGroup(configuration);
|
164
|
+
const parameters = this.createClusterParameters(
|
165
|
+
configuration,
|
166
|
+
instanceName,
|
167
|
+
vpc,
|
168
|
+
securityGroup,
|
169
|
+
parameterGroup,
|
170
|
+
secret
|
171
|
+
);
|
172
|
+
const cluster = configuration.snapshotIdentifier
|
173
|
+
? new DatabaseClusterFromSnapshot(this, instanceName, {
|
174
|
+
...parameters,
|
175
|
+
...{ snapshotIdentifier: configuration.snapshotIdentifier },
|
176
|
+
})
|
177
|
+
: new DatabaseCluster(this, instanceName, parameters);
|
150
178
|
|
151
179
|
// this workaround should prevent stack failing on version upgrade
|
152
180
|
const cfnInstances = cluster.node.children.filter(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Stack } from "aws-cdk-lib";
|
2
2
|
import { Construct } from "constructs";
|
3
|
-
import { IVpc, SubnetType, Vpc } from "aws-cdk-lib/aws-ec2";
|
3
|
+
import { IpAddresses, IVpc, SubnetType, Vpc } from "aws-cdk-lib/aws-ec2";
|
4
4
|
import { InfraStackConfiguration } from "./intra-stack-configuration";
|
5
5
|
import { exportValue } from "../import-util";
|
6
6
|
|
@@ -24,6 +24,30 @@ export class NetworkStack extends Stack {
|
|
24
24
|
|
25
25
|
this.vpc = this.createVpc(configuration);
|
26
26
|
exportValue(this, isc.environmentName, "VPCID", this.vpc.vpcId);
|
27
|
+
exportValue(
|
28
|
+
this,
|
29
|
+
isc.environmentName,
|
30
|
+
"digitrafficpublicASubnet",
|
31
|
+
this.vpc.publicSubnets[0].subnetId
|
32
|
+
);
|
33
|
+
exportValue(
|
34
|
+
this,
|
35
|
+
isc.environmentName,
|
36
|
+
"digitrafficpublicBSubnet",
|
37
|
+
this.vpc.publicSubnets[1].subnetId
|
38
|
+
);
|
39
|
+
exportValue(
|
40
|
+
this,
|
41
|
+
isc.environmentName,
|
42
|
+
"digitrafficprivateASubnet",
|
43
|
+
this.vpc.privateSubnets[0].subnetId
|
44
|
+
);
|
45
|
+
exportValue(
|
46
|
+
this,
|
47
|
+
isc.environmentName,
|
48
|
+
"digitrafficprivateBSubnet",
|
49
|
+
this.vpc.privateSubnets[1].subnetId
|
50
|
+
);
|
27
51
|
}
|
28
52
|
|
29
53
|
createVpc(configuration: NetworkConfiguration): Vpc {
|
@@ -32,7 +56,7 @@ export class NetworkStack extends Stack {
|
|
32
56
|
availabilityZones: ["eu-west-1a", "eu-west-1b"],
|
33
57
|
enableDnsHostnames: true,
|
34
58
|
enableDnsSupport: true,
|
35
|
-
|
59
|
+
ipAddresses: IpAddresses.cidr(configuration.cidr),
|
36
60
|
subnetConfiguration: [
|
37
61
|
{
|
38
62
|
name: "public",
|