@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.
Files changed (65) hide show
  1. package/.env.uat +13 -4
  2. package/README.md +107 -6
  3. package/cdk.context.json +59 -0
  4. package/cdk.json +3 -18
  5. package/dist/@types/common.d.ts +19 -2
  6. package/dist/@types/common.js +20 -1
  7. package/dist/bin/cdk.js +3 -3
  8. package/dist/index.d.ts +1 -2
  9. package/dist/index.js +2 -3
  10. package/dist/lib/microservice-api-gateway.d.ts +5 -0
  11. package/dist/lib/microservice-api-gateway.js +40 -0
  12. package/dist/lib/microservice-laravel-based.d.ts +5 -0
  13. package/dist/lib/microservice-laravel-based.js +40 -0
  14. package/dist/lib/microservice-mysql.d.ts +5 -0
  15. package/dist/lib/microservice-mysql.js +40 -0
  16. package/dist/lib/microservice-network.d.ts +5 -0
  17. package/dist/lib/microservice-network.js +140 -0
  18. package/dist/lib/microservice-notification-service.d.ts +5 -0
  19. package/dist/lib/microservice-notification-service.js +40 -0
  20. package/dist/lib/microservice-portal.d.ts +5 -0
  21. package/dist/lib/microservice-portal.js +40 -0
  22. package/dist/lib/microservice-redis.d.ts +5 -0
  23. package/dist/lib/microservice-redis.js +40 -0
  24. package/dist/scripts/post-deployment-after-all.sh +2 -0
  25. package/dist/scripts/post-deployment-api-gateway.sh +35 -0
  26. package/dist/scripts/post-deployment-before-all.sh +166 -0
  27. package/dist/scripts/post-deployment-clone-repo.sh +12 -0
  28. package/dist/scripts/post-deployment-laravel-based.sh +86 -0
  29. package/dist/scripts/post-deployment-mysql.sh +22 -0
  30. package/dist/scripts/post-deployment-notification-service.sh +5 -0
  31. package/dist/scripts/post-deployment-portal.sh +32 -0
  32. package/dist/scripts/post-deployment-redis.sh +9 -0
  33. package/dist/test/cdk.test.js +1 -1
  34. package/dist/util/applyTags.d.ts +1 -2
  35. package/dist/util/applyTags.js +18 -6
  36. package/dist/util/constants.d.ts +27 -0
  37. package/dist/util/constants.js +46 -0
  38. package/dist/util/getEc2UserData.d.ts +2 -0
  39. package/dist/util/getEc2UserData.js +49 -0
  40. package/dist/util/getInstanceType.d.ts +5 -0
  41. package/dist/util/getInstanceType.js +19 -0
  42. package/dist/util/initBuildConfig.d.ts +3 -1
  43. package/dist/util/initBuildConfig.js +21 -8
  44. package/dist/util/initCdkStack.d.ts +2 -0
  45. package/dist/util/initCdkStack.js +58 -0
  46. package/dist/util/isLaravelBased.d.ts +1 -0
  47. package/dist/util/isLaravelBased.js +11 -0
  48. package/dist/util/isMicroservice.d.ts +1 -0
  49. package/dist/util/isMicroservice.js +11 -0
  50. package/jest.config.js +2 -2
  51. package/package.json +3 -3
  52. package/scripts/post-deployment-after-all.sh +2 -0
  53. package/scripts/post-deployment-api-gateway.sh +35 -0
  54. package/scripts/post-deployment-before-all.sh +166 -0
  55. package/scripts/post-deployment-clone-repo.sh +12 -0
  56. package/scripts/post-deployment-laravel-based.sh +86 -0
  57. package/scripts/post-deployment-mysql.sh +22 -0
  58. package/scripts/post-deployment-notification-service.sh +5 -0
  59. package/scripts/post-deployment-portal.sh +32 -0
  60. package/scripts/post-deployment-redis.sh +9 -0
  61. package/tsconfig.json +3 -11
  62. package/dist/lib/laravel-based-microservice-stack.d.ts +0 -6
  63. package/dist/lib/laravel-based-microservice-stack.js +0 -12
  64. package/dist/util/initLaravelBasedCdkStack.d.ts +0 -2
  65. 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
- SERVICE=
3
- COMPANY=glico
4
- AWS_REGION=us-east-1
5
- AWS_ACCOUNT_ID=12345
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
- * `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
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.
@@ -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,
@@ -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
- service: string;
6
- company: string;
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
+ };
@@ -1,3 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vQHR5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRW52TmFtZSA9ICd1YXQnIHwgJ3Byb2QnO1xuZXhwb3J0IHR5cGUgQnVpbGRDb25maWcgPSB7XG4gIGVudk5hbWU6IEVudk5hbWU7XG4gIGVudlBhdGg6IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBjb21wYW55OiBzdHJpbmc7XG4gIGF3czoge1xuICAgIGFjY291bnQ6IHN0cmluZztcbiAgICByZWdpb246IHN0cmluZztcbiAgfTtcbn07XG4iXX0=
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 initLaravelBasedCdkStack_1 = require("../util/initLaravelBasedCdkStack");
5
- (0, initLaravelBasedCdkStack_1.initLaravelBasedCdkStack)();
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2Nkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrRUFBNEU7QUFFNUUsSUFBQSxtREFBd0IsR0FBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgaW5pdExhcmF2ZWxCYXNlZENka1N0YWNrIH0gZnJvbSAnLi4vdXRpbC9pbml0TGFyYXZlbEJhc2VkQ2RrU3RhY2snO1xuXG5pbml0TGFyYXZlbEJhc2VkQ2RrU3RhY2soKTsiXX0=
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 './lib/laravel-based-microservice-stack';
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("./lib/laravel-based-microservice-stack"), exports);
18
- __exportStar(require("./util/initLaravelBasedCdkStack"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELGtFQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2xhcmF2ZWwtYmFzZWQtbWljcm9zZXJ2aWNlLXN0YWNrJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbC9pbml0TGFyYXZlbEJhc2VkQ2RrU3RhY2snOyJdfQ==
17
+ __exportStar(require("./util/initCdkStack"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91dGlsL2luaXRDZGtTdGFjayc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ export declare class MicroserviceApiGateway extends cdk.Stack {
4
+ constructor(scope: Construct, id: string, props?: cdk.StackProps);
5
+ }
@@ -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,5 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ export declare class MicroserviceLaravelBased extends cdk.Stack {
4
+ constructor(scope: Construct, id: string, props?: cdk.StackProps);
5
+ }
@@ -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,5 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ export declare class MicroserviceMySql extends cdk.Stack {
4
+ constructor(scope: Construct, id: string, props?: cdk.StackProps);
5
+ }
@@ -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
@@ -0,0 +1,5 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ export declare class MicroserviceNetwork extends cdk.Stack {
4
+ constructor(scope: Construct, id: string, props?: cdk.StackProps);
5
+ }