private void CreateOrLocateS3Buckets() { if (CdkOptions == null || CdkOptions.S3Buckets?.Any() != true) { return; } foreach (var bucket in CdkOptions.S3Buckets) { List <ILifecycleRule> expiredDocumentsLifeCycleRules = null; if (bucket.ExpireDocumentRules?.Any() == true) { expiredDocumentsLifeCycleRules = bucket.ExpireDocumentRules.ConvertAll(x => AwsCdkHandler.CreateLifecycleRule(x.RuleName, x.Expiration, x.TagName, x.TagValue, bucket.Versioned, x.PreviousVersionsExpirationDays)); } if (bucket.LocateInsteadOfCreate) { var currentBucket = AwsCdkHandler.LocateBucketByName(bucket.Id, bucket.BucketName); AwsCdkHandler.AddLifeCycleRuleToExistingBucket(ref currentBucket, expiredDocumentsLifeCycleRules); StackResources.Buckets.Add(bucket.Id, currentBucket); } else { if (bucket.ExpirationDays.HasValue) { StackResources.Buckets.Add(bucket.Id, AwsCdkHandler.AddS3Bucket(bucket.BucketName, lifecycleRules: expiredDocumentsLifeCycleRules, versioned: bucket.Versioned, expirationDays: bucket.ExpirationDays.Value, enforceSSL: bucket.EnforceSSL, blockPublicAccess: bucket.BlockPublicAccess ?? true)); } else { StackResources.Buckets.Add(bucket.Id, AwsCdkHandler.AddS3Bucket(bucket.BucketName, lifecycleRules: expiredDocumentsLifeCycleRules, versioned: bucket.Versioned, enforceSSL: bucket.EnforceSSL, blockPublicAccess: bucket.BlockPublicAccess ?? true)); } } } }