Skip to content

Commit 77dc4ec

Browse files
author
EC2 Default User
committed
Adding notebook support, commit 1
1 parent 1854ae5 commit 77dc4ec

File tree

8 files changed

+3609
-19
lines changed

8 files changed

+3609
-19
lines changed

DeployChemblOpenTargetsEnv.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ cdk deploy BaselineStack --require-approval never
44
cdk deploy CoreDataLake --require-approval never
55
cdk deploy ChemblStack --require-approval never
66
cdk deploy OpenTargetsStack --require-approval never
7+
cdk deploy AnalyticsStack --require-approval never

bin/aws.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { BaselineStack } from '../lib/baseline-stack';
55
import { DatalakeStack } from '../lib/datalake-stack';
66
import { OpenTargetsStack } from '../lib/opentargets-stack';
77
import { ChemblStack } from '../lib/chembl-25-stack';
8+
import { AnalyticsStack } from '../lib/analytics-stack.js';
89
import s3 = require('@aws-cdk/aws-s3');
910

1011

@@ -32,9 +33,7 @@ const openTargetsStack = new OpenTargetsStack(app, 'OpenTargetsStack', {
3233
dataLakeBucket: coreDataLake.DataLakeBucket
3334
});
3435

36+
const analyticsStack = new AnalyticsStack(app, 'AnalyticsStack', {
37+
targetVpc: baseline.Vpc
38+
});
3539

36-
// new OpenTargetsStack(app, 'OpenTargetsStack', {
37-
// dataLakeBucket: coreDataLake.DataLakeBucket,
38-
// sourceBucket: s3.Bucket.fromBucketName(app, 'openTargetsImportBucket', 'chembl-opentarget-blog'),
39-
// sourceBucketDataPrefix: '/opentargets/sourceExports/19.11/output',
40-
// });

lib/analytics-stack.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import * as cdk from '@aws-cdk/core';
2+
import ec2 = require('@aws-cdk/aws-ec2');
3+
import iam = require('@aws-cdk/aws-iam');
4+
import rds = require('@aws-cdk/aws-rds');
5+
import glue = require('@aws-cdk/aws-glue');
6+
import s3 = require('@aws-cdk/aws-s3');
7+
import s3assets = require('@aws-cdk/aws-s3-assets');
8+
import sagemaker = require('@aws-cdk/aws-sagemaker');
9+
10+
export interface AnalyticsStackProps extends cdk.StackProps{
11+
targetVpc: ec2.Vpc
12+
}
13+
14+
15+
export class AnalyticsStack extends cdk.Stack {
16+
17+
constructor(scope: cdk.Construct, id: string, props: AnalyticsStackProps) {
18+
super(scope, id, props);
19+
20+
21+
const notebookSg = new ec2.SecurityGroup(this, 'notebookSg',{
22+
vpc: props.targetVpc
23+
});
24+
25+
26+
const lifecycleCode = [
27+
{"content": "echo hello" }
28+
];
29+
const sageMakerIntanceLifecyclePolicy = new sagemaker.CfnNotebookInstanceLifecycleConfig(this, 'notebookLifecyclePolicy', {
30+
notebookInstanceLifecycleConfigName: "Boostrap-Chembl-OpenTargets-Demo-Notebook",
31+
onStart: lifecycleCode
32+
33+
});
34+
35+
const sageMakerInstanceRole = new iam.Role(this, 'notebookInstanceRole', {
36+
roleName: "chemblOpenTargetsNotebookRole",
37+
assumedBy: new iam.ServicePrincipal('sagemaker')
38+
});
39+
40+
41+
new sagemaker.CfnNotebookInstance(this, 'analyticsNotebook', {
42+
instanceType : 'ml.t2.medium',
43+
volumeSizeInGb: 100,
44+
securityGroupIds: [notebookSg.securityGroupId],
45+
subnetId: props.targetVpc.selectSubnets({subnetType: ec2.SubnetType.PRIVATE}).subnetIds[0],
46+
notebookInstanceName: "Chembl-OpenTargets-Demo-Notebook",
47+
roleArn: sageMakerInstanceRole.roleArn,
48+
directInternetAccess: 'Disabled',
49+
lifecycleConfigName: sageMakerIntanceLifecyclePolicy.notebookInstanceLifecycleConfigName
50+
});
51+
52+
53+
}
54+
}
55+

lib/baseline-stack.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export class BaselineStack extends cdk.Stack {
1515
public readonly chemblDBChemblDbAccessSg: ec2.SecurityGroup;
1616
public readonly chemblDBSecret: rds.DatabaseSecret;
1717
public readonly OpenTargetsSourceBucket: s3.Bucket;
18+
public readonly Vpc: ec2.Vpc;
1819

1920
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
2021

@@ -41,6 +42,8 @@ export class BaselineStack extends cdk.Stack {
4142
]
4243
});
4344

45+
this.Vpc = baselineVpc;
46+
4447
const chemblAccessSG = new ec2.SecurityGroup(this, 'chemblAccessSg', {
4548
vpc: baselineVpc,
4649
allowAllOutbound: true,

lib/chembl-25-stack.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class ChemblStack extends cdk.Stack{
2222

2323
const dataSetName = "chembl_25";
2424

25-
new RDSPostgresDataSetEnrollment(this, 'chembl-25-enrollment', {
25+
const chembl25 = new RDSPostgresDataSetEnrollment(this, 'chembl-25-enrollment', {
2626
databaseSecret: props.databaseSecret,
2727
database: props.database,
2828
accessSecurityGroup: props.accessSecurityGroup,
@@ -39,7 +39,6 @@ export class ChemblStack extends cdk.Stack{
3939
"--DL_REGION": cdk.Stack.of(this).region,
4040
"--GLUE_SRC_DATABASE": "chembl_25_src"
4141
}
42-
4342
});
4443
}
4544
}

package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@
2121
"typescript": "~3.7.2"
2222
},
2323
"dependencies": {
24-
"@aws-cdk/aws-cloudformation": "^1.26.0",
25-
"@aws-cdk/aws-ec2": "^1.26.0",
26-
"@aws-cdk/aws-glue": "^1.26.0",
27-
"@aws-cdk/aws-rds": "^1.26.0",
28-
"@aws-cdk/core": "^1.26.0",
24+
"@aws-cdk/aws-cloudformation": "^1.32.0",
25+
"@aws-cdk/aws-ec2": "^1.32.0",
26+
"@aws-cdk/aws-glue": "^1.32.0",
27+
"@aws-cdk/aws-rds": "^1.32.0",
28+
"@aws-cdk/aws-sagemaker": "^1.32.0",
29+
"@aws-cdk/core": "^1.32.0",
2930
"source-map-support": "^0.5.16"
3031
}
3132
}

0 commit comments

Comments
 (0)