Skip to content

Commit 0734634

Browse files
author
EC2 Default User
committed
Adding early version of Lake Formation suport.
1 parent 0d5da89 commit 0734634

12 files changed

+622
-119
lines changed

ApplyLakeFormationPermissions.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
python scripts/local.datalake.RemoveIamAllowedPrincipals.py

bin/aws.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,52 @@
22
import 'source-map-support/register';
33
import * as cdk from '@aws-cdk/core';
44
import { BaselineStack } from '../lib/baseline-stack';
5-
import { DatalakeStack } from '../lib/stacks/datalake-stack';
5+
import { DataLakeStack } from '../lib/stacks/datalake-stack';
66
import { OpenTargetsStack } from '../lib/opentargets-stack';
77
import { ChemblStack } from '../lib/chembl-25-stack';
88
import { AnalyticsStack } from '../lib/analytics-stack.js';
9+
import iam = require('@aws-cdk/aws-iam');
910
import s3 = require('@aws-cdk/aws-s3');
10-
11+
import { DataLakeEnrollment } from '../lib/constructs/data-lake-enrollment';
1112

1213
const app = new cdk.App();
1314
const baseline = new BaselineStack(app, 'BaselineStack');
1415

1516

16-
const coreDataLake = new DatalakeStack(app, 'CoreDataLake', {
17+
const coreDataLake = new DataLakeStack(app, 'CoreDataLake', {
1718

1819
});
1920

20-
21-
2221
const chemblStack = new ChemblStack(app, 'ChemblStack', {
2322
database: baseline.ChemblDb,
2423
accessSecurityGroup: baseline.chemblDBChemblDbAccessSg,
2524
databaseSecret: baseline.chemblDBSecret,
26-
dataLakeBucket: coreDataLake.DataLakeBucket
25+
DataLake: coreDataLake
2726
});
2827

2928
const openTargetsStack = new OpenTargetsStack(app, 'OpenTargetsStack', {
3029
sourceBucket: baseline.OpenTargetsSourceBucket,
3130
sourceBucketDataPrefix: '/opentargets/sourceExports/19.11/output/',
32-
dataLakeBucket: coreDataLake.DataLakeBucket
31+
DataLake: coreDataLake
3332
});
3433

3534
const analyticsStack = new AnalyticsStack(app, 'AnalyticsStack', {
3635
targetVpc: baseline.Vpc,
3736
});
3837

3938

40-
chemblStack.grantRead(analyticsStack.NotebookRole);
41-
openTargetsStack.grantRead(analyticsStack.NotebookRole);
39+
chemblStack.grantIamRead(analyticsStack.NotebookRole);
40+
openTargetsStack.grantIamRead(analyticsStack.NotebookRole);
41+
42+
43+
44+
const exampleUser = iam.User.fromUserName(coreDataLake, 'exampleGrantee', 'paul0' );
45+
var exampleGrant: DataLakeEnrollment.LakeFormationPermissionGrant = {
46+
tables: ["association_data", "evidence_data","target_list","disease_list"],
47+
DatabasePermissions: [DataLakeEnrollment.DatabasePermission.Alter, DataLakeEnrollment.DatabasePermission.CreateTable, DataLakeEnrollment.DatabasePermission.Drop],
48+
GrantableDatabasePermissions: [DataLakeEnrollment.DatabasePermission.Alter, DataLakeEnrollment.DatabasePermission.CreateTable, DataLakeEnrollment.DatabasePermission.Drop],
49+
TablePermissions: [DataLakeEnrollment.TablePermission.Select, DataLakeEnrollment.TablePermission.Insert, DataLakeEnrollment.TablePermission.Delete],
50+
GrantableTablePermissions: [DataLakeEnrollment.TablePermission.Select]
51+
};
52+
53+
openTargetsStack.grantLakeFormationPermissions(exampleUser, exampleGrant);

lib/chembl-25-stack.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import { DataSetStack, DataSetStackProps} from './stacks/dataset-stack';
1010

1111

1212

13+
1314
export interface ChemblStackEnrollmentProps extends DataSetStackProps {
1415
databaseSecret: rds.DatabaseSecret;
1516
database: rds.DatabaseInstance;
1617
accessSecurityGroup: ec2.SecurityGroup;
17-
dataLakeBucket: s3.Bucket;
1818
}
1919

2020
export class ChemblStack extends DataSetStack{
@@ -29,15 +29,15 @@ export class ChemblStack extends DataSetStack{
2929
databaseSecret: props.databaseSecret,
3030
database: props.database,
3131
accessSecurityGroup: props.accessSecurityGroup,
32-
dataLakeBucket: props.dataLakeBucket,
32+
dataLakeBucket: props.DataLake.DataLakeBucket,
3333
DataSetName: dataSetName,
3434
JdbcTargetIncludePaths: ["chembl_25/%"],
3535
GlueScriptPath: "scripts/glue.s3importchembl25.py",
3636
GlueScriptArguments: {
3737
"--job-language": "python",
3838
"--job-bookmark-option": "job-bookmark-disable",
3939
"--enable-metrics": "",
40-
"--DL_BUCKET": props.dataLakeBucket.bucketName,
40+
"--DL_BUCKET": props.DataLake.DataLakeBucket.bucketName,
4141
"--DL_PREFIX": "/"+dataSetName+"/",
4242
"--DL_REGION": cdk.Stack.of(this).region,
4343
"--GLUE_SRC_DATABASE": "chembl_25_src"

0 commit comments

Comments
 (0)