@@ -163,7 +163,9 @@ describe('rules', () => {
163
163
Template . fromStack ( stack ) . hasResourceProperties ( 'AWS::S3::Bucket' , {
164
164
LifecycleConfiguration : {
165
165
Rules : [ {
166
- NoncurrentVersionExpirationInDays : 10 ,
166
+ NoncurrentVersionExpiration : {
167
+ NoncurrentDays : 10 ,
168
+ } ,
167
169
NoncurrentVersionTransitions : [
168
170
{
169
171
NewerNoncurrentVersions : 1 ,
@@ -199,7 +201,85 @@ describe('rules', () => {
199
201
Template . fromStack ( stack ) . hasResourceProperties ( 'AWS::S3::Bucket' , {
200
202
LifecycleConfiguration : {
201
203
Rules : [ {
202
- NoncurrentVersionExpirationInDays : 10 ,
204
+ NoncurrentVersionExpiration : {
205
+ NoncurrentDays : 10 ,
206
+ } ,
207
+ NoncurrentVersionTransitions : [
208
+ {
209
+ StorageClass : 'GLACIER_IR' ,
210
+ TransitionInDays : 10 ,
211
+ } ,
212
+ ] ,
213
+ Status : 'Enabled' ,
214
+ } ] ,
215
+ } ,
216
+ } ) ;
217
+ } ) ;
218
+
219
+ test ( 'Noncurrent expiration rule with versions to retain' , ( ) => {
220
+ // GIVEN
221
+ const stack = new Stack ( ) ;
222
+
223
+ // WHEN: Noncurrent version to retain available
224
+ new Bucket ( stack , 'Bucket1' , {
225
+ versioned : true ,
226
+ lifecycleRules : [ {
227
+ noncurrentVersionExpiration : Duration . days ( 10 ) ,
228
+ noncurrentVersionsToRetain : 1 ,
229
+ noncurrentVersionTransitions : [
230
+ {
231
+ storageClass : StorageClass . GLACIER_INSTANT_RETRIEVAL ,
232
+ transitionAfter : Duration . days ( 10 ) ,
233
+ } ,
234
+ ] ,
235
+ } ] ,
236
+ } ) ;
237
+
238
+ // THEN
239
+ Template . fromStack ( stack ) . hasResourceProperties ( 'AWS::S3::Bucket' , {
240
+ LifecycleConfiguration : {
241
+ Rules : [ {
242
+ NoncurrentVersionExpiration : {
243
+ NoncurrentDays : 10 ,
244
+ NewerNoncurrentVersions : 1 ,
245
+ } ,
246
+ NoncurrentVersionTransitions : [
247
+ {
248
+ StorageClass : 'GLACIER_IR' ,
249
+ TransitionInDays : 10 ,
250
+ } ,
251
+ ] ,
252
+ Status : 'Enabled' ,
253
+ } ] ,
254
+ } ,
255
+ } ) ;
256
+ } ) ;
257
+
258
+ test ( 'Noncurrent expiration rule without versions to retain' , ( ) => {
259
+ // GIVEN
260
+ const stack = new Stack ( ) ;
261
+
262
+ // WHEN: Noncurrent version to retain not set
263
+ new Bucket ( stack , 'Bucket1' , {
264
+ versioned : true ,
265
+ lifecycleRules : [ {
266
+ noncurrentVersionExpiration : Duration . days ( 10 ) ,
267
+ noncurrentVersionTransitions : [
268
+ {
269
+ storageClass : StorageClass . GLACIER_INSTANT_RETRIEVAL ,
270
+ transitionAfter : Duration . days ( 10 ) ,
271
+ } ,
272
+ ] ,
273
+ } ] ,
274
+ } ) ;
275
+
276
+ // THEN
277
+ Template . fromStack ( stack ) . hasResourceProperties ( 'AWS::S3::Bucket' , {
278
+ LifecycleConfiguration : {
279
+ Rules : [ {
280
+ NoncurrentVersionExpiration : {
281
+ NoncurrentDays : 10 ,
282
+ } ,
203
283
NoncurrentVersionTransitions : [
204
284
{
205
285
StorageClass : 'GLACIER_IR' ,
0 commit comments