@@ -3,7 +3,7 @@ import { naming, util } from '@aws-cdk/spec2cdk';
33import { CDK_CORE , CONSTRUCTS } from '@aws-cdk/spec2cdk/lib/cdk/cdk' ;
44import { RelationshipDecider } from '@aws-cdk/spec2cdk/lib/cdk/relationship-decider' ;
55import type { Method } from '@cdklabs/typewriter' ;
6- import { Module , ExternalModule , ClassType , Stability , Type , expr , stmt , ThingSymbol , $this , CallableProxy , NewExpression } from '@cdklabs/typewriter' ;
6+ import { Module , ExternalModule , ClassType , Stability , Type , expr , stmt , ThingSymbol , $this , CallableProxy , NewExpression , InterfaceType } from '@cdklabs/typewriter' ;
77import { MIXINS_LOG_DELIVERY , REF_INTERFACES } from './helpers' ;
88import type { ServiceSubmoduleProps , SelectiveImport , LocatedModule } from '@aws-cdk/spec2cdk/lib/cdk/service-submodule' ;
99import { BaseServiceSubmodule , relativeImportPath } from '@aws-cdk/spec2cdk/lib/cdk/service-submodule' ;
@@ -362,22 +362,35 @@ class LogsMixin extends ClassType {
362362 } ,
363363 } ) ;
364364
365+ const deliverySourceInterface = new InterfaceType ( this . scope , {
366+ name : `I${ naming . classNameFromResource ( this . resource ) } LogSource` ,
367+ properties : [ {
368+ name : 'logDeliverySourceName' ,
369+ type : Type . STRING ,
370+ docs : {
371+ summary : 'Must be unique among all delivery source names'
372+ }
373+ } ] ,
374+ extends : [ CONSTRUCTS . IConstruct ] ,
375+ docs : {
376+ summary : `Interface for ${ naming . classNameFromResource ( this . resource ) } to set up log delivery`
377+ }
378+ } )
379+
365380 const resource = method . addParameter ( {
366381 name : 'resource' ,
367- type : CONSTRUCTS . IConstruct ,
382+ type : deliverySourceInterface . type ,
368383 } ) ;
369384
370385 const cfnDeliverySourceType = this . scope . type ( 'delivery.CfnDeliverySource' ) ;
371386 const arn = expr . sym ( new ThingSymbol ( 'cdkLib.Arn.format' , this . scope ) ) . call ( expr . object ( { service : expr . directCode ( 'construct.cfnResourceType.split(\'::\')[1].toLowerCase()' ) , resource : expr . directCode ( 'construct.cfnResourceType.split(\'::\')[2].toLowerCase()' ) , resourceName : expr . get ( resource , 'ref' ) } ) , expr . sym ( new ThingSymbol ( 'cdkLib.Stack.of' , this . scope ) ) . call ( resource ) ) ;
372387 const arnVar = expr . ident ( 'sourceArn' ) ;
373388
374- const prefix = `${ this . resource . name } Source-` ;
375-
376389 const deliverySourceInstance = cfnDeliverySourceType . newInstance (
377390 resource ,
378- expr . strConcat ( expr . str ( 'CdkSource' ) , CDK_CORE . uniqueId ( resource ) ) ,
391+ expr . strConcat ( expr . str ( 'CdkSource' ) , expr . get ( resource , 'logDeliverySourceName' ) , CDK_CORE . uniqueId ( resource ) ) ,
379392 expr . object ( {
380- name : expr . strConcat ( expr . str ( prefix ) , CDK_CORE . uniqueResourceName ( resource , expr . object ( { maxLength : expr . binOp ( expr . num ( 60 - prefix . length + 1 ) , '-' , $this . logType . prop ( 'length' ) ) } ) ) , expr . str ( '-' ) , $this . logType ) ,
393+ name : expr . get ( resource , 'logDeliverySourceName' ) ,
381394 resourceArn : arnVar ,
382395 logType : $this . logType ,
383396 } ) ,
0 commit comments