@@ -9,7 +9,13 @@ import * as path from 'path';
9
9
import * as nag from "cdk-nag" ;
10
10
import * as iam from "aws-cdk-lib/aws-iam" ;
11
11
import * as configTypes from "../../constructs/config.interface" ;
12
+ import * as nodeCwDashboard from "./assets/node-cw-dashboard"
13
+ import * as cw from 'aws-cdk-lib/aws-cloudwatch' ;
12
14
15
+ interface AlloraStackEnvironment extends cdk . Environment {
16
+ account : string ;
17
+ region : string ;
18
+ }
13
19
14
20
export interface AlloraStackProps extends cdk . StackProps {
15
21
amiId : string ;
@@ -19,19 +25,18 @@ export interface AlloraStackProps extends cdk.StackProps {
19
25
vpcSubnetCidrMask : number ;
20
26
resourceNamePrefix : string ;
21
27
dataVolume : configTypes . DataVolumeConfig ;
28
+ env : AlloraStackEnvironment
22
29
}
23
30
24
31
25
32
export class AlloraStack extends cdk . Stack {
26
- constructor ( scope : Construct , id : string , props ? : AlloraStackProps ) {
33
+ constructor ( scope : Construct , id : string , props : AlloraStackProps ) {
27
34
super ( scope , id , props ) ;
28
35
29
- // Parameters
30
- const region = props ?. env ?. region || 'us-east-1' ;
31
- const amiId = props ?. amiId || 'ami-04b70fa74e45c3917' ;
32
- const instanceType = props ?. instanceType || 't2.medium' ;
33
- const resourceNamePrefix = props ?. resourceNamePrefix || 'AlloraWorkerx' ;
34
- const dataVolume = props ?. dataVolume ;
36
+ const {
37
+ env, amiId, instanceType, resourceNamePrefix, dataVolume
38
+ } = props ;
39
+ const { region } = env ;
35
40
36
41
37
42
@@ -107,7 +112,18 @@ export class AlloraStack extends cdk.Stack {
107
112
108
113
const instance = singleNode . instance ;
109
114
110
- instance . addUserData ( ec2UserData )
115
+ instance . addUserData ( ec2UserData . render ( ) )
116
+
117
+ const dashboardString = cdk . Fn . sub ( JSON . stringify ( nodeCwDashboard . SyncNodeCWDashboardJSON ( ) ) , {
118
+ INSTANCE_ID : singleNode . instanceId ,
119
+ INSTANCE_NAME : `${ resourceNamePrefix } Instance` ,
120
+ REGION : region ,
121
+ } )
122
+
123
+ new cw . CfnDashboard ( this , 'single-cw-dashboard' , {
124
+ dashboardName : `AlloraStack-${ singleNode . instanceId } ` ,
125
+ dashboardBody : dashboardString ,
126
+ } ) ;
111
127
112
128
// Elastic IP
113
129
const eip = new ec2 . CfnEIP ( this , `${ resourceNamePrefix } EIP` ) ;
0 commit comments