@gradientedge/cdk-utils 4.0.14 → 4.1.0

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.
@@ -3,7 +3,7 @@ import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
3
3
  import * as s3 from 'aws-cdk-lib/aws-s3';
4
4
  import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
5
5
  import { CommonConstruct } from '../common/commonConstruct';
6
- import { S3BucketProps } from '../types';
6
+ import { LifecycleRule, S3BucketProps } from '../types';
7
7
  /**
8
8
  * @stability stable
9
9
  * @category Storage
@@ -23,6 +23,26 @@ import { S3BucketProps } from '../types';
23
23
  * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-readme.html}
24
24
  */
25
25
  export declare class S3Manager {
26
+ /**
27
+ * @summary Method to determine S3 Bucket lifecycle properties
28
+ * @param {S3BucketProps} props bucket properties
29
+ * @private
30
+ */
31
+ protected determineBucketLifecycleRules(props: S3BucketProps): LifecycleRule[] | undefined;
32
+ /**
33
+ * @summary Method to determine the bucket name
34
+ * @param {CommonConstruct} scope scope in which this resource is defined
35
+ * @param {S3BucketProps} props bucket properties
36
+ * @private
37
+ */
38
+ protected static determineBucketName(scope: CommonConstruct, props: S3BucketProps): string;
39
+ /**
40
+ * @summary Method to determine the log bucket name
41
+ * @param {CommonConstruct} scope scope in which this resource is defined
42
+ * @param {S3BucketProps} props bucket properties
43
+ * @private
44
+ */
45
+ protected static determineLogBucketName(scope: CommonConstruct, props: S3BucketProps): string;
26
46
  /**
27
47
  * @summary Method to create a s3 bucket
28
48
  * @param {string} id scoped id of the resource
@@ -1 +1 @@
1
- {"version":3,"file":"s3Manager.d.ts","sourceRoot":"","sources":["../../../../src/lib/manager/s3Manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB;;;;;OAKG;IACI,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;IA+C9E;;;;;OAKG;IACI,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO;IA0B7F;;;;;;;;;OASG;IACI,kBAAkB,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,EAAE,CAAC,OAAO,EACtB,YAAY,EAAE,UAAU,CAAC,aAAa,EACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO;CAalB"}
1
+ {"version":3,"file":"s3Manager.d.ts","sourceRoot":"","sources":["../../../../src/lib/manager/s3Manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGvD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB;;;;OAIG;IACH,SAAS,CAAC,6BAA6B,CAAC,KAAK,EAAE,aAAa;IAyB5D;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;IAMjF;;;;;OAKG;IACH,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;IAMpF;;;;;OAKG;IACI,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa;IAkD9E;;;;;OAKG;IACI,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO;IA0B7F;;;;;;;;;OASG;IACI,kBAAkB,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,EAAE,CAAC,OAAO,EACtB,YAAY,EAAE,UAAU,CAAC,aAAa,EACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,OAAO;CAalB"}
@@ -44,6 +44,56 @@ const utils_1 = require("../utils");
44
44
  * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-readme.html}
45
45
  */
46
46
  class S3Manager {
47
+ /**
48
+ * @summary Method to determine S3 Bucket lifecycle properties
49
+ * @param {S3BucketProps} props bucket properties
50
+ * @private
51
+ */
52
+ determineBucketLifecycleRules(props) {
53
+ if (!props.lifecycleRules)
54
+ return undefined;
55
+ const bucketLifecycleRules = [];
56
+ props.lifecycleRules.forEach(lifecycleRule => {
57
+ bucketLifecycleRules.push({
58
+ id: lifecycleRule.id,
59
+ enabled: lifecycleRule.enabled,
60
+ abortIncompleteMultipartUploadAfter: lifecycleRule.abortIncompleteMultipartUploadAfter,
61
+ expirationDate: lifecycleRule.expirationDate,
62
+ expiration: lifecycleRule.expirationInDays ? cdk.Duration.days(lifecycleRule.expirationInDays) : undefined,
63
+ noncurrentVersionExpiration: lifecycleRule.noncurrentVersionExpirationInDays
64
+ ? cdk.Duration.days(lifecycleRule.noncurrentVersionExpirationInDays)
65
+ : undefined,
66
+ noncurrentVersionTransitions: lifecycleRule.noncurrentVersionTransitions,
67
+ transitions: lifecycleRule.transitions,
68
+ prefix: lifecycleRule.prefix,
69
+ tagFilters: lifecycleRule.tagFilters,
70
+ expiredObjectDeleteMarker: lifecycleRule.expiredObjectDeleteMarker,
71
+ });
72
+ });
73
+ return bucketLifecycleRules;
74
+ }
75
+ /**
76
+ * @summary Method to determine the bucket name
77
+ * @param {CommonConstruct} scope scope in which this resource is defined
78
+ * @param {S3BucketProps} props bucket properties
79
+ * @private
80
+ */
81
+ static determineBucketName(scope, props) {
82
+ return scope.isProductionStage()
83
+ ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
84
+ : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`;
85
+ }
86
+ /**
87
+ * @summary Method to determine the log bucket name
88
+ * @param {CommonConstruct} scope scope in which this resource is defined
89
+ * @param {S3BucketProps} props bucket properties
90
+ * @private
91
+ */
92
+ static determineLogBucketName(scope, props) {
93
+ return scope.isProductionStage()
94
+ ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
95
+ : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`;
96
+ }
47
97
  /**
48
98
  * @summary Method to create a s3 bucket
49
99
  * @param {string} id scoped id of the resource
@@ -54,18 +104,14 @@ class S3Manager {
54
104
  if (!props)
55
105
  throw `S3 props undefined`;
56
106
  let bucket;
57
- const bucketName = scope.isProductionStage()
58
- ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
59
- : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`;
107
+ const bucketName = S3Manager.determineBucketName(scope, props);
60
108
  if (props.existingBucket && props.bucketName) {
61
109
  bucket = s3.Bucket.fromBucketName(scope, `${id}`, bucketName);
62
110
  }
63
111
  else {
64
112
  let logBucket;
65
113
  if (props.logBucketName) {
66
- const logBucketName = scope.isProductionStage()
67
- ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
68
- : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`;
114
+ const logBucketName = S3Manager.determineLogBucketName(scope, props);
69
115
  logBucket = s3.Bucket.fromBucketName(scope, `${id}-logs`, logBucketName);
70
116
  }
71
117
  bucket = new s3.Bucket(scope, `${id}-bucket`, {
@@ -76,7 +122,7 @@ class S3Manager {
76
122
  cors: props.cors,
77
123
  encryption: props.encryption || s3.BucketEncryption.S3_MANAGED,
78
124
  encryptionKey: props.encryptionKey,
79
- lifecycleRules: props.lifecycleRules,
125
+ lifecycleRules: this.determineBucketLifecycleRules(props),
80
126
  metrics: props.metrics,
81
127
  publicReadAccess: props.publicReadAccess,
82
128
  removalPolicy: props.removalPolicy || cdk.RemovalPolicy.RETAIN,
@@ -87,6 +133,12 @@ class S3Manager {
87
133
  websiteRoutingRules: props.websiteRoutingRules,
88
134
  versioned: props.versioned,
89
135
  });
136
+ const cfnBucket = bucket.node.defaultChild;
137
+ cfnBucket.notificationConfiguration = {
138
+ eventBridgeConfiguration: {
139
+ eventBridgeEnabled: props.enableEventBridge ?? false,
140
+ },
141
+ };
90
142
  }
91
143
  (0, utils_1.createCfnOutput)(`${id}-bucketName`, scope, bucket.bucketName);
92
144
  (0, utils_1.createCfnOutput)(`${id}-bucketArn`, scope, bucket.bucketArn);
@@ -1 +1 @@
1
- {"version":3,"file":"s3Manager.js","sourceRoot":"","sources":["../../../../src/lib/manager/s3Manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3Manager.js","sourceRoot":"","sources":["../../../../src/lib/manager/s3Manager.ts"],"names":[],"mappings":"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"}
@@ -245,10 +245,16 @@ export interface MetricFilterProps extends logs.MetricFilterProps {
245
245
  export interface Route53Props extends route53.HostedZoneProps {
246
246
  useExistingHostedZone?: boolean;
247
247
  }
248
+ export interface LifecycleRule extends s3.LifecycleRule {
249
+ expirationInDays?: number;
250
+ noncurrentVersionExpirationInDays?: number;
251
+ }
248
252
  /**
249
253
  * @category Storage
250
254
  */
251
255
  export interface S3BucketProps extends s3.BucketProps {
256
+ enableEventBridge?: boolean;
257
+ lifecycleRules?: LifecycleRule[];
252
258
  bucketName: string;
253
259
  logBucketName?: string;
254
260
  existingBucket?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradientedge/cdk-utils",
3
- "version": "4.0.14",
3
+ "version": "4.1.0",
4
4
  "description": "Utilities for AWS CDK provisioning",
5
5
  "main": "dist/index.js",
6
6
  "engines": {
@@ -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
  /**
@@ -26,6 +26,60 @@ import { createCfnOutput } from '../utils'
26
26
  * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3-readme.html}
27
27
  */
28
28
  export class S3Manager {
29
+ /**
30
+ * @summary Method to determine S3 Bucket lifecycle properties
31
+ * @param {S3BucketProps} props bucket properties
32
+ * @private
33
+ */
34
+ protected determineBucketLifecycleRules(props: S3BucketProps) {
35
+ if (!props.lifecycleRules) return undefined
36
+
37
+ const bucketLifecycleRules: LifecycleRule[] = []
38
+ props.lifecycleRules.forEach(lifecycleRule => {
39
+ bucketLifecycleRules.push({
40
+ id: lifecycleRule.id,
41
+ enabled: lifecycleRule.enabled,
42
+ abortIncompleteMultipartUploadAfter: lifecycleRule.abortIncompleteMultipartUploadAfter,
43
+ expirationDate: lifecycleRule.expirationDate,
44
+ expiration: lifecycleRule.expirationInDays ? cdk.Duration.days(lifecycleRule.expirationInDays) : undefined,
45
+ noncurrentVersionExpiration: lifecycleRule.noncurrentVersionExpirationInDays
46
+ ? cdk.Duration.days(lifecycleRule.noncurrentVersionExpirationInDays)
47
+ : undefined,
48
+ noncurrentVersionTransitions: lifecycleRule.noncurrentVersionTransitions,
49
+ transitions: lifecycleRule.transitions,
50
+ prefix: lifecycleRule.prefix,
51
+ tagFilters: lifecycleRule.tagFilters,
52
+ expiredObjectDeleteMarker: lifecycleRule.expiredObjectDeleteMarker,
53
+ })
54
+ })
55
+
56
+ return bucketLifecycleRules
57
+ }
58
+
59
+ /**
60
+ * @summary Method to determine the bucket name
61
+ * @param {CommonConstruct} scope scope in which this resource is defined
62
+ * @param {S3BucketProps} props bucket properties
63
+ * @private
64
+ */
65
+ protected static determineBucketName(scope: CommonConstruct, props: S3BucketProps) {
66
+ return scope.isProductionStage()
67
+ ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
68
+ : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
69
+ }
70
+
71
+ /**
72
+ * @summary Method to determine the log bucket name
73
+ * @param {CommonConstruct} scope scope in which this resource is defined
74
+ * @param {S3BucketProps} props bucket properties
75
+ * @private
76
+ */
77
+ protected static determineLogBucketName(scope: CommonConstruct, props: S3BucketProps) {
78
+ return scope.isProductionStage()
79
+ ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
80
+ : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
81
+ }
82
+
29
83
  /**
30
84
  * @summary Method to create a s3 bucket
31
85
  * @param {string} id scoped id of the resource
@@ -37,18 +91,14 @@ export class S3Manager {
37
91
 
38
92
  let bucket: s3.IBucket
39
93
 
40
- const bucketName = scope.isProductionStage()
41
- ? `${props.bucketName}.${scope.fullyQualifiedDomainName}`
42
- : `${props.bucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
94
+ const bucketName = S3Manager.determineBucketName(scope, props)
43
95
 
44
96
  if (props.existingBucket && props.bucketName) {
45
97
  bucket = s3.Bucket.fromBucketName(scope, `${id}`, bucketName)
46
98
  } else {
47
99
  let logBucket
48
100
  if (props.logBucketName) {
49
- const logBucketName = scope.isProductionStage()
50
- ? `${props.logBucketName}.${scope.fullyQualifiedDomainName}`
51
- : `${props.logBucketName}-${scope.props.stage}.${scope.fullyQualifiedDomainName}`
101
+ const logBucketName = S3Manager.determineLogBucketName(scope, props)
52
102
  logBucket = s3.Bucket.fromBucketName(scope, `${id}-logs`, logBucketName)
53
103
  }
54
104
 
@@ -60,7 +110,7 @@ export class S3Manager {
60
110
  cors: props.cors,
61
111
  encryption: props.encryption || s3.BucketEncryption.S3_MANAGED,
62
112
  encryptionKey: props.encryptionKey,
63
- lifecycleRules: props.lifecycleRules,
113
+ lifecycleRules: this.determineBucketLifecycleRules(props),
64
114
  metrics: props.metrics,
65
115
  publicReadAccess: props.publicReadAccess,
66
116
  removalPolicy: props.removalPolicy || cdk.RemovalPolicy.RETAIN,
@@ -71,6 +121,13 @@ export class S3Manager {
71
121
  websiteRoutingRules: props.websiteRoutingRules,
72
122
  versioned: props.versioned,
73
123
  })
124
+
125
+ const cfnBucket = bucket.node.defaultChild as s3.CfnBucket
126
+ cfnBucket.notificationConfiguration = {
127
+ eventBridgeConfiguration: {
128
+ eventBridgeEnabled: props.enableEventBridge ?? false,
129
+ },
130
+ }
74
131
  }
75
132
 
76
133
  createCfnOutput(`${id}-bucketName`, scope, bucket.bucketName)
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