@gradientedge/cdk-utils 4.0.13 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +37 -9
  2. package/dist/src/lib/common/commonConstruct.d.ts +5 -5
  3. package/dist/src/lib/common/commonConstruct.js +5 -5
  4. package/dist/src/lib/common/commonStack.d.ts +2 -1
  5. package/dist/src/lib/common/commonStack.d.ts.map +1 -1
  6. package/dist/src/lib/common/commonStack.js +2 -1
  7. package/dist/src/lib/common/commonStack.js.map +1 -1
  8. package/dist/src/lib/construct/graphQLApiLambda.d.ts +1 -0
  9. package/dist/src/lib/construct/graphQLApiLambda.d.ts.map +1 -1
  10. package/dist/src/lib/construct/graphQLApiLambda.js +1 -0
  11. package/dist/src/lib/construct/graphQLApiLambda.js.map +1 -1
  12. package/dist/src/lib/construct/siteWithEcsBackend.d.ts +1 -0
  13. package/dist/src/lib/construct/siteWithEcsBackend.d.ts.map +1 -1
  14. package/dist/src/lib/construct/siteWithEcsBackend.js +1 -0
  15. package/dist/src/lib/construct/siteWithEcsBackend.js.map +1 -1
  16. package/dist/src/lib/construct/staticSite.d.ts +1 -0
  17. package/dist/src/lib/construct/staticSite.d.ts.map +1 -1
  18. package/dist/src/lib/construct/staticSite.js +1 -0
  19. package/dist/src/lib/construct/staticSite.js.map +1 -1
  20. package/dist/src/lib/manager/acmManager.d.ts +2 -1
  21. package/dist/src/lib/manager/acmManager.d.ts.map +1 -1
  22. package/dist/src/lib/manager/acmManager.js +2 -1
  23. package/dist/src/lib/manager/acmManager.js.map +1 -1
  24. package/dist/src/lib/manager/apiManager.d.ts +2 -1
  25. package/dist/src/lib/manager/apiManager.d.ts.map +1 -1
  26. package/dist/src/lib/manager/apiManager.js +2 -1
  27. package/dist/src/lib/manager/apiManager.js.map +1 -1
  28. package/dist/src/lib/manager/appConfigManager.d.ts +2 -1
  29. package/dist/src/lib/manager/appConfigManager.d.ts.map +1 -1
  30. package/dist/src/lib/manager/appConfigManager.js +2 -1
  31. package/dist/src/lib/manager/appConfigManager.js.map +1 -1
  32. package/dist/src/lib/manager/cloudFrontManager.d.ts +2 -1
  33. package/dist/src/lib/manager/cloudFrontManager.d.ts.map +1 -1
  34. package/dist/src/lib/manager/cloudFrontManager.js +2 -1
  35. package/dist/src/lib/manager/cloudFrontManager.js.map +1 -1
  36. package/dist/src/lib/manager/cloudTrailManager.d.ts +2 -1
  37. package/dist/src/lib/manager/cloudTrailManager.d.ts.map +1 -1
  38. package/dist/src/lib/manager/cloudTrailManager.js +2 -1
  39. package/dist/src/lib/manager/cloudTrailManager.js.map +1 -1
  40. package/dist/src/lib/manager/cloudWatchManager.d.ts +2 -1
  41. package/dist/src/lib/manager/cloudWatchManager.d.ts.map +1 -1
  42. package/dist/src/lib/manager/cloudWatchManager.js +2 -1
  43. package/dist/src/lib/manager/cloudWatchManager.js.map +1 -1
  44. package/dist/src/lib/manager/codeBuildManager.d.ts +16 -0
  45. package/dist/src/lib/manager/codeBuildManager.d.ts.map +1 -1
  46. package/dist/src/lib/manager/codeBuildManager.js +16 -0
  47. package/dist/src/lib/manager/codeBuildManager.js.map +1 -1
  48. package/dist/src/lib/manager/ecrManager.d.ts +2 -1
  49. package/dist/src/lib/manager/ecrManager.d.ts.map +1 -1
  50. package/dist/src/lib/manager/ecrManager.js +2 -1
  51. package/dist/src/lib/manager/ecrManager.js.map +1 -1
  52. package/dist/src/lib/manager/ecsManager.d.ts +2 -1
  53. package/dist/src/lib/manager/ecsManager.d.ts.map +1 -1
  54. package/dist/src/lib/manager/ecsManager.js +2 -1
  55. package/dist/src/lib/manager/ecsManager.js.map +1 -1
  56. package/dist/src/lib/manager/eksManager.d.ts +2 -1
  57. package/dist/src/lib/manager/eksManager.d.ts.map +1 -1
  58. package/dist/src/lib/manager/eksManager.js +2 -1
  59. package/dist/src/lib/manager/eksManager.js.map +1 -1
  60. package/dist/src/lib/manager/eventManager.d.ts +2 -1
  61. package/dist/src/lib/manager/eventManager.d.ts.map +1 -1
  62. package/dist/src/lib/manager/eventManager.js +2 -1
  63. package/dist/src/lib/manager/eventManager.js.map +1 -1
  64. package/dist/src/lib/manager/iamManager.d.ts +2 -1
  65. package/dist/src/lib/manager/iamManager.d.ts.map +1 -1
  66. package/dist/src/lib/manager/iamManager.js +2 -1
  67. package/dist/src/lib/manager/iamManager.js.map +1 -1
  68. package/dist/src/lib/manager/lambdaManager.d.ts +2 -1
  69. package/dist/src/lib/manager/lambdaManager.d.ts.map +1 -1
  70. package/dist/src/lib/manager/lambdaManager.js +2 -1
  71. package/dist/src/lib/manager/lambdaManager.js.map +1 -1
  72. package/dist/src/lib/manager/logManager.d.ts +2 -1
  73. package/dist/src/lib/manager/logManager.d.ts.map +1 -1
  74. package/dist/src/lib/manager/logManager.js +2 -1
  75. package/dist/src/lib/manager/logManager.js.map +1 -1
  76. package/dist/src/lib/manager/route53Manager.d.ts +2 -1
  77. package/dist/src/lib/manager/route53Manager.d.ts.map +1 -1
  78. package/dist/src/lib/manager/route53Manager.js +2 -1
  79. package/dist/src/lib/manager/route53Manager.js.map +1 -1
  80. package/dist/src/lib/manager/s3Manager.d.ts +23 -2
  81. package/dist/src/lib/manager/s3Manager.d.ts.map +1 -1
  82. package/dist/src/lib/manager/s3Manager.js +61 -8
  83. package/dist/src/lib/manager/s3Manager.js.map +1 -1
  84. package/dist/src/lib/manager/secretsManager.d.ts +3 -2
  85. package/dist/src/lib/manager/secretsManager.d.ts.map +1 -1
  86. package/dist/src/lib/manager/secretsManager.js +3 -2
  87. package/dist/src/lib/manager/secretsManager.js.map +1 -1
  88. package/dist/src/lib/manager/snsManager.d.ts +2 -1
  89. package/dist/src/lib/manager/snsManager.d.ts.map +1 -1
  90. package/dist/src/lib/manager/snsManager.js +2 -1
  91. package/dist/src/lib/manager/snsManager.js.map +1 -1
  92. package/dist/src/lib/manager/ssmManager.d.ts +2 -1
  93. package/dist/src/lib/manager/ssmManager.d.ts.map +1 -1
  94. package/dist/src/lib/manager/ssmManager.js +2 -1
  95. package/dist/src/lib/manager/ssmManager.js.map +1 -1
  96. package/dist/src/lib/manager/vpcManager.d.ts +2 -1
  97. package/dist/src/lib/manager/vpcManager.d.ts.map +1 -1
  98. package/dist/src/lib/manager/vpcManager.js +2 -1
  99. package/dist/src/lib/manager/vpcManager.js.map +1 -1
  100. package/dist/src/lib/manager/wafManager.d.ts +2 -1
  101. package/dist/src/lib/manager/wafManager.d.ts.map +1 -1
  102. package/dist/src/lib/manager/wafManager.js +2 -1
  103. package/dist/src/lib/manager/wafManager.js.map +1 -1
  104. package/dist/src/lib/types.d.ts +6 -0
  105. package/dist/src/lib/types.d.ts.map +1 -1
  106. package/package.json +21 -22
  107. package/src/lib/common/commonConstruct.ts +5 -5
  108. package/src/lib/common/commonStack.ts +2 -1
  109. package/src/lib/construct/graphQLApiLambda.ts +1 -0
  110. package/src/lib/construct/siteWithEcsBackend.ts +1 -0
  111. package/src/lib/construct/staticSite.ts +1 -0
  112. package/src/lib/manager/acmManager.ts +2 -1
  113. package/src/lib/manager/apiManager.ts +2 -1
  114. package/src/lib/manager/appConfigManager.ts +2 -1
  115. package/src/lib/manager/cloudFrontManager.ts +2 -1
  116. package/src/lib/manager/cloudTrailManager.ts +2 -1
  117. package/src/lib/manager/cloudWatchManager.ts +2 -1
  118. package/src/lib/manager/codeBuildManager.ts +16 -0
  119. package/src/lib/manager/ecrManager.ts +2 -1
  120. package/src/lib/manager/ecsManager.ts +2 -1
  121. package/src/lib/manager/eksManager.ts +2 -1
  122. package/src/lib/manager/eventManager.ts +2 -1
  123. package/src/lib/manager/iamManager.ts +2 -1
  124. package/src/lib/manager/lambdaManager.ts +2 -1
  125. package/src/lib/manager/logManager.ts +2 -1
  126. package/src/lib/manager/route53Manager.ts +2 -1
  127. package/src/lib/manager/s3Manager.ts +67 -9
  128. package/src/lib/manager/secretsManager.ts +3 -2
  129. package/src/lib/manager/snsManager.ts +2 -1
  130. package/src/lib/manager/ssmManager.ts +2 -1
  131. package/src/lib/manager/vpcManager.ts +2 -1
  132. package/src/lib/manager/wafManager.ts +2 -1
  133. package/src/lib/types.ts +7 -0
@@ -19,9 +19,10 @@ import { createCfnOutput } from '../utils'
19
19
  * super(parent, id, props)
20
20
  * this.props = props
21
21
  * this.acmManager.createCertificate('MyCertificate', this)
22
+ * }
22
23
  * }
23
24
  *
24
- * @see [CDK Certificate Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-certificatemanager-readme.html}
25
+ * @see [CDK Certificate Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_certificatemanager-readme.html}
25
26
  */
26
27
  export class AcmManager {
27
28
  /**
@@ -19,9 +19,10 @@ import { createCfnOutput } from '../utils'
19
19
  * this.props = props
20
20
  * const lambdaFunction = this.lambdaManager.createLambdaFunction('MyFunction', this, role, layers, code)
21
21
  * this.apiManager.createLambdaRestApi('MyCertificate', this, props, lambdaFunction)
22
+ * }
22
23
  * }
23
24
  *
24
- * @see [CDK API Gateway Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-apigateway-readme.html}
25
+ * @see [CDK API Gateway Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway-readme.html}
25
26
  */
26
27
  export class ApiManager {
27
28
  /**
@@ -45,9 +45,10 @@ export const ArnsByRegion: { [key: string]: string } = {
45
45
  * super(parent, id, props)
46
46
  * this.props = props
47
47
  * this.appConfigManager.createApplication('MyApplication', this)
48
+ * }
48
49
  * }
49
50
  *
50
- * @see [CDK AppConfig Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-appconfig-readme.html}
51
+ * @see [CDK AppConfig Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_appconfig-readme.html}
51
52
  */
52
53
  export class AppConfigManager {
53
54
  /**
@@ -32,9 +32,10 @@ import * as cr from 'aws-cdk-lib/custom-resources'
32
32
  * originAccessIdentity,
33
33
  * certificate
34
34
  * )
35
+ * }
35
36
  * }
36
37
  *
37
- * @see [CDK CloudFront Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudfront-readme.html}
38
+ * @see [CDK CloudFront Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront-readme.html}
38
39
  */
39
40
  export class CloudFrontManager {
40
41
  public createOriginAccessIdentity(id: string, scope: CommonConstruct, accessBucket?: s3.IBucket) {
@@ -26,9 +26,10 @@ import { createCfnOutput } from '../utils'
26
26
  * logBucket,
27
27
  * logBucketPolicy
28
28
  * )
29
+ * }
29
30
  * }
30
31
  *
31
- * @see [CDK CloudTrail Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudtrail-readme.html}
32
+ * @see [CDK CloudTrail Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudtrail-readme.html}
32
33
  */
33
34
  export class CloudTrailManager {
34
35
  /**
@@ -28,9 +28,10 @@ import { CloudWatchWidgetType, createCfnOutput } from '../utils'
28
28
  * super(parent, id, props)
29
29
  * this.props = props
30
30
  * this.cloudWatchManager.createAlarmForMetric('MyAlarm', this, metric)
31
+ * }
31
32
  * }
32
33
  *
33
- * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cloudwatch-readme.html}
34
+ * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch-readme.html}
34
35
  */
35
36
  export class CloudWatchManager {
36
37
  /**
@@ -3,7 +3,23 @@ import * as codebuild from 'aws-cdk-lib/aws-codebuild'
3
3
  import * as cdk from 'aws-cdk-lib'
4
4
 
5
5
  /**
6
+ * @stability stable
7
+ * @category Developer Tools
8
+ * @summary Provides operations on AWS Code Build.
9
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
10
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
11
+ * @example
12
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
6
13
  *
14
+ * class CustomConstruct extends CommonConstruct {
15
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
16
+ * super(parent, id, props)
17
+ * this.props = props
18
+ * this.codeBuildManager.createImageForCloudfrontInvalidation('MyInvalidation', this, './docker ')
19
+ * }
20
+ * }
21
+ *
22
+ * @see [CDK Codebuild Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild-readme.html}
7
23
  */
8
24
  export class CodeBuildManager {
9
25
  /**
@@ -16,9 +16,10 @@ import { createCfnOutput } from '../utils'
16
16
  * super(parent, id, props)
17
17
  * this.props = props
18
18
  * this.ecrManager.createDockerImage('MyImage', this, dockerfilePath)
19
+ * }
19
20
  * }
20
21
  *
21
- * @see [CDK ECR Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ecr-readme.html}
22
+ * @see [CDK ECR Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecr-readme.html}
22
23
  */
23
24
  export class EcrManager {
24
25
  /**
@@ -20,9 +20,10 @@ import { createCfnOutput } from '../utils'
20
20
  * super(parent, id, props)
21
21
  * this.props = props
22
22
  * this.ecsManager.createEcsCluster('MyCluster', this, vpc)
23
+ * }
23
24
  * }
24
25
  *
25
- * @see [CDK ECS Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ecs-readme.html}
26
+ * @see [CDK ECS Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs-readme.html}
26
27
  */
27
28
  export class EcsManager {
28
29
  /**
@@ -19,9 +19,10 @@ import { createCfnOutput } from '../utils'
19
19
  * super(parent, id, props)
20
20
  * this.props = props
21
21
  * this.eksManager.createEksDeployment('MyEksDeployment', this, image, vpc)
22
+ * }
22
23
  * }
23
24
  *
24
- * @see [CDK EKS Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-eks-readme.html}
25
+ * @see [CDK EKS Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html}
25
26
  */
26
27
  export class EksManager {
27
28
  /**
@@ -20,9 +20,10 @@ import { createCfnOutput } from '../utils'
20
20
  * super(parent, id, props)
21
21
  * this.props = props
22
22
  * this.eventManager.createLambdaRule('MyLambdaRule', this, lambdaFunction)
23
+ * }
23
24
  * }
24
25
  *
25
- * @see [CDK EventBridge Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-events-readme.html}
26
+ * @see [CDK EventBridge Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events-readme.html}
26
27
  */
27
28
  export class EventManager {
28
29
  /**
@@ -20,9 +20,10 @@ import { createCfnOutput } from '../utils'
20
20
  * super(parent, id, props)
21
21
  * this.props = props
22
22
  * this.iamManager.createRoleForEcsEvent('MyEcsRole', this, cluster, task)
23
+ * }
23
24
  * }
24
25
  *
25
- * @see [CDK IAM Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-iam-readme.html}
26
+ * @see [CDK IAM Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam-readme.html}
26
27
  */
27
28
  export class IamManager {
28
29
  /**
@@ -23,9 +23,10 @@ import { CloudFrontManager } from './cloudFrontManager'
23
23
  * super(parent, id, props)
24
24
  * this.props = props
25
25
  * this.lambdaManager.createLambdaFunction('MyFunction', this, role, layers, code)
26
+ * }
26
27
  * }
27
28
  *
28
- * @see [CDK Lambda Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-readme.html}
29
+ * @see [CDK Lambda Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda-readme.html}
29
30
  */
30
31
  export class LambdaManager {
31
32
  /**
@@ -18,9 +18,10 @@ import { createCfnOutput } from '../utils'
18
18
  * super(parent, id, props)
19
19
  * this.props = props
20
20
  * this.logsManager.createMetricFilter('MyMetricFilter', this, logGroup)
21
+ * }
21
22
  * }
22
23
  *
23
- * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-logs-readme.html}
24
+ * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs-readme.html}
24
25
  */
25
26
  export class LogManager {
26
27
  /**
@@ -20,9 +20,10 @@ import { createCfnOutput } from '../utils'
20
20
  * super(parent, id, props)
21
21
  * this.props = props
22
22
  * this.route53Manager.createHostedZone('MyHostedZone', this)
23
+ * }
23
24
  * }
24
25
  *
25
- * @see [CDK Route53 Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-route53-readme.html}
26
+ * @see [CDK Route53 Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53-readme.html}
26
27
  */
27
28
  export class Route53Manager {
28
29
  /**
@@ -4,7 +4,7 @@ import * as iam from 'aws-cdk-lib/aws-iam'
4
4
  import * as s3 from 'aws-cdk-lib/aws-s3'
5
5
  import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment'
6
6
  import { CommonConstruct } from '../common/commonConstruct'
7
- import { S3BucketProps } from '../types'
7
+ import { LifecycleRule, S3BucketProps } from '../types'
8
8
  import { createCfnOutput } from '../utils'
9
9
 
10
10
  /**
@@ -21,11 +21,66 @@ import { createCfnOutput } from '../utils'
21
21
  * super(parent, id, props)
22
22
  * this.props = props
23
23
  * this.s3Manager.createS3Bucket('MyBucket', this)
24
+ * }
24
25
  * }
25
26
  *
26
- * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-readme.html}
27
+ * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3-readme.html}
27
28
  */
28
29
  export class S3Manager {
30
+ /**
31
+ * @summary Method to determine S3 Bucket lifecycle properties
32
+ * @param {S3BucketProps} props bucket properties
33
+ * @private
34
+ */
35
+ protected determineBucketLifecycleRules(props: S3BucketProps) {
36
+ if (!props.lifecycleRules) return undefined
37
+
38
+ const bucketLifecycleRules: LifecycleRule[] = []
39
+ props.lifecycleRules.forEach(lifecycleRule => {
40
+ bucketLifecycleRules.push({
41
+ id: lifecycleRule.id,
42
+ enabled: lifecycleRule.enabled,
43
+ abortIncompleteMultipartUploadAfter: lifecycleRule.abortIncompleteMultipartUploadAfter,
44
+ expirationDate: lifecycleRule.expirationDate,
45
+ expiration: lifecycleRule.expirationInDays ? cdk.Duration.days(lifecycleRule.expirationInDays) : undefined,
46
+ noncurrentVersionExpiration: lifecycleRule.noncurrentVersionExpirationInDays
47
+ ? cdk.Duration.days(lifecycleRule.noncurrentVersionExpirationInDays)
48
+ : undefined,
49
+ noncurrentVersionTransitions: lifecycleRule.noncurrentVersionTransitions,
50
+ transitions: lifecycleRule.transitions,
51
+ prefix: lifecycleRule.prefix,
52
+ tagFilters: lifecycleRule.tagFilters,
53
+ expiredObjectDeleteMarker: lifecycleRule.expiredObjectDeleteMarker,
54
+ })
55
+ })
56
+
57
+ return bucketLifecycleRules
58
+ }
59
+
60
+ /**
61
+ * @summary Method to determine the bucket name
62
+ * @param {CommonConstruct} scope scope in which this resource is defined
63
+ * @param {S3BucketProps} props bucket properties
64
+ * @private
65
+ */
66
+ protected static determineBucketName(scope: CommonConstruct, props: S3BucketProps) {
67
+ return scope.isProductionStage()
68
+ ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
69
+ : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
70
+ }
71
+
72
+ /**
73
+ * @summary Method to determine the log bucket name
74
+ * @param {CommonConstruct} scope scope in which this resource is defined
75
+ * @param {S3BucketProps} props bucket properties
76
+ * @private
77
+ */
78
+ protected static determineLogBucketName(scope: CommonConstruct, props: S3BucketProps) {
79
+ return scope.isProductionStage()
80
+ ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
81
+ : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
82
+ }
83
+
29
84
  /**
30
85
  * @summary Method to create a s3 bucket
31
86
  * @param {string} id scoped id of the resource
@@ -37,18 +92,14 @@ export class S3Manager {
37
92
 
38
93
  let bucket: s3.IBucket
39
94
 
40
- const bucketName = scope.isProductionStage()
41
- ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
42
- : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
95
+ const bucketName = S3Manager.determineBucketName(scope, props)
43
96
 
44
97
  if (props.existingBucket && props.bucketName) {
45
98
  bucket = s3.Bucket.fromBucketName(scope, `${id}`, bucketName)
46
99
  } else {
47
100
  let logBucket
48
101
  if (props.logBucketName) {
49
- const logBucketName = scope.isProductionStage()
50
- ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
51
- : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
102
+ const logBucketName = S3Manager.determineLogBucketName(scope, props)
52
103
  logBucket = s3.Bucket.fromBucketName(scope, `${id}-logs`, logBucketName)
53
104
  }
54
105
 
@@ -60,7 +111,7 @@ export class S3Manager {
60
111
  cors: props.cors,
61
112
  encryption: props.encryption || s3.BucketEncryption.S3_MANAGED,
62
113
  encryptionKey: props.encryptionKey,
63
- lifecycleRules: props.lifecycleRules,
114
+ lifecycleRules: this.determineBucketLifecycleRules(props),
64
115
  metrics: props.metrics,
65
116
  publicReadAccess: props.publicReadAccess,
66
117
  removalPolicy: props.removalPolicy || cdk.RemovalPolicy.RETAIN,
@@ -71,6 +122,13 @@ export class S3Manager {
71
122
  websiteRoutingRules: props.websiteRoutingRules,
72
123
  versioned: props.versioned,
73
124
  })
125
+
126
+ const cfnBucket = bucket.node.defaultChild as s3.CfnBucket
127
+ cfnBucket.notificationConfiguration = {
128
+ eventBridgeConfiguration: {
129
+ eventBridgeEnabled: props.enableEventBridge ?? false,
130
+ },
131
+ }
74
132
  }
75
133
 
76
134
  createCfnOutput(`${id}-bucketName`, scope, bucket.bucketName)
@@ -18,10 +18,11 @@ const fs = require('fs')
18
18
  * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
19
19
  * super(parent, id, props)
20
20
  * this.props = props
21
- * this.s3Manager.loadSecret('MySecretName', 'eu-west-1')
21
+ * this.secretsManager.loadSecret('MySecretName', 'eu-west-1')
22
+ * }
22
23
  * }
23
24
  *
24
- * @see [CDK Secrets Manager Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-secretsmanager-readme.html}
25
+ * @see [CDK Secrets Manager Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager-readme.html}
25
26
  */
26
27
  export class SecretsManager {
27
28
  /**
@@ -19,9 +19,10 @@ import { createCfnOutput } from '../utils'
19
19
  * super(parent, id, props)
20
20
  * this.props = props
21
21
  * this.snsManager.createEmailNotificationService('MySns', 'eu-west-1', ['test@example.com'])
22
+ * }
22
23
  * }
23
24
  *
24
- * @see [CDK Simple Notification Service Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-sns-readme.html}
25
+ * @see [CDK Simple Notification Service Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns-readme.html}
25
26
  */
26
27
  export class SnsManager {
27
28
  /**
@@ -18,9 +18,10 @@ import { SSMParameterReaderProps } from '../types'
18
18
  * super(parent, id, props)
19
19
  * this.props = props
20
20
  * this.acmManager.writeStringToParameters('MyParameter', this, ...props)
21
+ * }
21
22
  * }
22
23
  *
23
- * @see [CDK Systems Manager Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ssm-readme.html}
24
+ * @see [CDK Systems Manager Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm-readme.html}
24
25
  */
25
26
  export class SsmManager {
26
27
  /**
@@ -22,9 +22,10 @@ const CommonVpcIdentifier = 'CommonVpc'
22
22
  * super(parent, id, props)
23
23
  * this.props = props
24
24
  * this.vpcManager.createVpc('MyVPC', this)
25
+ * }
25
26
  * }
26
27
  *
27
- * @see [CDK VPC Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.Vpc.html}
28
+ * @see [CDK VPC Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.@aws-cdk_aws-ec2.Vpc.html}
28
29
  */
29
30
  export class VpcManager {
30
31
  /**
@@ -17,9 +17,10 @@ import { WafIPSetProps, WafWebACLProps } from '../types'
17
17
  * super(parent, id, props)
18
18
  * this.props = props
19
19
  * this.wafManager.createWebAcl('MyWebAcl', this)
20
+ * }
20
21
  * }
21
22
  *
22
- * @see [CDK WAF Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-waf-readme.html}
23
+ * @see [CDK WAF Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf-readme.html}
23
24
  */
24
25
  export class WafManager {
25
26
  /**
package/src/lib/types.ts CHANGED
@@ -268,10 +268,17 @@ export interface Route53Props extends route53.HostedZoneProps {
268
268
  useExistingHostedZone?: boolean
269
269
  }
270
270
 
271
+ export interface LifecycleRule extends s3.LifecycleRule {
272
+ expirationInDays?: number
273
+ noncurrentVersionExpirationInDays?: number
274
+ }
275
+
271
276
  /**
272
277
  * @category Storage
273
278
  */
274
279
  export interface S3BucketProps extends s3.BucketProps {
280
+ enableEventBridge?: boolean
281
+ lifecycleRules?: LifecycleRule[]
275
282
  bucketName: string
276
283
  logBucketName?: string
277
284
  existingBucket?: boolean