@@ -122,8 +122,6 @@ export enum LogRetention {
122
122
export class CloudTrail extends cdk . Construct {
123
123
124
124
public readonly cloudTrailArn : string ;
125
- private readonly cloudWatchLogsRoleArn ?: string ;
126
- private readonly cloudWatchLogsGroupArn ?: string ;
127
125
private eventSelectors : EventSelector [ ] = [ ] ;
128
126
129
127
constructor ( scope : cdk . Construct , id : string , props : CloudTrailProps = { } ) {
@@ -143,20 +141,19 @@ export class CloudTrail extends cdk.Construct {
143
141
. addServicePrincipal ( cloudTrailPrincipal )
144
142
. setCondition ( "StringEquals" , { 's3:x-amz-acl' : "bucket-owner-full-control" } ) ) ;
145
143
144
+ let logGroup : logs . CfnLogGroup | undefined ;
145
+ let logsRole : iam . IRole | undefined ;
146
146
if ( props . sendToCloudWatchLogs ) {
147
- const logGroup = new logs . CfnLogGroup ( this , "LogGroup" , {
147
+ logGroup = new logs . CfnLogGroup ( this , "LogGroup" , {
148
148
retentionInDays : props . cloudWatchLogsRetentionTimeDays || LogRetention . OneYear
149
149
} ) ;
150
- this . cloudWatchLogsGroupArn = logGroup . logGroupArn ;
151
150
152
- const logsRole = new iam . Role ( this , 'LogsRole' , { assumedBy : new iam . ServicePrincipal ( cloudTrailPrincipal ) } ) ;
151
+ logsRole = new iam . Role ( this , 'LogsRole' , { assumedBy : new iam . ServicePrincipal ( cloudTrailPrincipal ) } ) ;
153
152
154
- const streamArn = `${ this . cloudWatchLogsRoleArn } :log-stream:*` ;
153
+ const streamArn = `${ logsRole . roleArn } :log-stream:*` ;
155
154
logsRole . addToPolicy ( new iam . PolicyStatement ( )
156
155
. addActions ( "logs:PutLogEvents" , "logs:CreateLogStream" )
157
156
. addResource ( streamArn ) ) ;
158
- this . cloudWatchLogsRoleArn = logsRole . roleArn ;
159
-
160
157
}
161
158
if ( props . managementEvents ) {
162
159
const managementEvent = {
@@ -176,8 +173,8 @@ export class CloudTrail extends cdk.Construct {
176
173
kmsKeyId : props . kmsKey && props . kmsKey . keyArn ,
177
174
s3BucketName : s3bucket . bucketName ,
178
175
s3KeyPrefix : props . s3KeyPrefix ,
179
- cloudWatchLogsLogGroupArn : this . cloudWatchLogsGroupArn ,
180
- cloudWatchLogsRoleArn : this . cloudWatchLogsRoleArn ,
176
+ cloudWatchLogsLogGroupArn : logGroup && logGroup . logGroupArn ,
177
+ cloudWatchLogsRoleArn : logsRole && logsRole . roleArn ,
181
178
snsTopicName : props . snsTopic ,
182
179
eventSelectors : this . eventSelectors
183
180
} ) ;
0 commit comments