@glicogh/healthcare-cdk 0.1.4 → 0.1.6
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/.env.uat +13 -4
- package/README.md +107 -6
- package/cdk.context.json +59 -0
- package/cdk.json +3 -18
- package/dist/@types/common.d.ts +19 -2
- package/dist/@types/common.js +20 -1
- package/dist/bin/cdk.js +3 -3
- package/dist/index.d.ts +1 -2
- package/dist/index.js +2 -3
- package/dist/lib/microservice-api-gateway.d.ts +5 -0
- package/dist/lib/microservice-api-gateway.js +40 -0
- package/dist/lib/microservice-laravel-based.d.ts +5 -0
- package/dist/lib/microservice-laravel-based.js +40 -0
- package/dist/lib/microservice-mysql.d.ts +5 -0
- package/dist/lib/microservice-mysql.js +40 -0
- package/dist/lib/microservice-network.d.ts +5 -0
- package/dist/lib/microservice-network.js +140 -0
- package/dist/lib/microservice-notification-service.d.ts +5 -0
- package/dist/lib/microservice-notification-service.js +40 -0
- package/dist/lib/microservice-portal.d.ts +5 -0
- package/dist/lib/microservice-portal.js +40 -0
- package/dist/lib/microservice-redis.d.ts +5 -0
- package/dist/lib/microservice-redis.js +40 -0
- package/dist/scripts/post-deployment-after-all.sh +2 -0
- package/dist/scripts/post-deployment-api-gateway.sh +35 -0
- package/dist/scripts/post-deployment-before-all.sh +166 -0
- package/dist/scripts/post-deployment-clone-repo.sh +12 -0
- package/dist/scripts/post-deployment-laravel-based.sh +86 -0
- package/dist/scripts/post-deployment-mysql.sh +22 -0
- package/dist/scripts/post-deployment-notification-service.sh +5 -0
- package/dist/scripts/post-deployment-portal.sh +32 -0
- package/dist/scripts/post-deployment-redis.sh +9 -0
- package/dist/test/cdk.test.js +1 -1
- package/dist/util/applyTags.d.ts +1 -2
- package/dist/util/applyTags.js +18 -6
- package/dist/util/constants.d.ts +27 -0
- package/dist/util/constants.js +46 -0
- package/dist/util/getEc2UserData.d.ts +2 -0
- package/dist/util/getEc2UserData.js +49 -0
- package/dist/util/getInstanceType.d.ts +5 -0
- package/dist/util/getInstanceType.js +19 -0
- package/dist/util/initBuildConfig.d.ts +3 -1
- package/dist/util/initBuildConfig.js +21 -8
- package/dist/util/initCdkStack.d.ts +2 -0
- package/dist/util/initCdkStack.js +58 -0
- package/dist/util/isLaravelBased.d.ts +1 -0
- package/dist/util/isLaravelBased.js +11 -0
- package/dist/util/isMicroservice.d.ts +1 -0
- package/dist/util/isMicroservice.js +11 -0
- package/jest.config.js +2 -2
- package/package.json +3 -3
- package/scripts/post-deployment-after-all.sh +2 -0
- package/scripts/post-deployment-api-gateway.sh +35 -0
- package/scripts/post-deployment-before-all.sh +166 -0
- package/scripts/post-deployment-clone-repo.sh +12 -0
- package/scripts/post-deployment-laravel-based.sh +86 -0
- package/scripts/post-deployment-mysql.sh +22 -0
- package/scripts/post-deployment-notification-service.sh +5 -0
- package/scripts/post-deployment-portal.sh +32 -0
- package/scripts/post-deployment-redis.sh +9 -0
- package/tsconfig.json +3 -11
- package/dist/lib/laravel-based-microservice-stack.d.ts +0 -6
- package/dist/lib/laravel-based-microservice-stack.js +0 -12
- package/dist/util/initLaravelBasedCdkStack.d.ts +0 -2
- package/dist/util/initLaravelBasedCdkStack.js +0 -27
package/.env.uat
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
APP_NAME=HealthcareMicroservice
|
|
1
2
|
ENV_NAME=uat
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
AWS_REGION=
|
|
5
|
-
AWS_ACCOUNT_ID=
|
|
3
|
+
SERVICE_NAME=
|
|
4
|
+
COMPANY_NAME=glico
|
|
5
|
+
AWS_REGION=eu-west-2
|
|
6
|
+
AWS_ACCOUNT_ID=825765383017
|
|
7
|
+
EC2_REDIS_INSTANCE_TYPE=t4g.nano
|
|
8
|
+
EC2_API_GATEWAY_INSTANCE_TYPE=t4g.nano
|
|
9
|
+
EC2_NOTIFICATION_SERVICE_INSTANCE_TYPE=
|
|
10
|
+
EC2_ACCOUNT_SERVICE_INSTANCE_TYPE=
|
|
11
|
+
EC2_PLAN_SERVICE_INSTANCE_TYPE=
|
|
12
|
+
EC2_POLICY_SERVICE_INSTANCE_TYPE=
|
|
13
|
+
EC2_CLAIMS_SERVICE_INSTANCE_TYPE=
|
|
14
|
+
EC2_REPORTING_SERVICE_INSTANCE_TYPE=
|
package/README.md
CHANGED
|
@@ -6,9 +6,110 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app.
|
|
|
6
6
|
|
|
7
7
|
## Useful commands
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
- `npm run build` compile typescript to js
|
|
10
|
+
- `npm run watch` watch for changes and compile
|
|
11
|
+
- `npm run test` perform the jest unit tests
|
|
12
|
+
- `npx cdk deploy` deploy this stack to your default AWS account/region
|
|
13
|
+
- `npx cdk diff` compare deployed stack with current state
|
|
14
|
+
- `npx cdk synth` emits the synthesized CloudFormation template
|
|
15
|
+
|
|
16
|
+
## Local setup
|
|
17
|
+
|
|
18
|
+
### AWS CLI
|
|
19
|
+
|
|
20
|
+
Follow these steps to setup the AWS CLI in order to run CDK commands
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
aws configure sso --profile glicogh-uat
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This will prompt you to enter further details. Here's an example
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
SSO session name (Recommended): isa
|
|
30
|
+
SSO start URL [None]: https://glicogh.awsapps.com/start/
|
|
31
|
+
SSO region [None]: us-east-1
|
|
32
|
+
SSO registration scopes [sso:account:access]:
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
This will open up the sso URL in a browser for you to auhtorize the CLI. After the authorization, the CLI will present all the AWS accounts (available to your user account) for you to make a selection. Here's an example of the prompt
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
There are 4 AWS accounts available to you.
|
|
39
|
+
> GLICO-Ghana, alfred.mantey@glicogroup.com (169555392631)
|
|
40
|
+
Healthcare Microservices Dev, mistabiggx+dev@gmail.com (640168444097)
|
|
41
|
+
Healthcare Microservices Prod, mistabiggx+glicoprod@gmail.com (273354667305)
|
|
42
|
+
Healthcare Microservices UAT, mistabiggx+uat@gmail.com (825765383017)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Select the account that best suits the environment you're trying to build in.
|
|
46
|
+
Once you make a selection, there will be a confirmation and another prompt that looks like the following
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Using the account ID 825765383017
|
|
50
|
+
The only role available to you is: AdministratorAccess_
|
|
51
|
+
Using the role name "AdministratorAccess_"
|
|
52
|
+
CLI default client Region [None]: eu-west-2
|
|
53
|
+
CLI default output format [None]: json
|
|
54
|
+
|
|
55
|
+
To use this profile, specify the profile name using --profile, as shown:
|
|
56
|
+
|
|
57
|
+
aws s3 ls --profile glicogh-uat
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### CDK CLI
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
npm install -g aws-cdk
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Testing setup
|
|
67
|
+
|
|
68
|
+
Run the following to list available stack
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
cdk --profile glicogh-uat --context env=uat ls
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The output looks like this
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
MicroserviceNetwork
|
|
78
|
+
MicroserviceApiGateway
|
|
79
|
+
MicroserviceRedis
|
|
80
|
+
MicroserviceMySQL
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Running the CDK
|
|
84
|
+
|
|
85
|
+
### Shared stack
|
|
86
|
+
|
|
87
|
+
The following stack are meant to be deployed once and shared across the microservices. These would typically be deployed from a local machine as opposed to within a CI/CD pipeline
|
|
88
|
+
|
|
89
|
+
- MicroserviceNetwork
|
|
90
|
+
- MicroserviceApiGateway
|
|
91
|
+
- MicroserviceRedis
|
|
92
|
+
- MicroserviceMySQL
|
|
93
|
+
|
|
94
|
+
The only required option for these stack is `env`. For example, to deploy `MicroserviceNetwork` in the UAT environment, you would run the command
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
cdk --profile glicogh-uat --context env=uat deploy MicroserviceNetwork
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Pipeline-based stack
|
|
101
|
+
|
|
102
|
+
The following stack on the other hand, are meant to deploy a new set of resources on each CDK deployment
|
|
103
|
+
|
|
104
|
+
- MicroserviceLaravelBased
|
|
105
|
+
- MicroserviceNotificationService
|
|
106
|
+
|
|
107
|
+
These are typically microservice stack and will be triggered each time code is merged into the `release` branch of a microservice repo. These stack will not be ran directly in this project, but rather from within each microservice project as a dependency. For example, to deploy the `account` microservice in the UAT environment, you would run the command
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
cdk --profile glicogh-uat --context env=uat --context version=1.0.1 --context service=account deploy
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
> The service option can also be passed in a .env
|
|
114
|
+
|
|
115
|
+
The above command is what you would run in the CDK CLI. However, you would typically be running the deployment in a CI/CD pipeline such as Github Actions, in which case the command may be different. You would have to refer to the CI/CD platform's documentation for how to achieve this.
|
package/cdk.context.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"availability-zones:account=825765383017:region=eu-west-2": [
|
|
3
|
+
"eu-west-2a",
|
|
4
|
+
"eu-west-2b",
|
|
5
|
+
"eu-west-2c"
|
|
6
|
+
],
|
|
7
|
+
"vpc-provider:account=825765383017:filter.tag:Name=Microservice-VPC-uat:region=eu-west-2:returnAsymmetricSubnets=true": {
|
|
8
|
+
"vpcId": "vpc-03d47b32a2968ce12",
|
|
9
|
+
"vpcCidrBlock": "10.0.0.0/16",
|
|
10
|
+
"ownerAccountId": "825765383017",
|
|
11
|
+
"availabilityZones": [],
|
|
12
|
+
"subnetGroups": [
|
|
13
|
+
{
|
|
14
|
+
"name": "Private",
|
|
15
|
+
"type": "Private",
|
|
16
|
+
"subnets": [
|
|
17
|
+
{
|
|
18
|
+
"subnetId": "subnet-0266b328ab9d7575a",
|
|
19
|
+
"cidr": "10.0.128.0/17",
|
|
20
|
+
"availabilityZone": "eu-west-2a",
|
|
21
|
+
"routeTableId": "rtb-048692355782d9212"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "Public",
|
|
27
|
+
"type": "Public",
|
|
28
|
+
"subnets": [
|
|
29
|
+
{
|
|
30
|
+
"subnetId": "subnet-068ef4a3a1bad40ce",
|
|
31
|
+
"cidr": "10.0.0.0/17",
|
|
32
|
+
"availabilityZone": "eu-west-2a",
|
|
33
|
+
"routeTableId": "rtb-03ba14607aae43e26"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"security-group:account=825765383017:region=eu-west-2:securityGroupName=API-Gateway-SG-uat:vpcId=vpc-03d47b32a2968ce12": {
|
|
40
|
+
"securityGroupId": "sg-0897e07c5b3f608ba",
|
|
41
|
+
"allowAllOutbound": false
|
|
42
|
+
},
|
|
43
|
+
"security-group:account=825765383017:region=eu-west-2:securityGroupName=Redis-SG-uat:vpcId=vpc-03d47b32a2968ce12": {
|
|
44
|
+
"securityGroupId": "sg-0a5e24e05c4fa4d75",
|
|
45
|
+
"allowAllOutbound": false
|
|
46
|
+
},
|
|
47
|
+
"security-group:account=825765383017:region=eu-west-2:securityGroupName=MySQL-SG-uat:vpcId=vpc-03d47b32a2968ce12": {
|
|
48
|
+
"securityGroupId": "sg-082e5ec045ebd5e2c",
|
|
49
|
+
"allowAllOutbound": false
|
|
50
|
+
},
|
|
51
|
+
"security-group:account=825765383017:region=eu-west-2:securityGroupName=Laravel-Based-SG-uat:vpcId=vpc-03d47b32a2968ce12": {
|
|
52
|
+
"securityGroupId": "sg-0946f3c552f1ee403",
|
|
53
|
+
"allowAllOutbound": false
|
|
54
|
+
},
|
|
55
|
+
"security-group:account=825765383017:region=eu-west-2:securityGroupName=Portal-SG-uat:vpcId=vpc-03d47b32a2968ce12": {
|
|
56
|
+
"securityGroupId": "sg-0c98d6c0826a7b0a0",
|
|
57
|
+
"allowAllOutbound": false
|
|
58
|
+
}
|
|
59
|
+
}
|
package/cdk.json
CHANGED
|
@@ -1,28 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app": "npx ts-node --prefer-ts-exts bin/cdk.ts",
|
|
3
3
|
"watch": {
|
|
4
|
-
"include": [
|
|
5
|
-
|
|
6
|
-
],
|
|
7
|
-
"exclude": [
|
|
8
|
-
"README.md",
|
|
9
|
-
"cdk*.json",
|
|
10
|
-
"**/*.d.ts",
|
|
11
|
-
"**/*.js",
|
|
12
|
-
"tsconfig.json",
|
|
13
|
-
"package*.json",
|
|
14
|
-
"yarn.lock",
|
|
15
|
-
"node_modules",
|
|
16
|
-
"test"
|
|
17
|
-
]
|
|
4
|
+
"include": ["**"],
|
|
5
|
+
"exclude": ["README.md", "cdk*.json", "**/*.d.ts", "**/*.js", "tsconfig.json", "package*.json", "yarn.lock", "node_modules", "test"]
|
|
18
6
|
},
|
|
19
7
|
"context": {
|
|
20
8
|
"@aws-cdk/aws-lambda:recognizeLayerVersion": true,
|
|
21
9
|
"@aws-cdk/core:checkSecretUsage": true,
|
|
22
|
-
"@aws-cdk/core:target-partitions": [
|
|
23
|
-
"aws",
|
|
24
|
-
"aws-cn"
|
|
25
|
-
],
|
|
10
|
+
"@aws-cdk/core:target-partitions": ["aws", "aws-cn"],
|
|
26
11
|
"@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
|
|
27
12
|
"@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
|
|
28
13
|
"@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true,
|
package/dist/@types/common.d.ts
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
export type EnvName = 'uat' | 'prod';
|
|
2
|
+
export type RepoBranch = 'master' | 'release';
|
|
2
3
|
export type BuildConfig = {
|
|
4
|
+
appName: string;
|
|
5
|
+
appVersion: string;
|
|
6
|
+
buildId: string;
|
|
3
7
|
envName: EnvName;
|
|
4
8
|
envPath: string;
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
serviceName: Microservice | OtherCDKService;
|
|
10
|
+
companyName: string;
|
|
7
11
|
aws: {
|
|
8
12
|
account: string;
|
|
9
13
|
region: string;
|
|
10
14
|
};
|
|
11
15
|
};
|
|
16
|
+
export type Microservice = 'account' | 'plan' | 'policy' | 'claims' | 'notification' | 'reporting';
|
|
17
|
+
export type OtherCDKService = 'network' | 'api-gateway' | 'redis' | 'mysql' | 'portal';
|
|
18
|
+
export declare const MicroserviceEnum: Record<Microservice, Microservice>;
|
|
19
|
+
export declare const MicroserviceList: Microservice[];
|
|
20
|
+
export declare const LaravelBasedServiceList: ("account" | "plan" | "policy" | "claims" | "reporting")[];
|
|
21
|
+
export declare const OtherCDKServiceEnum: Record<OtherCDKService, OtherCDKService>;
|
|
22
|
+
export declare const OtherCDKServiceList: OtherCDKService[];
|
|
23
|
+
export type RepoUrls = {
|
|
24
|
+
[key in BuildConfig['serviceName']]?: string;
|
|
25
|
+
};
|
|
26
|
+
export type RepoBranches = {
|
|
27
|
+
[key in EnvName]: RepoBranch;
|
|
28
|
+
};
|
package/dist/@types/common.js
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.OtherCDKServiceList = exports.OtherCDKServiceEnum = exports.LaravelBasedServiceList = exports.MicroserviceList = exports.MicroserviceEnum = void 0;
|
|
4
|
+
exports.MicroserviceEnum = {
|
|
5
|
+
account: 'account',
|
|
6
|
+
plan: 'plan',
|
|
7
|
+
policy: 'policy',
|
|
8
|
+
notification: 'notification',
|
|
9
|
+
reporting: 'reporting',
|
|
10
|
+
claims: 'claims',
|
|
11
|
+
};
|
|
12
|
+
exports.MicroserviceList = Object.values(exports.MicroserviceEnum);
|
|
13
|
+
exports.LaravelBasedServiceList = exports.MicroserviceList.filter((i) => i !== 'notification');
|
|
14
|
+
exports.OtherCDKServiceEnum = {
|
|
15
|
+
network: 'network',
|
|
16
|
+
'api-gateway': 'api-gateway',
|
|
17
|
+
redis: 'redis',
|
|
18
|
+
mysql: 'mysql',
|
|
19
|
+
portal: 'portal',
|
|
20
|
+
};
|
|
21
|
+
exports.OtherCDKServiceList = Object.values(exports.OtherCDKServiceEnum);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vQHR5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQmEsUUFBQSxnQkFBZ0IsR0FBdUM7SUFDbEUsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixZQUFZLEVBQUUsY0FBYztJQUM1QixTQUFTLEVBQUUsV0FBVztJQUN0QixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBRVcsUUFBQSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHdCQUFnQixDQUFDLENBQUM7QUFFbkQsUUFBQSx1QkFBdUIsR0FBRyx3QkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQztBQUUvRSxRQUFBLG1CQUFtQixHQUE2QztJQUMzRSxPQUFPLEVBQUUsU0FBUztJQUNsQixhQUFhLEVBQUUsYUFBYTtJQUM1QixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQywyQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRW52TmFtZSA9ICd1YXQnIHwgJ3Byb2QnO1xuZXhwb3J0IHR5cGUgUmVwb0JyYW5jaCA9ICdtYXN0ZXInIHwgJ3JlbGVhc2UnO1xuZXhwb3J0IHR5cGUgQnVpbGRDb25maWcgPSB7XG4gIGFwcE5hbWU6IHN0cmluZztcbiAgYXBwVmVyc2lvbjogc3RyaW5nO1xuICBidWlsZElkOiBzdHJpbmc7XG4gIGVudk5hbWU6IEVudk5hbWU7XG4gIGVudlBhdGg6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IE1pY3Jvc2VydmljZSB8IE90aGVyQ0RLU2VydmljZTtcbiAgY29tcGFueU5hbWU6IHN0cmluZztcbiAgYXdzOiB7XG4gICAgYWNjb3VudDogc3RyaW5nO1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIE1pY3Jvc2VydmljZSA9ICdhY2NvdW50JyB8ICdwbGFuJyB8ICdwb2xpY3knIHwgJ2NsYWltcycgfCAnbm90aWZpY2F0aW9uJyB8ICdyZXBvcnRpbmcnO1xuXG5leHBvcnQgdHlwZSBPdGhlckNES1NlcnZpY2UgPSAnbmV0d29yaycgfCAnYXBpLWdhdGV3YXknIHwgJ3JlZGlzJyB8ICdteXNxbCcgfCAncG9ydGFsJztcblxuZXhwb3J0IGNvbnN0IE1pY3Jvc2VydmljZUVudW06IFJlY29yZDxNaWNyb3NlcnZpY2UsIE1pY3Jvc2VydmljZT4gPSB7XG4gIGFjY291bnQ6ICdhY2NvdW50JyxcbiAgcGxhbjogJ3BsYW4nLFxuICBwb2xpY3k6ICdwb2xpY3knLFxuICBub3RpZmljYXRpb246ICdub3RpZmljYXRpb24nLFxuICByZXBvcnRpbmc6ICdyZXBvcnRpbmcnLFxuICBjbGFpbXM6ICdjbGFpbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IE1pY3Jvc2VydmljZUxpc3QgPSBPYmplY3QudmFsdWVzKE1pY3Jvc2VydmljZUVudW0pO1xuXG5leHBvcnQgY29uc3QgTGFyYXZlbEJhc2VkU2VydmljZUxpc3QgPSBNaWNyb3NlcnZpY2VMaXN0LmZpbHRlcigoaSkgPT4gaSAhPT0gJ25vdGlmaWNhdGlvbicpO1xuXG5leHBvcnQgY29uc3QgT3RoZXJDREtTZXJ2aWNlRW51bTogUmVjb3JkPE90aGVyQ0RLU2VydmljZSwgT3RoZXJDREtTZXJ2aWNlPiA9IHtcbiAgbmV0d29yazogJ25ldHdvcmsnLFxuICAnYXBpLWdhdGV3YXknOiAnYXBpLWdhdGV3YXknLFxuICByZWRpczogJ3JlZGlzJyxcbiAgbXlzcWw6ICdteXNxbCcsXG4gIHBvcnRhbDogJ3BvcnRhbCcsXG59O1xuXG5leHBvcnQgY29uc3QgT3RoZXJDREtTZXJ2aWNlTGlzdCA9IE9iamVjdC52YWx1ZXMoT3RoZXJDREtTZXJ2aWNlRW51bSk7XG5cbmV4cG9ydCB0eXBlIFJlcG9VcmxzID0geyBba2V5IGluIEJ1aWxkQ29uZmlnWydzZXJ2aWNlTmFtZSddXT86IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgUmVwb0JyYW5jaGVzID0geyBba2V5IGluIEVudk5hbWVdOiBSZXBvQnJhbmNoIH07XG4iXX0=
|
package/dist/bin/cdk.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const
|
|
5
|
-
(0,
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
const initCdkStack_1 = require("../util/initCdkStack");
|
|
5
|
+
(0, initCdkStack_1.initCdkStack)();
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1REFBb0Q7QUFFcEQsSUFBQSwyQkFBWSxHQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBpbml0Q2RrU3RhY2sgfSBmcm9tICcuLi91dGlsL2luaXRDZGtTdGFjayc7XG5cbmluaXRDZGtTdGFjaygpO1xuIl19
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './util/initLaravelBasedCdkStack';
|
|
1
|
+
export * from './util/initCdkStack';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELGtFQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2xhcmF2ZWwtYmFzZWQtbWljcm9zZXJ2aWNlLXN0YWNrJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC9pbml0TGFyYXZlbEJhc2VkQ2RrU3RhY2snOyJdfQ==
|
|
17
|
+
__exportStar(require("./util/initCdkStack"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91dGlsL2luaXRDZGtTdGFjayc7XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MicroserviceApiGateway = void 0;
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const constants_1 = require("../util/constants");
|
|
6
|
+
const initBuildConfig_1 = require("../util/initBuildConfig");
|
|
7
|
+
const getInstanceType_1 = require("../util/getInstanceType");
|
|
8
|
+
const getEc2UserData_1 = require("../util/getEc2UserData");
|
|
9
|
+
class MicroserviceApiGateway extends cdk.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, props);
|
|
12
|
+
if (!initBuildConfig_1.buildConfig) {
|
|
13
|
+
throw new Error('BuildConfig not set');
|
|
14
|
+
}
|
|
15
|
+
const vpc = cdk.aws_ec2.Vpc.fromLookup(this, 'VPCLookup', {
|
|
16
|
+
vpcName: (0, constants_1.getEnvConstant)('vpcId'),
|
|
17
|
+
});
|
|
18
|
+
const secGroup = cdk.aws_ec2.SecurityGroup.fromLookupByName(this, 'SecGroupLookup', (0, constants_1.getEnvConstant)('apiGatewaySecurityGroupId'), vpc);
|
|
19
|
+
const instance = new cdk.aws_ec2.Instance(this, `ec2-api-gateway-${initBuildConfig_1.buildConfig.envName}`, {
|
|
20
|
+
vpc,
|
|
21
|
+
securityGroup: secGroup,
|
|
22
|
+
instanceType: new cdk.aws_ec2.InstanceType((0, getInstanceType_1.getInstanceType)('api-gateway')),
|
|
23
|
+
machineImage: cdk.aws_ec2.MachineImage.genericLinux({
|
|
24
|
+
[initBuildConfig_1.buildConfig.aws.region]: (0, constants_1.getConstant)('defaultImageAmi'),
|
|
25
|
+
}),
|
|
26
|
+
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PUBLIC },
|
|
27
|
+
associatePublicIpAddress: false,
|
|
28
|
+
userData: cdk.aws_ec2.UserData.custom((0, getEc2UserData_1.getEc2UserData)('api-gateway')),
|
|
29
|
+
role: cdk.aws_iam.Role.fromRoleName(this, 'BaseRoleLookup', (0, constants_1.getConstant)('baseRoleName')),
|
|
30
|
+
});
|
|
31
|
+
new cdk.aws_ec2.CfnEIP(this, 'AssignElasticIP', {
|
|
32
|
+
instanceId: instance.instanceId,
|
|
33
|
+
});
|
|
34
|
+
new cdk.CfnOutput(this, 'api-gateway-public-ip', {
|
|
35
|
+
value: instance.instancePublicIp,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.MicroserviceApiGateway = MicroserviceApiGateway;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWFwaS1nYXRld2F5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL21pY3Jvc2VydmljZS1hcGktZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWdFO0FBQ2hFLDZEQUFzRDtBQUN0RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELE1BQWEsc0JBQXVCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDbkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUEsMEJBQWMsRUFBQyxPQUFPLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUEsMEJBQWMsRUFBQywyQkFBMkIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRJLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLG1CQUFtQiw2QkFBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hGLEdBQUc7WUFDSCxhQUFhLEVBQUUsUUFBUTtZQUN2QixZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFBLGlDQUFlLEVBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztnQkFDbEQsQ0FBQyw2QkFBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFBLHVCQUFXLEVBQUMsaUJBQWlCLENBQVc7YUFDbkUsQ0FBQztZQUNGLFVBQVUsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDekQsd0JBQXdCLEVBQUUsS0FBSztZQUMvQixRQUFRLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUEsK0JBQWMsRUFBQyxhQUFhLENBQUMsQ0FBQztZQUNwRSxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFBLHVCQUFXLEVBQUMsY0FBYyxDQUFXLENBQUM7U0FDbkcsQ0FBQyxDQUFDO1FBRUgsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDOUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDL0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0I7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbENELHdEQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGdldENvbnN0YW50LCBnZXRFbnZDb25zdGFudCB9IGZyb20gJy4uL3V0aWwvY29uc3RhbnRzJztcbmltcG9ydCB7IGJ1aWxkQ29uZmlnIH0gZnJvbSAnLi4vdXRpbC9pbml0QnVpbGRDb25maWcnO1xuaW1wb3J0IHsgZ2V0SW5zdGFuY2VUeXBlIH0gZnJvbSAnLi4vdXRpbC9nZXRJbnN0YW5jZVR5cGUnO1xuaW1wb3J0IHsgZ2V0RWMyVXNlckRhdGEgfSBmcm9tICcuLi91dGlsL2dldEVjMlVzZXJEYXRhJztcblxuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZUFwaUdhdGV3YXkgZXh0ZW5kcyBjZGsuU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IGNkay5TdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAoIWJ1aWxkQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0J1aWxkQ29uZmlnIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cGMgPSBjZGsuYXdzX2VjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAnVlBDTG9va3VwJywge1xuICAgICAgdnBjTmFtZTogZ2V0RW52Q29uc3RhbnQoJ3ZwY0lkJyksXG4gICAgfSk7XG4gICAgY29uc3Qgc2VjR3JvdXAgPSBjZGsuYXdzX2VjMi5TZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeU5hbWUodGhpcywgJ1NlY0dyb3VwTG9va3VwJywgZ2V0RW52Q29uc3RhbnQoJ2FwaUdhdGV3YXlTZWN1cml0eUdyb3VwSWQnKSwgdnBjKTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNkay5hd3NfZWMyLkluc3RhbmNlKHRoaXMsIGBlYzItYXBpLWdhdGV3YXktJHtidWlsZENvbmZpZy5lbnZOYW1lfWAsIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHNlY0dyb3VwLFxuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgY2RrLmF3c19lYzIuSW5zdGFuY2VUeXBlKGdldEluc3RhbmNlVHlwZSgnYXBpLWdhdGV3YXknKSksXG4gICAgICBtYWNoaW5lSW1hZ2U6IGNkay5hd3NfZWMyLk1hY2hpbmVJbWFnZS5nZW5lcmljTGludXgoe1xuICAgICAgICBbYnVpbGRDb25maWcuYXdzLnJlZ2lvbl06IGdldENvbnN0YW50KCdkZWZhdWx0SW1hZ2VBbWknKSBhcyBzdHJpbmcsXG4gICAgICB9KSxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogY2RrLmF3c19lYzIuU3VibmV0VHlwZS5QVUJMSUMgfSxcbiAgICAgIGFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogZmFsc2UsXG4gICAgICB1c2VyRGF0YTogY2RrLmF3c19lYzIuVXNlckRhdGEuY3VzdG9tKGdldEVjMlVzZXJEYXRhKCdhcGktZ2F0ZXdheScpKSxcbiAgICAgIHJvbGU6IGNkay5hd3NfaWFtLlJvbGUuZnJvbVJvbGVOYW1lKHRoaXMsICdCYXNlUm9sZUxvb2t1cCcsIGdldENvbnN0YW50KCdiYXNlUm9sZU5hbWUnKSBhcyBzdHJpbmcpLFxuICAgIH0pO1xuXG4gICAgbmV3IGNkay5hd3NfZWMyLkNmbkVJUCh0aGlzLCAnQXNzaWduRWxhc3RpY0lQJywge1xuICAgICAgaW5zdGFuY2VJZDogaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdhcGktZ2F0ZXdheS1wdWJsaWMtaXAnLCB7XG4gICAgICB2YWx1ZTogaW5zdGFuY2UuaW5zdGFuY2VQdWJsaWNJcCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MicroserviceLaravelBased = void 0;
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const constants_1 = require("../util/constants");
|
|
6
|
+
const initBuildConfig_1 = require("../util/initBuildConfig");
|
|
7
|
+
const getInstanceType_1 = require("../util/getInstanceType");
|
|
8
|
+
const getEc2UserData_1 = require("../util/getEc2UserData");
|
|
9
|
+
class MicroserviceLaravelBased extends cdk.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, props);
|
|
12
|
+
if (!initBuildConfig_1.buildConfig) {
|
|
13
|
+
throw new Error('BuildConfig not set');
|
|
14
|
+
}
|
|
15
|
+
const vpc = cdk.aws_ec2.Vpc.fromLookup(this, 'VPCLookup', {
|
|
16
|
+
vpcName: (0, constants_1.getEnvConstant)('vpcId'),
|
|
17
|
+
});
|
|
18
|
+
const secGroup = cdk.aws_ec2.SecurityGroup.fromLookupByName(this, 'SecGroupLookup', (0, constants_1.getEnvConstant)('laravelBasedSecurityGroupId'), vpc);
|
|
19
|
+
const instance = new cdk.aws_ec2.Instance(this, `ec2-${initBuildConfig_1.buildConfig.serviceName}-service-${initBuildConfig_1.buildConfig.envName}`, {
|
|
20
|
+
vpc,
|
|
21
|
+
securityGroup: secGroup,
|
|
22
|
+
instanceType: new cdk.aws_ec2.InstanceType((0, getInstanceType_1.getInstanceType)(initBuildConfig_1.buildConfig.serviceName)),
|
|
23
|
+
machineImage: cdk.aws_ec2.MachineImage.genericLinux({
|
|
24
|
+
[initBuildConfig_1.buildConfig.aws.region]: (0, constants_1.getConstant)('defaultImageAmi'),
|
|
25
|
+
}),
|
|
26
|
+
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS },
|
|
27
|
+
associatePublicIpAddress: false,
|
|
28
|
+
userData: cdk.aws_ec2.UserData.custom((0, getEc2UserData_1.getEc2UserData)()),
|
|
29
|
+
role: cdk.aws_iam.Role.fromRoleName(this, 'BaseRoleLookup', (0, constants_1.getConstant)('baseRoleName')),
|
|
30
|
+
});
|
|
31
|
+
new cdk.CfnOutput(this, `${initBuildConfig_1.buildConfig.serviceName}-service-internal-address`, {
|
|
32
|
+
value: instance.instancePrivateDnsName,
|
|
33
|
+
});
|
|
34
|
+
new cdk.CfnOutput(this, `${initBuildConfig_1.buildConfig.serviceName}-service-internal-ip`, {
|
|
35
|
+
value: instance.instancePrivateIp,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.MicroserviceLaravelBased = MicroserviceLaravelBased;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWxhcmF2ZWwtYmFzZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWljcm9zZXJ2aWNlLWxhcmF2ZWwtYmFzZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBRW5DLGlEQUFnRTtBQUNoRSw2REFBc0Q7QUFDdEQsNkRBQTBEO0FBQzFELDJEQUF3RDtBQUV4RCxNQUFhLHdCQUF5QixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLDZCQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3hELE9BQU8sRUFBRSxJQUFBLDBCQUFjLEVBQUMsT0FBTyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFBLDBCQUFjLEVBQUMsNkJBQTZCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV4SSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLDZCQUFXLENBQUMsV0FBVyxZQUFZLDZCQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0csR0FBRztZQUNILGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUEsaUNBQWUsRUFBQyw2QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BGLFlBQVksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBQ2xELENBQUMsNkJBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBQSx1QkFBVyxFQUFDLGlCQUFpQixDQUFXO2FBQ25FLENBQUM7WUFDRixVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7WUFDdEUsd0JBQXdCLEVBQUUsS0FBSztZQUMvQixRQUFRLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUEsK0JBQWMsR0FBRSxDQUFDO1lBQ3ZELElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUEsdUJBQVcsRUFBQyxjQUFjLENBQVcsQ0FBQztTQUNuRyxDQUFDLENBQUM7UUFFSCxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsNkJBQVcsQ0FBQyxXQUFXLDJCQUEyQixFQUFFO1lBQzdFLEtBQUssRUFBRSxRQUFRLENBQUMsc0JBQXNCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyw2QkFBVyxDQUFDLFdBQVcsc0JBQXNCLEVBQUU7WUFDeEUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUI7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbENELDREQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGdldENvbnN0YW50LCBnZXRFbnZDb25zdGFudCB9IGZyb20gJy4uL3V0aWwvY29uc3RhbnRzJztcbmltcG9ydCB7IGJ1aWxkQ29uZmlnIH0gZnJvbSAnLi4vdXRpbC9pbml0QnVpbGRDb25maWcnO1xuaW1wb3J0IHsgZ2V0SW5zdGFuY2VUeXBlIH0gZnJvbSAnLi4vdXRpbC9nZXRJbnN0YW5jZVR5cGUnO1xuaW1wb3J0IHsgZ2V0RWMyVXNlckRhdGEgfSBmcm9tICcuLi91dGlsL2dldEVjMlVzZXJEYXRhJztcblxuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZUxhcmF2ZWxCYXNlZCBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogY2RrLlN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmICghYnVpbGRDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRDb25maWcgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwYyA9IGNkay5hd3NfZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsICdWUENMb29rdXAnLCB7XG4gICAgICB2cGNOYW1lOiBnZXRFbnZDb25zdGFudCgndnBjSWQnKSxcbiAgICB9KTtcbiAgICBjb25zdCBzZWNHcm91cCA9IGNkay5hd3NfZWMyLlNlY3VyaXR5R3JvdXAuZnJvbUxvb2t1cEJ5TmFtZSh0aGlzLCAnU2VjR3JvdXBMb29rdXAnLCBnZXRFbnZDb25zdGFudCgnbGFyYXZlbEJhc2VkU2VjdXJpdHlHcm91cElkJyksIHZwYyk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBjZGsuYXdzX2VjMi5JbnN0YW5jZSh0aGlzLCBgZWMyLSR7YnVpbGRDb25maWcuc2VydmljZU5hbWV9LXNlcnZpY2UtJHtidWlsZENvbmZpZy5lbnZOYW1lfWAsIHtcbiAgICAgIHZwYyxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHNlY0dyb3VwLFxuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgY2RrLmF3c19lYzIuSW5zdGFuY2VUeXBlKGdldEluc3RhbmNlVHlwZShidWlsZENvbmZpZy5zZXJ2aWNlTmFtZSkpLFxuICAgICAgbWFjaGluZUltYWdlOiBjZGsuYXdzX2VjMi5NYWNoaW5lSW1hZ2UuZ2VuZXJpY0xpbnV4KHtcbiAgICAgICAgW2J1aWxkQ29uZmlnLmF3cy5yZWdpb25dOiBnZXRDb25zdGFudCgnZGVmYXVsdEltYWdlQW1pJykgYXMgc3RyaW5nLFxuICAgICAgfSksXG4gICAgICB2cGNTdWJuZXRzOiB7IHN1Ym5ldFR5cGU6IGNkay5hd3NfZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9LFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiBmYWxzZSxcbiAgICAgIHVzZXJEYXRhOiBjZGsuYXdzX2VjMi5Vc2VyRGF0YS5jdXN0b20oZ2V0RWMyVXNlckRhdGEoKSksXG4gICAgICByb2xlOiBjZGsuYXdzX2lhbS5Sb2xlLmZyb21Sb2xlTmFtZSh0aGlzLCAnQmFzZVJvbGVMb29rdXAnLCBnZXRDb25zdGFudCgnYmFzZVJvbGVOYW1lJykgYXMgc3RyaW5nKSxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIGAke2J1aWxkQ29uZmlnLnNlcnZpY2VOYW1lfS1zZXJ2aWNlLWludGVybmFsLWFkZHJlc3NgLCB7XG4gICAgICB2YWx1ZTogaW5zdGFuY2UuaW5zdGFuY2VQcml2YXRlRG5zTmFtZSxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIGAke2J1aWxkQ29uZmlnLnNlcnZpY2VOYW1lfS1zZXJ2aWNlLWludGVybmFsLWlwYCwge1xuICAgICAgdmFsdWU6IGluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZUlwLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MicroserviceMySql = void 0;
|
|
4
|
+
const cdk = require("aws-cdk-lib");
|
|
5
|
+
const constants_1 = require("../util/constants");
|
|
6
|
+
const initBuildConfig_1 = require("../util/initBuildConfig");
|
|
7
|
+
const getInstanceType_1 = require("../util/getInstanceType");
|
|
8
|
+
const getEc2UserData_1 = require("../util/getEc2UserData");
|
|
9
|
+
class MicroserviceMySql extends cdk.Stack {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, props);
|
|
12
|
+
if (!initBuildConfig_1.buildConfig) {
|
|
13
|
+
throw new Error('BuildConfig not set');
|
|
14
|
+
}
|
|
15
|
+
const vpc = cdk.aws_ec2.Vpc.fromLookup(this, 'VPCLookup', {
|
|
16
|
+
vpcName: (0, constants_1.getEnvConstant)('vpcId'),
|
|
17
|
+
});
|
|
18
|
+
const secGroup = cdk.aws_ec2.SecurityGroup.fromLookupByName(this, 'SecGroupLookup', (0, constants_1.getEnvConstant)('mysqlSecurityGroupId'), vpc);
|
|
19
|
+
const instance = new cdk.aws_ec2.Instance(this, `ec2-mysql-${initBuildConfig_1.buildConfig.envName}`, {
|
|
20
|
+
vpc,
|
|
21
|
+
securityGroup: secGroup,
|
|
22
|
+
instanceType: new cdk.aws_ec2.InstanceType((0, getInstanceType_1.getInstanceType)('mysql')),
|
|
23
|
+
machineImage: cdk.aws_ec2.MachineImage.genericLinux({
|
|
24
|
+
[initBuildConfig_1.buildConfig.aws.region]: (0, constants_1.getConstant)('defaultImageAmi'),
|
|
25
|
+
}),
|
|
26
|
+
vpcSubnets: { subnetType: cdk.aws_ec2.SubnetType.PRIVATE_WITH_EGRESS },
|
|
27
|
+
associatePublicIpAddress: false,
|
|
28
|
+
userData: cdk.aws_ec2.UserData.custom((0, getEc2UserData_1.getEc2UserData)('mysql')),
|
|
29
|
+
role: cdk.aws_iam.Role.fromRoleName(this, 'BaseRoleLookup', (0, constants_1.getConstant)('baseRoleName')),
|
|
30
|
+
});
|
|
31
|
+
new cdk.CfnOutput(this, 'mysql-internal-address', {
|
|
32
|
+
value: instance.instancePrivateDnsName,
|
|
33
|
+
});
|
|
34
|
+
new cdk.CfnOutput(this, 'mysql-internal-ip', {
|
|
35
|
+
value: instance.instancePrivateIp,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.MicroserviceMySql = MicroserviceMySql;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLW15c3FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL21pY3Jvc2VydmljZS1teXNxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWdFO0FBQ2hFLDZEQUFzRDtBQUN0RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELE1BQWEsaUJBQWtCLFNBQVEsR0FBRyxDQUFDLEtBQUs7SUFDOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsNkJBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDeEQsT0FBTyxFQUFFLElBQUEsMEJBQWMsRUFBQyxPQUFPLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUEsMEJBQWMsRUFBQyxzQkFBc0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWpJLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsNkJBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsRixHQUFHO1lBQ0gsYUFBYSxFQUFFLFFBQVE7WUFDdkIsWUFBWSxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBQSxpQ0FBZSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLFlBQVksRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBQ2xELENBQUMsNkJBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBQSx1QkFBVyxFQUFDLGlCQUFpQixDQUFXO2FBQ25FLENBQUM7WUFDRixVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7WUFDdEUsd0JBQXdCLEVBQUUsS0FBSztZQUMvQixRQUFRLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUEsK0JBQWMsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFBLHVCQUFXLEVBQUMsY0FBYyxDQUFXLENBQUM7U0FDbkcsQ0FBQyxDQUFDO1FBRUgsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUNoRCxLQUFLLEVBQUUsUUFBUSxDQUFDLHNCQUFzQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQzNDLEtBQUssRUFBRSxRQUFRLENBQUMsaUJBQWlCO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5DRCw4Q0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBnZXRDb25zdGFudCwgZ2V0RW52Q29uc3RhbnQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBidWlsZENvbmZpZyB9IGZyb20gJy4uL3V0aWwvaW5pdEJ1aWxkQ29uZmlnJztcbmltcG9ydCB7IGdldEluc3RhbmNlVHlwZSB9IGZyb20gJy4uL3V0aWwvZ2V0SW5zdGFuY2VUeXBlJztcbmltcG9ydCB7IGdldEVjMlVzZXJEYXRhIH0gZnJvbSAnLi4vdXRpbC9nZXRFYzJVc2VyRGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBNaWNyb3NlcnZpY2VNeVNxbCBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogY2RrLlN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmICghYnVpbGRDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGRDb25maWcgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwYyA9IGNkay5hd3NfZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsICdWUENMb29rdXAnLCB7XG4gICAgICB2cGNOYW1lOiBnZXRFbnZDb25zdGFudCgndnBjSWQnKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlY0dyb3VwID0gY2RrLmF3c19lYzIuU2VjdXJpdHlHcm91cC5mcm9tTG9va3VwQnlOYW1lKHRoaXMsICdTZWNHcm91cExvb2t1cCcsIGdldEVudkNvbnN0YW50KCdteXNxbFNlY3VyaXR5R3JvdXBJZCcpLCB2cGMpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY2RrLmF3c19lYzIuSW5zdGFuY2UodGhpcywgYGVjMi1teXNxbC0ke2J1aWxkQ29uZmlnLmVudk5hbWV9YCwge1xuICAgICAgdnBjLFxuICAgICAgc2VjdXJpdHlHcm91cDogc2VjR3JvdXAsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBjZGsuYXdzX2VjMi5JbnN0YW5jZVR5cGUoZ2V0SW5zdGFuY2VUeXBlKCdteXNxbCcpKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogY2RrLmF3c19lYzIuTWFjaGluZUltYWdlLmdlbmVyaWNMaW51eCh7XG4gICAgICAgIFtidWlsZENvbmZpZy5hd3MucmVnaW9uXTogZ2V0Q29uc3RhbnQoJ2RlZmF1bHRJbWFnZUFtaScpIGFzIHN0cmluZyxcbiAgICAgIH0pLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlOiBjZGsuYXdzX2VjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSxcbiAgICAgIGFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogZmFsc2UsXG4gICAgICB1c2VyRGF0YTogY2RrLmF3c19lYzIuVXNlckRhdGEuY3VzdG9tKGdldEVjMlVzZXJEYXRhKCdteXNxbCcpKSxcbiAgICAgIHJvbGU6IGNkay5hd3NfaWFtLlJvbGUuZnJvbVJvbGVOYW1lKHRoaXMsICdCYXNlUm9sZUxvb2t1cCcsIGdldENvbnN0YW50KCdiYXNlUm9sZU5hbWUnKSBhcyBzdHJpbmcpLFxuICAgIH0pO1xuXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgJ215c3FsLWludGVybmFsLWFkZHJlc3MnLCB7XG4gICAgICB2YWx1ZTogaW5zdGFuY2UuaW5zdGFuY2VQcml2YXRlRG5zTmFtZSxcbiAgICB9KTtcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdteXNxbC1pbnRlcm5hbC1pcCcsIHtcbiAgICAgIHZhbHVlOiBpbnN0YW5jZS5pbnN0YW5jZVByaXZhdGVJcCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|