@aws-solutions-constructs/aws-cloudfront-s3 2.1.0 → 2.4.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.
@@ -152,6 +152,12 @@
152
152
  "IgnorePublicAcls": true,
153
153
  "RestrictPublicBuckets": true
154
154
  },
155
+ "Tags": [
156
+ {
157
+ "Key": "aws-cdk:auto-delete-objects",
158
+ "Value": "true"
159
+ }
160
+ ],
155
161
  "VersioningConfiguration": {
156
162
  "Status": "Enabled"
157
163
  }
@@ -201,6 +207,44 @@
201
207
  }
202
208
  ]
203
209
  },
210
+ {
211
+ "Action": [
212
+ "s3:GetBucket*",
213
+ "s3:List*",
214
+ "s3:DeleteObject*"
215
+ ],
216
+ "Effect": "Allow",
217
+ "Principal": {
218
+ "AWS": {
219
+ "Fn::GetAtt": [
220
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
221
+ "Arn"
222
+ ]
223
+ }
224
+ },
225
+ "Resource": [
226
+ {
227
+ "Fn::GetAtt": [
228
+ "testcloudfronts3S3BucketE0C5F76E",
229
+ "Arn"
230
+ ]
231
+ },
232
+ {
233
+ "Fn::Join": [
234
+ "",
235
+ [
236
+ {
237
+ "Fn::GetAtt": [
238
+ "testcloudfronts3S3BucketE0C5F76E",
239
+ "Arn"
240
+ ]
241
+ },
242
+ "/*"
243
+ ]
244
+ ]
245
+ }
246
+ ]
247
+ },
204
248
  {
205
249
  "Action": "s3:GetObject",
206
250
  "Effect": "Allow",
@@ -242,6 +286,25 @@
242
286
  }
243
287
  }
244
288
  },
289
+ "testcloudfronts3S3BucketAutoDeleteObjectsCustomResourceA13DD8F7": {
290
+ "Type": "Custom::S3AutoDeleteObjects",
291
+ "Properties": {
292
+ "ServiceToken": {
293
+ "Fn::GetAtt": [
294
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
295
+ "Arn"
296
+ ]
297
+ },
298
+ "BucketName": {
299
+ "Ref": "testcloudfronts3S3BucketE0C5F76E"
300
+ }
301
+ },
302
+ "DependsOn": [
303
+ "testcloudfronts3S3BucketPolicy250F1F61"
304
+ ],
305
+ "UpdateReplacePolicy": "Delete",
306
+ "DeletionPolicy": "Delete"
307
+ },
245
308
  "testcloudfronts3SetHttpSecurityHeaders6C5A1E69": {
246
309
  "Type": "AWS::CloudFront::Function",
247
310
  "Properties": {
@@ -273,12 +336,18 @@
273
336
  "IgnorePublicAcls": true,
274
337
  "RestrictPublicBuckets": true
275
338
  },
339
+ "Tags": [
340
+ {
341
+ "Key": "aws-cdk:auto-delete-objects",
342
+ "Value": "true"
343
+ }
344
+ ],
276
345
  "VersioningConfiguration": {
277
346
  "Status": "Enabled"
278
347
  }
279
348
  },
280
- "UpdateReplacePolicy": "Retain",
281
- "DeletionPolicy": "Retain",
349
+ "UpdateReplacePolicy": "Delete",
350
+ "DeletionPolicy": "Delete",
282
351
  "Metadata": {
283
352
  "cfn_nag": {
284
353
  "rules_to_suppress": [
@@ -331,12 +400,69 @@
331
400
  ]
332
401
  }
333
402
  ]
403
+ },
404
+ {
405
+ "Action": [
406
+ "s3:GetBucket*",
407
+ "s3:List*",
408
+ "s3:DeleteObject*"
409
+ ],
410
+ "Effect": "Allow",
411
+ "Principal": {
412
+ "AWS": {
413
+ "Fn::GetAtt": [
414
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
415
+ "Arn"
416
+ ]
417
+ }
418
+ },
419
+ "Resource": [
420
+ {
421
+ "Fn::GetAtt": [
422
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8",
423
+ "Arn"
424
+ ]
425
+ },
426
+ {
427
+ "Fn::Join": [
428
+ "",
429
+ [
430
+ {
431
+ "Fn::GetAtt": [
432
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8",
433
+ "Arn"
434
+ ]
435
+ },
436
+ "/*"
437
+ ]
438
+ ]
439
+ }
440
+ ]
334
441
  }
335
442
  ],
336
443
  "Version": "2012-10-17"
337
444
  }
338
445
  }
339
446
  },
447
+ "testcloudfronts3CloudfrontLoggingBucketAutoDeleteObjectsCustomResource19604D88": {
448
+ "Type": "Custom::S3AutoDeleteObjects",
449
+ "Properties": {
450
+ "ServiceToken": {
451
+ "Fn::GetAtt": [
452
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
453
+ "Arn"
454
+ ]
455
+ },
456
+ "BucketName": {
457
+ "Ref": "testcloudfronts3CloudfrontLoggingBucket985C0FE8"
458
+ }
459
+ },
460
+ "DependsOn": [
461
+ "testcloudfronts3CloudfrontLoggingBucketPolicyDF55851B"
462
+ ],
463
+ "UpdateReplacePolicy": "Delete",
464
+ "DeletionPolicy": "Delete"
465
+ },
340
466
  "testcloudfronts3CloudFrontDistributionOrigin1S3Origin4695F058": {
341
467
  "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
342
468
  "Properties": {
@@ -414,6 +540,82 @@
414
540
  ]
415
541
  }
416
542
  }
543
+ },
544
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": {
545
+ "Type": "AWS::IAM::Role",
546
+ "Properties": {
547
+ "AssumeRolePolicyDocument": {
548
+ "Version": "2012-10-17",
549
+ "Statement": [
550
+ {
551
+ "Action": "sts:AssumeRole",
552
+ "Effect": "Allow",
553
+ "Principal": {
554
+ "Service": "lambda.amazonaws.com"
555
+ }
556
+ }
557
+ ]
558
+ },
559
+ "ManagedPolicyArns": [
560
+ {
561
+ "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
562
+ }
563
+ ]
564
+ }
565
+ },
566
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": {
567
+ "Type": "AWS::Lambda::Function",
568
+ "Properties": {
569
+ "Code": {
570
+ "S3Bucket": {
571
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
572
+ },
573
+ "S3Key": "15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538.zip"
574
+ },
575
+ "Timeout": 900,
576
+ "MemorySize": 128,
577
+ "Handler": "__entrypoint__.handler",
578
+ "Role": {
579
+ "Fn::GetAtt": [
580
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
581
+ "Arn"
582
+ ]
583
+ },
584
+ "Runtime": "nodejs12.x",
585
+ "Description": {
586
+ "Fn::Join": [
587
+ "",
588
+ [
589
+ "Lambda function for auto-deleting objects in ",
590
+ {
591
+ "Ref": "testcloudfronts3S3BucketE0C5F76E"
592
+ },
593
+ " S3 bucket."
594
+ ]
595
+ ]
596
+ }
597
+ },
598
+ "DependsOn": [
599
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092"
600
+ ],
601
+ "Metadata": {
602
+ "cfn_nag": {
603
+ "rules_to_suppress": [
604
+ {
605
+ "id": "W58",
606
+ "reason": "CDK generated custom resource"
607
+ },
608
+ {
609
+ "id": "W89",
610
+ "reason": "CDK generated custom resource"
611
+ },
612
+ {
613
+ "id": "W92",
614
+ "reason": "CDK generated custom resource"
615
+ }
616
+ ]
617
+ }
618
+ }
417
619
  }
418
620
  },
419
621
  "Parameters": {
@@ -35,6 +35,10 @@ const cloudfrontFunction = new cloudfront.Function(stack, "MyFunction", {
35
35
  }")
36
36
  });
37
37
  new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3', {
38
+ cloudFrontLoggingBucketProps: {
39
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
40
+ autoDeleteObjects: true
41
+ },
38
42
  cloudFrontDistributionProps: {
39
43
  defaultBehavior: {
40
44
  functionAssociations: [
@@ -47,8 +51,10 @@ new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3', {
47
51
  },
48
52
  bucketProps: {
49
53
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
54
+ autoDeleteObjects: true
50
55
  }
51
56
  });
57
+ core_1.suppressAutoDeleteHandlerWarnings(stack);
52
58
  // Synth
53
59
  app.synth();
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY3VzdG9tLXNlY3VyaXR5LWhlYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jdXN0b20tc2VjdXJpdHktaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCxnQ0FBd0M7QUFDeEMseURBQXdFO0FBQ3hFLHlEQUF5RDtBQUV6RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLDZCQUE2QjtBQUM3QixNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7O0lBU3ZDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxJQUFJLG9CQUFjLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFO0lBQzlDLDJCQUEyQixFQUFFO1FBQzNCLGVBQWUsRUFBRTtZQUNmLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWU7b0JBQ3ZELFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztLQUNyQztDQUNGLENBQUMsQ0FBQztBQUVILFFBQVE7QUFDUixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgMjAyMiBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb1MzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSB9IGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgKiBhcyBjbG91ZGZyb250IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtY2xvdWRmcm9udC1zMyc7XG5cbi8vIGN1c3RvbSBjbG91ZGZyb250IGZ1bmN0aW9uXG5jb25zdCBjbG91ZGZyb250RnVuY3Rpb24gPSBuZXcgY2xvdWRmcm9udC5GdW5jdGlvbihzdGFjaywgXCJNeUZ1bmN0aW9uXCIsIHtcbiAgY29kZTogY2xvdWRmcm9udC5GdW5jdGlvbkNvZGUuZnJvbUlubGluZShcImZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHsgdmFyIHJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2U7IFxcXG4gICAgdmFyIGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOyBcXFxuICAgIGhlYWRlcnNbJ3N0cmljdC10cmFuc3BvcnQtc2VjdXJpdHknXSA9IHsgdmFsdWU6ICdtYXgtYWdlPTYzMDcyMDAwOyBpbmNsdWRlU3ViZG9tYWluczsgcHJlbG9hZCd9OyBcXFxuICAgIGhlYWRlcnNbJ2NvbnRlbnQtc2VjdXJpdHktcG9saWN5J10gPSB7IHZhbHVlOiBcXFwiZGVmYXVsdC1zcmMgJ25vbmUnOyBiYXNlLXVyaSAnc2VsZic7IGltZy1zcmMgJ3NlbGYnOyBzY3JpcHQtc3JjICdzZWxmJzsgc3R5bGUtc3JjICdzZWxmJyBodHRwczo7IG9iamVjdC1zcmMgJ25vbmUnOyBmcmFtZS1hbmNlc3RvcnMgJ25vbmUnOyBmb250LXNyYyAnc2VsZicgaHR0cHM6OyBmb3JtLWFjdGlvbiAnc2VsZic7IG1hbmlmZXN0LXNyYyAnc2VsZic7IGNvbm5lY3Qtc3JjICdzZWxmJ1xcXCIgfTsgXFxcbiAgICBoZWFkZXJzWyd4LWNvbnRlbnQtdHlwZS1vcHRpb25zJ10gPSB7IHZhbHVlOiAnbm9zbmlmZid9OyBcXFxuICAgIGhlYWRlcnNbJ3gtZnJhbWUtb3B0aW9ucyddID0ge3ZhbHVlOiAnREVOWSd9OyBcXFxuICAgIGhlYWRlcnNbJ3gteHNzLXByb3RlY3Rpb24nXSA9IHt2YWx1ZTogJzE7IG1vZGU9YmxvY2snfTsgXFxcbiAgICBoZWFkZXJzWydyZWZlcnJlci1wb2xpY3knXSA9IHsgdmFsdWU6ICdzYW1lLW9yaWdpbicgfTsgXFxcbiAgICByZXR1cm4gcmVzcG9uc2U7IFxcXG4gIH1cIilcbn0pO1xuXG5uZXcgQ2xvdWRGcm9udFRvUzMoc3RhY2ssICd0ZXN0LWNsb3VkZnJvbnQtczMnLCB7XG4gIGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wczoge1xuICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgZnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5GdW5jdGlvbkV2ZW50VHlwZS5WSUVXRVJfUkVTUE9OU0UsXG4gICAgICAgICAgZnVuY3Rpb246IGNsb3VkZnJvbnRGdW5jdGlvblxuICAgICAgICB9XG4gICAgICBdLFxuICAgIH1cbiAgfSxcbiAgYnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gIH1cbn0pO1xuXG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY3VzdG9tLXNlY3VyaXR5LWhlYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jdXN0b20tc2VjdXJpdHktaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCxnQ0FBd0M7QUFDeEMseURBQTJHO0FBQzNHLHlEQUF5RDtBQUV6RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLDZCQUE2QjtBQUM3QixNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7O0lBU3ZDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxJQUFJLG9CQUFjLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFO0lBQzlDLDRCQUE0QixFQUFFO1FBQzVCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLGVBQWUsRUFBRTtZQUNmLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWU7b0JBQ3ZELFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAyMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRvUzMgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lLCBzdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3MgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgYXdzLWNsb3VkZnJvbnQtczMnO1xuXG4vLyBjdXN0b20gY2xvdWRmcm9udCBmdW5jdGlvblxuY29uc3QgY2xvdWRmcm9udEZ1bmN0aW9uID0gbmV3IGNsb3VkZnJvbnQuRnVuY3Rpb24oc3RhY2ssIFwiTXlGdW5jdGlvblwiLCB7XG4gIGNvZGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUoXCJmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7IHZhciByZXNwb25zZSA9IGV2ZW50LnJlc3BvbnNlOyBcXFxuICAgIHZhciBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsgXFxcbiAgICBoZWFkZXJzWydzdHJpY3QtdHJhbnNwb3J0LXNlY3VyaXR5J10gPSB7IHZhbHVlOiAnbWF4LWFnZT02MzA3MjAwMDsgaW5jbHVkZVN1YmRvbWFpbnM7IHByZWxvYWQnfTsgXFxcbiAgICBoZWFkZXJzWydjb250ZW50LXNlY3VyaXR5LXBvbGljeSddID0geyB2YWx1ZTogXFxcImRlZmF1bHQtc3JjICdub25lJzsgYmFzZS11cmkgJ3NlbGYnOyBpbWctc3JjICdzZWxmJzsgc2NyaXB0LXNyYyAnc2VsZic7IHN0eWxlLXNyYyAnc2VsZicgaHR0cHM6OyBvYmplY3Qtc3JjICdub25lJzsgZnJhbWUtYW5jZXN0b3JzICdub25lJzsgZm9udC1zcmMgJ3NlbGYnIGh0dHBzOjsgZm9ybS1hY3Rpb24gJ3NlbGYnOyBtYW5pZmVzdC1zcmMgJ3NlbGYnOyBjb25uZWN0LXNyYyAnc2VsZidcXFwiIH07IFxcXG4gICAgaGVhZGVyc1sneC1jb250ZW50LXR5cGUtb3B0aW9ucyddID0geyB2YWx1ZTogJ25vc25pZmYnfTsgXFxcbiAgICBoZWFkZXJzWyd4LWZyYW1lLW9wdGlvbnMnXSA9IHt2YWx1ZTogJ0RFTlknfTsgXFxcbiAgICBoZWFkZXJzWyd4LXhzcy1wcm90ZWN0aW9uJ10gPSB7dmFsdWU6ICcxOyBtb2RlPWJsb2NrJ307IFxcXG4gICAgaGVhZGVyc1sncmVmZXJyZXItcG9saWN5J10gPSB7IHZhbHVlOiAnc2FtZS1vcmlnaW4nIH07IFxcXG4gICAgcmV0dXJuIHJlc3BvbnNlOyBcXFxuICB9XCIpXG59KTtcblxubmV3IENsb3VkRnJvbnRUb1MzKHN0YWNrLCAndGVzdC1jbG91ZGZyb250LXMzJywge1xuICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gIH0sXG4gIGNsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wczoge1xuICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgZnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5GdW5jdGlvbkV2ZW50VHlwZS5WSUVXRVJfUkVTUE9OU0UsXG4gICAgICAgICAgZnVuY3Rpb246IGNsb3VkZnJvbnRGdW5jdGlvblxuICAgICAgICB9XG4gICAgICBdLFxuICAgIH1cbiAgfSxcbiAgYnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgfVxufSk7XG5cbnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=
@@ -120,6 +120,12 @@
120
120
  "IgnorePublicAcls": true,
121
121
  "RestrictPublicBuckets": true
122
122
  },
123
+ "Tags": [
124
+ {
125
+ "Key": "aws-cdk:auto-delete-objects",
126
+ "Value": "true"
127
+ }
128
+ ],
123
129
  "VersioningConfiguration": {
124
130
  "Status": "Enabled"
125
131
  }
@@ -169,6 +175,44 @@
169
175
  }
170
176
  ]
171
177
  },
178
+ {
179
+ "Action": [
180
+ "s3:GetBucket*",
181
+ "s3:List*",
182
+ "s3:DeleteObject*"
183
+ ],
184
+ "Effect": "Allow",
185
+ "Principal": {
186
+ "AWS": {
187
+ "Fn::GetAtt": [
188
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
189
+ "Arn"
190
+ ]
191
+ }
192
+ },
193
+ "Resource": [
194
+ {
195
+ "Fn::GetAtt": [
196
+ "testcloudfronts3S3BucketE0C5F76E",
197
+ "Arn"
198
+ ]
199
+ },
200
+ {
201
+ "Fn::Join": [
202
+ "",
203
+ [
204
+ {
205
+ "Fn::GetAtt": [
206
+ "testcloudfronts3S3BucketE0C5F76E",
207
+ "Arn"
208
+ ]
209
+ },
210
+ "/*"
211
+ ]
212
+ ]
213
+ }
214
+ ]
215
+ },
172
216
  {
173
217
  "Action": "s3:GetObject",
174
218
  "Effect": "Allow",
@@ -210,6 +254,25 @@
210
254
  }
211
255
  }
212
256
  },
257
+ "testcloudfronts3S3BucketAutoDeleteObjectsCustomResourceA13DD8F7": {
258
+ "Type": "Custom::S3AutoDeleteObjects",
259
+ "Properties": {
260
+ "ServiceToken": {
261
+ "Fn::GetAtt": [
262
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
263
+ "Arn"
264
+ ]
265
+ },
266
+ "BucketName": {
267
+ "Ref": "testcloudfronts3S3BucketE0C5F76E"
268
+ }
269
+ },
270
+ "DependsOn": [
271
+ "testcloudfronts3S3BucketPolicy250F1F61"
272
+ ],
273
+ "UpdateReplacePolicy": "Delete",
274
+ "DeletionPolicy": "Delete"
275
+ },
213
276
  "testcloudfronts3SetHttpSecurityHeaders6C5A1E69": {
214
277
  "Type": "AWS::CloudFront::Function",
215
278
  "Properties": {
@@ -241,6 +304,12 @@
241
304
  "IgnorePublicAcls": true,
242
305
  "RestrictPublicBuckets": true
243
306
  },
307
+ "Tags": [
308
+ {
309
+ "Key": "aws-cdk:auto-delete-objects",
310
+ "Value": "true"
311
+ }
312
+ ],
244
313
  "VersioningConfiguration": {
245
314
  "Status": "Enabled"
246
315
  }
@@ -299,12 +368,69 @@
299
368
  ]
300
369
  }
301
370
  ]
371
+ },
372
+ {
373
+ "Action": [
374
+ "s3:GetBucket*",
375
+ "s3:List*",
376
+ "s3:DeleteObject*"
377
+ ],
378
+ "Effect": "Allow",
379
+ "Principal": {
380
+ "AWS": {
381
+ "Fn::GetAtt": [
382
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
383
+ "Arn"
384
+ ]
385
+ }
386
+ },
387
+ "Resource": [
388
+ {
389
+ "Fn::GetAtt": [
390
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8",
391
+ "Arn"
392
+ ]
393
+ },
394
+ {
395
+ "Fn::Join": [
396
+ "",
397
+ [
398
+ {
399
+ "Fn::GetAtt": [
400
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8",
401
+ "Arn"
402
+ ]
403
+ },
404
+ "/*"
405
+ ]
406
+ ]
407
+ }
408
+ ]
302
409
  }
303
410
  ],
304
411
  "Version": "2012-10-17"
305
412
  }
306
413
  }
307
414
  },
415
+ "testcloudfronts3CloudfrontLoggingBucketAutoDeleteObjectsCustomResource19604D88": {
416
+ "Type": "Custom::S3AutoDeleteObjects",
417
+ "Properties": {
418
+ "ServiceToken": {
419
+ "Fn::GetAtt": [
420
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
421
+ "Arn"
422
+ ]
423
+ },
424
+ "BucketName": {
425
+ "Ref": "testcloudfronts3CloudfrontLoggingBucket985C0FE8"
426
+ }
427
+ },
428
+ "DependsOn": [
429
+ "testcloudfronts3CloudfrontLoggingBucketPolicyDF55851B"
430
+ ],
431
+ "UpdateReplacePolicy": "Delete",
432
+ "DeletionPolicy": "Delete"
433
+ },
308
434
  "testcloudfronts3CloudFrontDistributionOrigin1S3Origin4695F058": {
309
435
  "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
310
436
  "Properties": {
@@ -382,6 +508,82 @@
382
508
  ]
383
509
  }
384
510
  }
511
+ },
512
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": {
513
+ "Type": "AWS::IAM::Role",
514
+ "Properties": {
515
+ "AssumeRolePolicyDocument": {
516
+ "Version": "2012-10-17",
517
+ "Statement": [
518
+ {
519
+ "Action": "sts:AssumeRole",
520
+ "Effect": "Allow",
521
+ "Principal": {
522
+ "Service": "lambda.amazonaws.com"
523
+ }
524
+ }
525
+ ]
526
+ },
527
+ "ManagedPolicyArns": [
528
+ {
529
+ "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
530
+ }
531
+ ]
532
+ }
533
+ },
534
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": {
535
+ "Type": "AWS::Lambda::Function",
536
+ "Properties": {
537
+ "Code": {
538
+ "S3Bucket": {
539
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
540
+ },
541
+ "S3Key": "15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538.zip"
542
+ },
543
+ "Timeout": 900,
544
+ "MemorySize": 128,
545
+ "Handler": "__entrypoint__.handler",
546
+ "Role": {
547
+ "Fn::GetAtt": [
548
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
549
+ "Arn"
550
+ ]
551
+ },
552
+ "Runtime": "nodejs12.x",
553
+ "Description": {
554
+ "Fn::Join": [
555
+ "",
556
+ [
557
+ "Lambda function for auto-deleting objects in ",
558
+ {
559
+ "Ref": "testcloudfronts3S3BucketE0C5F76E"
560
+ },
561
+ " S3 bucket."
562
+ ]
563
+ ]
564
+ }
565
+ },
566
+ "DependsOn": [
567
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092"
568
+ ],
569
+ "Metadata": {
570
+ "cfn_nag": {
571
+ "rules_to_suppress": [
572
+ {
573
+ "id": "W58",
574
+ "reason": "CDK generated custom resource"
575
+ },
576
+ {
577
+ "id": "W89",
578
+ "reason": "CDK generated custom resource"
579
+ },
580
+ {
581
+ "id": "W92",
582
+ "reason": "CDK generated custom resource"
583
+ }
584
+ ]
585
+ }
586
+ }
385
587
  }
386
588
  },
387
589
  "Parameters": {
@@ -24,13 +24,16 @@ stack.templateOptions.description = 'Integration Test for aws-cloudfront-s3 cust
24
24
  new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3', {
25
25
  bucketProps: {
26
26
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
27
+ autoDeleteObjects: true
27
28
  },
28
29
  cloudFrontLoggingBucketProps: {
29
30
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
31
+ autoDeleteObjects: true,
30
32
  encryption: aws_s3_1.BucketEncryption.S3_MANAGED,
31
33
  versioned: true
32
34
  }
33
35
  });
36
+ core_1.suppressAutoDeleteHandlerWarnings(stack);
34
37
  // Synth
35
38
  app.synth();
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY3VzdG9tQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jdXN0b21DbG91ZEZyb250TG9nZ2luZ0J1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCwrQ0FBc0Q7QUFDdEQsZ0NBQXdDO0FBQ3hDLHlEQUF3RTtBQUV4RSxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLDBFQUEwRSxDQUFDO0FBRS9HLElBQUksb0JBQWMsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7SUFDOUMsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztLQUNyQztJQUNELDRCQUE0QixFQUFFO1FBQzVCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsVUFBVSxFQUFFLHlCQUFnQixDQUFDLFVBQVU7UUFDdkMsU0FBUyxFQUFFLElBQUk7S0FDaEI7Q0FDRixDQUFDLENBQUM7QUFFSCxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IDIwMjIgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBBcHAsIFN0YWNrLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBCdWNrZXRFbmNyeXB0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRvUzMgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgYXdzLWNsb3VkZnJvbnQtczMgY3VzdG9tIENsb3VkRnJvbnQgTG9nZ2luZyBCdWJrY2V0JztcblxubmV3IENsb3VkRnJvbnRUb1MzKHN0YWNrLCAndGVzdC1jbG91ZGZyb250LXMzJywge1xuICBidWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgfSxcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBlbmNyeXB0aW9uOiBCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgdmVyc2lvbmVkOiB0cnVlXG4gIH1cbn0pO1xuXG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY3VzdG9tQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jdXN0b21DbG91ZEZyb250TG9nZ2luZ0J1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCwrQ0FBc0Q7QUFDdEQsZ0NBQXdDO0FBQ3hDLHlEQUEyRztBQUUzRyxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLDBFQUEwRSxDQUFDO0FBRS9HLElBQUksb0JBQWMsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7SUFDOUMsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0lBQ0QsNEJBQTRCLEVBQUU7UUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLFVBQVUsRUFBRSx5QkFBZ0IsQ0FBQyxVQUFVO1FBQ3ZDLFNBQVMsRUFBRSxJQUFJO0tBQ2hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAyMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQnVja2V0RW5jcnlwdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb1MzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSwgc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSk7XG5zdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSAnSW50ZWdyYXRpb24gVGVzdCBmb3IgYXdzLWNsb3VkZnJvbnQtczMgY3VzdG9tIENsb3VkRnJvbnQgTG9nZ2luZyBCdWJrY2V0JztcblxubmV3IENsb3VkRnJvbnRUb1MzKHN0YWNrLCAndGVzdC1jbG91ZGZyb250LXMzJywge1xuICBidWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxuICBjbG91ZEZyb250TG9nZ2luZ0J1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICB2ZXJzaW9uZWQ6IHRydWVcbiAgfVxufSk7XG5cbnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=