@@ -154,6 +154,7 @@ export interface DataSetEnrollmentProps extends cdk.StackProps {
154
154
GlueScriptArguments : any ;
155
155
SourceAccessPolicy ?: iam . Policy ;
156
156
MaxDPUs : number ;
157
+ WorkflowCronScheduleExpression ?: string ;
157
158
}
158
159
159
160
@@ -258,7 +259,7 @@ export class DataSetEnrollment extends cdk.Construct {
258
259
} ,
259
260
name : `${ props . dataSetName } _src_to_dl_etl` ,
260
261
timeout : 2880 ,
261
- glueVersion : "1 .0" ,
262
+ glueVersion : "2 .0" ,
262
263
maxCapacity : props . MaxDPUs ,
263
264
command : {
264
265
scriptLocation : `s3://${ glueScript . s3BucketName } /${ glueScript . s3ObjectKey } ` ,
@@ -292,12 +293,13 @@ export class DataSetEnrollment extends cdk.Construct {
292
293
workfowName : `${ props . dataSetName } _DataLakeEnrollmentWorkflow` ,
293
294
srcCrawler : sourceCrawler ,
294
295
etlJob : etl_job ,
295
- datalakeCrawler : datalake_crawler
296
-
296
+ datalakeCrawler : datalake_crawler ,
297
+ WorkflowCronScheduleExpression : props . WorkflowCronScheduleExpression
297
298
} ) ;
298
299
299
- }
300
+ }
300
301
302
+
301
303
302
304
}
303
305
@@ -307,32 +309,55 @@ export interface DataLakeEnrollmentWorkflowProps {
307
309
srcCrawler : glue . CfnCrawler ,
308
310
etlJob : glue . CfnJob ,
309
311
datalakeCrawler : glue . CfnCrawler
312
+ WorkflowCronScheduleExpression ?: string ;
310
313
}
311
314
312
315
export class DataLakeEnrollmentWorkflow extends cdk . Construct {
313
316
314
- public readonly StartTrigger : glue . CfnTrigger ;
317
+ public StartTrigger : glue . CfnTrigger ;
315
318
public readonly SrcCrawlerCompleteTrigger : glue . CfnTrigger ;
316
319
public readonly ETLCompleteTrigger : glue . CfnTrigger ;
317
320
public readonly Workflow : glue . CfnWorkflow ;
321
+ private readonly sourceCrawler : glue . CfnCrawler ;
318
322
319
323
constructor ( scope : cdk . Construct , id : string , props : DataLakeEnrollmentWorkflowProps ) {
320
324
super ( scope , id ) ;
321
325
322
326
this . Workflow = new glue . CfnWorkflow ( this , "etlWorkflow" , {
323
327
name : props . workfowName
324
328
} ) ;
329
+
330
+ this . sourceCrawler = props . srcCrawler ;
325
331
326
- this . StartTrigger = new glue . CfnTrigger ( this , "startTrigger" , {
327
- actions : [
328
- {
329
- crawlerName : props . srcCrawler . name
330
- }
331
- ] ,
332
- type : "ON_DEMAND" ,
333
- name : `startWorkflow-${ this . Workflow . name } ` ,
334
- workflowName : this . Workflow . name
335
- } ) ;
332
+ if ( props . WorkflowCronScheduleExpression == null ) {
333
+ this . StartTrigger = new glue . CfnTrigger ( this , "startTrigger" , {
334
+ actions : [
335
+ {
336
+ crawlerName : props . srcCrawler . name
337
+ }
338
+ ] ,
339
+ type : "ON_DEMAND" ,
340
+ name : `startWorkflow-${ this . Workflow . name } ` ,
341
+ workflowName : this . Workflow . name
342
+ } ) ;
343
+
344
+ } else {
345
+
346
+ this . StartTrigger = new glue . CfnTrigger ( this , "startTrigger" , {
347
+ actions : [
348
+ {
349
+ crawlerName : this . sourceCrawler . name
350
+ }
351
+ ] ,
352
+ type : "SCHEDULED" ,
353
+ schedule : props . WorkflowCronScheduleExpression ,
354
+ name : `startWorkflow-${ this . Workflow . name } ` ,
355
+ workflowName : this . Workflow . name
356
+ } ) ;
357
+ }
358
+
359
+
360
+
336
361
337
362
this . SrcCrawlerCompleteTrigger = new glue . CfnTrigger ( this , "srcCrawlerCompleteTrigger" , {
338
363
predicate : {
0 commit comments