1
1
import { Construct , } from 'constructs' ;
2
- import { Aws , App , Stack , Resource , StackProps , CustomResource , Duration } from 'aws-cdk-lib' ;
2
+ import { Aws , App , Stack , Resource , StackProps , CustomResource , Duration , Fn , Token } from 'aws-cdk-lib' ;
3
3
4
4
import * as ec2 from 'aws-cdk-lib/aws-ec2' ;
5
5
import * as iam from 'aws-cdk-lib/aws-iam' ;
@@ -186,20 +186,24 @@ export class DataSetEnrollment extends Construct {
186
186
public readonly Dataset_Source : glue . CfnDatabase ;
187
187
public readonly Dataset_Datalake : glue . CfnDatabase ;
188
188
189
+ public readonly Dataset_SourceDatabaseName : string ;
190
+ public readonly Dataset_DatalakeDatabaseName : string ;
191
+
189
192
public readonly DataLakeBucketName : string ;
190
193
public readonly DataLakePrefix : string ;
191
194
public readonly DataLakeTargets : glue . CfnCrawler . TargetsProperty ;
192
195
193
196
194
- private setupCrawler ( targetGlueDatabase : glue . CfnDatabase , targets : glue . CfnCrawler . TargetsProperty , isSourceCrawler : boolean ) {
197
+ private setupCrawler ( targetGlueDatabase : glue . CfnDatabase , targets : glue . CfnCrawler . TargetsProperty , isSourceCrawler : boolean , databaseName : string ) {
195
198
196
199
var sourceCrawler = isSourceCrawler ? "src" : "dl" ;
197
200
201
+
198
202
return new glue . CfnCrawler ( this , `${ this . DataSetName } -${ sourceCrawler } -crawler` , {
199
203
name : `${ this . DataSetName } _${ sourceCrawler } _crawler` ,
200
204
targets : targets ,
201
205
role : this . DataSetGlueRole . roleName ,
202
- databaseName : targetGlueDatabase . getAtt ( 'DatabaseInput.Name' ) . toString ( ) ,
206
+ databaseName : databaseName ,
203
207
schemaChangePolicy : {
204
208
deleteBehavior : "DEPRECATE_IN_DATABASE" ,
205
209
updateBehavior : "UPDATE_IN_DATABASE" ,
@@ -219,17 +223,20 @@ export class DataSetEnrollment extends Construct {
219
223
220
224
this . DataSetName = props . dataSetName ;
221
225
226
+ this . Dataset_SourceDatabaseName = `${ props . dataSetName } _src` ;
227
+ this . Dataset_DatalakeDatabaseName = `${ props . dataSetName } _dl` ;
228
+
222
229
this . Dataset_Source = new glue . CfnDatabase ( this , `${ props . dataSetName } _src` , {
223
230
catalogId : Aws . ACCOUNT_ID ,
224
231
databaseInput : {
225
- name : ` ${ props . dataSetName } _src` ,
232
+ name : this . Dataset_SourceDatabaseName ,
226
233
locationUri : `s3://${ props . dataLakeBucket . bucketName } /${ props . dataSetName } /`
227
234
}
228
235
} ) ;
229
236
this . Dataset_Datalake = new glue . CfnDatabase ( this , `${ props . dataSetName } _dl` , {
230
237
catalogId : Aws . ACCOUNT_ID ,
231
238
databaseInput : {
232
- name : ` ${ props . dataSetName } _dl` ,
239
+ name : this . Dataset_DatalakeDatabaseName ,
233
240
locationUri : `s3://${ props . dataLakeBucket . bucketName } /${ props . dataSetName } /`
234
241
}
235
242
} ) ;
@@ -261,9 +268,8 @@ export class DataSetEnrollment extends Construct {
261
268
if ( typeof props . SourceAccessPolicy !== 'undefined' ) {
262
269
props . SourceAccessPolicy . attachToRole ( this . DataSetGlueRole ) ;
263
270
}
264
-
265
-
266
- const sourceCrawler = this . setupCrawler ( this . Dataset_Source , props . SourceTargets , true ) ;
271
+
272
+ const sourceCrawler = this . setupCrawler ( this . Dataset_Source , props . SourceTargets , true , this . Dataset_SourceDatabaseName ) ;
267
273
268
274
269
275
@@ -300,16 +306,7 @@ export class DataSetEnrollment extends Construct {
300
306
const etl_job = new glue . CfnJob ( this , `${ props . dataSetName } -EtlJob` , jobParams ) ;
301
307
302
308
303
- const datalake_crawler = this . setupCrawler ( this . Dataset_Datalake , this . DataLakeTargets , false ) ;
304
-
305
- // const datalake_crawler = this.setupCrawler(this.Dataset_Datalake, {
306
- // s3Targets: [
307
- // {
308
- // path: `s3://${props.dataLakeBucket.bucketName}/${props.dataSetName}/`
309
- // }
310
- // ]
311
- // }, false);
312
-
309
+ const datalake_crawler = this . setupCrawler ( this . Dataset_Datalake , this . DataLakeTargets , false , this . Dataset_DatalakeDatabaseName ) ;
313
310
314
311
const datalakeEnrollmentWorkflow = new DataLakeEnrollmentWorkflow ( this , `${ props . dataSetName } DataLakeWorkflow` , {
315
312
workfowName : `${ props . dataSetName } _DataLakeEnrollmentWorkflow` ,
0 commit comments