@aws-solutions-constructs/aws-cloudfront-s3 2.47.0 → 2.49.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.
Files changed (36) hide show
  1. package/.eslintignore +2 -2
  2. package/.jsii +152 -35
  3. package/README.md +7 -6
  4. package/lib/index.d.ts +1 -0
  5. package/lib/index.js +70 -8
  6. package/package.json +7 -5
  7. package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.expected.json +960 -0
  8. package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js +44 -0
  9. package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.expected.json +594 -0
  10. package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js +39 -0
  11. package/test/integ.cfts3-bucket-with-http-origin.d.ts +13 -0
  12. package/test/integ.cfts3-bucket-with-http-origin.expected.json +559 -0
  13. package/test/integ.cfts3-bucket-with-http-origin.js +44 -0
  14. package/test/integ.cfts3-cmk-encryption.expected.json +527 -0
  15. package/test/integ.cfts3-cmk-provided-as-bucket-prop.d.ts +13 -0
  16. package/test/integ.cfts3-cmk-provided-as-bucket-prop.expected.json +960 -0
  17. package/test/integ.cfts3-cmk-provided-as-bucket-prop.js +41 -0
  18. package/test/integ.cfts3-custom-headers.expected.json +307 -25
  19. package/test/integ.cfts3-custom-headers.js +6 -2
  20. package/test/integ.cfts3-custom-originPath.expected.json +307 -25
  21. package/test/integ.cfts3-custom-originPath.js +6 -2
  22. package/test/integ.cfts3-customCloudFrontLoggingBucket.expected.json +54 -21
  23. package/test/integ.cfts3-customLoggingBuckets.d.ts +13 -0
  24. package/test/{integ.cfts3-customLoggingBucket.expected.json → integ.cfts3-customLoggingBuckets.expected.json} +285 -29
  25. package/test/integ.cfts3-customLoggingBuckets.js +58 -0
  26. package/test/integ.cfts3-existing-bucket.expected.json +493 -78
  27. package/test/integ.cfts3-existing-bucket.js +2 -2
  28. package/test/integ.cfts3-no-arguments.expected.json +430 -25
  29. package/test/integ.cfts3-no-arguments.js +5 -2
  30. package/test/integ.cfts3-no-security-headers.expected.json +307 -25
  31. package/test/integ.cfts3-no-security-headers.js +5 -1
  32. package/test/test.cloudfront-s3.test.js +160 -28
  33. package/test/integ.cfts3-customCloudFrontLoggingBucket.js +0 -39
  34. package/test/integ.cfts3-customLoggingBucket.js +0 -42
  35. /package/test/{integ.cfts3-customCloudFrontLoggingBucket.d.ts → integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.d.ts} +0 -0
  36. /package/test/{integ.cfts3-customLoggingBucket.d.ts → integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.d.ts} +0 -0
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // Imports
16
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
17
+ const lib_1 = require("../lib");
18
+ const core_1 = require("@aws-solutions-constructs/core");
19
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
20
+ // Setup
21
+ const app = new aws_cdk_lib_1.App();
22
+ const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename));
23
+ stack.templateOptions.description = 'Integration Test for aws-cloudfront-s3';
24
+ // Definitions
25
+ const encryptionKey = new aws_cdk_lib_1.aws_kms.Key(stack, 'cmkKey', {
26
+ enableKeyRotation: true,
27
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
28
+ });
29
+ const props = {
30
+ bucketProps: {
31
+ enforceSSL: true,
32
+ encryption: aws_s3_1.BucketEncryption.KMS,
33
+ encryptionKey
34
+ },
35
+ insertHttpSecurityHeaders: false
36
+ };
37
+ new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3-cmk-encryption-key', props);
38
+ core_1.suppressAutoDeleteHandlerWarnings(stack);
39
+ // Synth
40
+ app.synth();
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0czMtY21rLXByb3ZpZGVkLWFzLWJ1Y2tldC1wcm9wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcuY2Z0czMtY21rLXByb3ZpZGVkLWFzLWJ1Y2tldC1wcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQWlFO0FBQ2pFLGdDQUE2RDtBQUM3RCx5REFBMkc7QUFDM0csK0NBQXNEO0FBRXRELFFBQVE7QUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLGlCQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLENBQUMsR0FBRyxFQUFFLDZCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsd0NBQXdDLENBQUM7QUFFN0UsY0FBYztBQUNkLE1BQU0sYUFBYSxHQUFHLElBQUkscUJBQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUNyRCxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87Q0FDckMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxLQUFLLEdBQXdCO0lBQ2pDLFdBQVcsRUFBRTtRQUNYLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFVBQVUsRUFBRSx5QkFBZ0IsQ0FBQyxHQUFHO1FBQ2hDLGFBQWE7S0FDZDtJQUNELHlCQUF5QixFQUFFLEtBQUs7Q0FDakMsQ0FBQztBQUVGLElBQUksb0JBQWMsQ0FBQyxLQUFLLEVBQUUsdUNBQXVDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFMUUsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3ksIGF3c19rbXMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb1MzLCBDbG91ZEZyb250VG9TM1Byb3BzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSwgc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCB7IEJ1Y2tldEVuY3J5cHRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5cbi8vIFNldHVwXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIGdlbmVyYXRlSW50ZWdTdGFja05hbWUoX19maWxlbmFtZSkpO1xuc3RhY2sudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gJ0ludGVncmF0aW9uIFRlc3QgZm9yIGF3cy1jbG91ZGZyb250LXMzJztcblxuLy8gRGVmaW5pdGlvbnNcbmNvbnN0IGVuY3J5cHRpb25LZXkgPSBuZXcgYXdzX2ttcy5LZXkoc3RhY2ssICdjbWtLZXknLCB7XG4gIGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlLFxuICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1lcbn0pO1xuXG5jb25zdCBwcm9wczogQ2xvdWRGcm9udFRvUzNQcm9wcyA9IHtcbiAgYnVja2V0UHJvcHM6IHtcbiAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIGVuY3J5cHRpb246IEJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgIGVuY3J5cHRpb25LZXlcbiAgfSxcbiAgaW5zZXJ0SHR0cFNlY3VyaXR5SGVhZGVyczogZmFsc2Vcbn07XG5cbm5ldyBDbG91ZEZyb250VG9TMyhzdGFjaywgJ3Rlc3QtY2xvdWRmcm9udC1zMy1jbWstZW5jcnlwdGlvbi1rZXknLCBwcm9wcyk7XG5cbnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG5cbi8vIFN5bnRoXG5hcHAuc3ludGgoKTtcbiJdfQ==
@@ -51,6 +51,12 @@
51
51
  "IgnorePublicAcls": true,
52
52
  "RestrictPublicBuckets": true
53
53
  },
54
+ "Tags": [
55
+ {
56
+ "Key": "aws-cdk:auto-delete-objects",
57
+ "Value": "true"
58
+ }
59
+ ],
54
60
  "VersioningConfiguration": {
55
61
  "Status": "Enabled"
56
62
  }
@@ -110,6 +116,45 @@
110
116
  }
111
117
  ]
112
118
  },
119
+ {
120
+ "Action": [
121
+ "s3:PutBucketPolicy",
122
+ "s3:GetBucket*",
123
+ "s3:List*",
124
+ "s3:DeleteObject*"
125
+ ],
126
+ "Effect": "Allow",
127
+ "Principal": {
128
+ "AWS": {
129
+ "Fn::GetAtt": [
130
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
131
+ "Arn"
132
+ ]
133
+ }
134
+ },
135
+ "Resource": [
136
+ {
137
+ "Fn::GetAtt": [
138
+ "testcloudfronts3S3LoggingBucket90D239DD",
139
+ "Arn"
140
+ ]
141
+ },
142
+ {
143
+ "Fn::Join": [
144
+ "",
145
+ [
146
+ {
147
+ "Fn::GetAtt": [
148
+ "testcloudfronts3S3LoggingBucket90D239DD",
149
+ "Arn"
150
+ ]
151
+ },
152
+ "/*"
153
+ ]
154
+ ]
155
+ }
156
+ ]
157
+ },
113
158
  {
114
159
  "Action": "s3:PutObject",
115
160
  "Condition": {
@@ -151,6 +196,25 @@
151
196
  }
152
197
  }
153
198
  },
199
+ "testcloudfronts3S3LoggingBucketAutoDeleteObjectsCustomResource6EE37727": {
200
+ "Type": "Custom::S3AutoDeleteObjects",
201
+ "Properties": {
202
+ "ServiceToken": {
203
+ "Fn::GetAtt": [
204
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
205
+ "Arn"
206
+ ]
207
+ },
208
+ "BucketName": {
209
+ "Ref": "testcloudfronts3S3LoggingBucket90D239DD"
210
+ }
211
+ },
212
+ "DependsOn": [
213
+ "testcloudfronts3S3LoggingBucketPolicy529D4CFF"
214
+ ],
215
+ "UpdateReplacePolicy": "Delete",
216
+ "DeletionPolicy": "Delete"
217
+ },
154
218
  "testcloudfronts3S3BucketE0C5F76E": {
155
219
  "Type": "AWS::S3::Bucket",
156
220
  "Properties": {
@@ -283,14 +347,28 @@
283
347
  },
284
348
  {
285
349
  "Action": "s3:GetObject",
350
+ "Condition": {
351
+ "StringEquals": {
352
+ "AWS:SourceArn": {
353
+ "Fn::Join": [
354
+ "",
355
+ [
356
+ "arn:aws:cloudfront::",
357
+ {
358
+ "Ref": "AWS::AccountId"
359
+ },
360
+ ":distribution/",
361
+ {
362
+ "Ref": "testcloudfronts3CloudFrontDistribution0565DEE8"
363
+ }
364
+ ]
365
+ ]
366
+ }
367
+ }
368
+ },
286
369
  "Effect": "Allow",
287
370
  "Principal": {
288
- "CanonicalUser": {
289
- "Fn::GetAtt": [
290
- "testcloudfronts3CloudFrontDistributionOrigin1S3Origin4695F058",
291
- "S3CanonicalUserId"
292
- ]
293
- }
371
+ "Service": "cloudfront.amazonaws.com"
294
372
  },
295
373
  "Resource": {
296
374
  "Fn::Join": [
@@ -353,10 +431,9 @@
353
431
  "Name": "SetHttpSecurityHeadersc8da5865185980f6eb00e7dd351786a8b49cd2929e"
354
432
  }
355
433
  },
356
- "testcloudfronts3CloudfrontLoggingBucket985C0FE8": {
434
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58": {
357
435
  "Type": "AWS::S3::Bucket",
358
436
  "Properties": {
359
- "AccessControl": "LogDeliveryWrite",
360
437
  "BucketEncryption": {
361
438
  "ServerSideEncryptionConfiguration": [
362
439
  {
@@ -396,12 +473,197 @@
396
473
  "rules_to_suppress": [
397
474
  {
398
475
  "id": "W35",
399
- "reason": "This S3 bucket is used as the access logging bucket for CloudFront Distribution"
476
+ "reason": "This S3 bucket is used as the access logging bucket for another bucket"
400
477
  }
401
478
  ]
402
479
  }
403
480
  }
404
481
  },
482
+ "testcloudfronts3CloudfrontLoggingBucketAccessLogPolicy526F2E14": {
483
+ "Type": "AWS::S3::BucketPolicy",
484
+ "Properties": {
485
+ "Bucket": {
486
+ "Ref": "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58"
487
+ },
488
+ "PolicyDocument": {
489
+ "Statement": [
490
+ {
491
+ "Action": "s3:*",
492
+ "Condition": {
493
+ "Bool": {
494
+ "aws:SecureTransport": "false"
495
+ }
496
+ },
497
+ "Effect": "Deny",
498
+ "Principal": {
499
+ "AWS": "*"
500
+ },
501
+ "Resource": [
502
+ {
503
+ "Fn::GetAtt": [
504
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58",
505
+ "Arn"
506
+ ]
507
+ },
508
+ {
509
+ "Fn::Join": [
510
+ "",
511
+ [
512
+ {
513
+ "Fn::GetAtt": [
514
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58",
515
+ "Arn"
516
+ ]
517
+ },
518
+ "/*"
519
+ ]
520
+ ]
521
+ }
522
+ ]
523
+ },
524
+ {
525
+ "Action": [
526
+ "s3:PutBucketPolicy",
527
+ "s3:GetBucket*",
528
+ "s3:List*",
529
+ "s3:DeleteObject*"
530
+ ],
531
+ "Effect": "Allow",
532
+ "Principal": {
533
+ "AWS": {
534
+ "Fn::GetAtt": [
535
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
536
+ "Arn"
537
+ ]
538
+ }
539
+ },
540
+ "Resource": [
541
+ {
542
+ "Fn::GetAtt": [
543
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58",
544
+ "Arn"
545
+ ]
546
+ },
547
+ {
548
+ "Fn::Join": [
549
+ "",
550
+ [
551
+ {
552
+ "Fn::GetAtt": [
553
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58",
554
+ "Arn"
555
+ ]
556
+ },
557
+ "/*"
558
+ ]
559
+ ]
560
+ }
561
+ ]
562
+ },
563
+ {
564
+ "Action": "s3:PutObject",
565
+ "Condition": {
566
+ "ArnLike": {
567
+ "aws:SourceArn": {
568
+ "Fn::GetAtt": [
569
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8",
570
+ "Arn"
571
+ ]
572
+ }
573
+ },
574
+ "StringEquals": {
575
+ "aws:SourceAccount": {
576
+ "Ref": "AWS::AccountId"
577
+ }
578
+ }
579
+ },
580
+ "Effect": "Allow",
581
+ "Principal": {
582
+ "Service": "logging.s3.amazonaws.com"
583
+ },
584
+ "Resource": {
585
+ "Fn::Join": [
586
+ "",
587
+ [
588
+ {
589
+ "Fn::GetAtt": [
590
+ "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58",
591
+ "Arn"
592
+ ]
593
+ },
594
+ "/*"
595
+ ]
596
+ ]
597
+ }
598
+ }
599
+ ],
600
+ "Version": "2012-10-17"
601
+ }
602
+ }
603
+ },
604
+ "testcloudfronts3CloudfrontLoggingBucketAccessLogAutoDeleteObjectsCustomResourceE16E063D": {
605
+ "Type": "Custom::S3AutoDeleteObjects",
606
+ "Properties": {
607
+ "ServiceToken": {
608
+ "Fn::GetAtt": [
609
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
610
+ "Arn"
611
+ ]
612
+ },
613
+ "BucketName": {
614
+ "Ref": "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58"
615
+ }
616
+ },
617
+ "DependsOn": [
618
+ "testcloudfronts3CloudfrontLoggingBucketAccessLogPolicy526F2E14"
619
+ ],
620
+ "UpdateReplacePolicy": "Delete",
621
+ "DeletionPolicy": "Delete"
622
+ },
623
+ "testcloudfronts3CloudfrontLoggingBucket985C0FE8": {
624
+ "Type": "AWS::S3::Bucket",
625
+ "Properties": {
626
+ "AccessControl": "LogDeliveryWrite",
627
+ "BucketEncryption": {
628
+ "ServerSideEncryptionConfiguration": [
629
+ {
630
+ "ServerSideEncryptionByDefault": {
631
+ "SSEAlgorithm": "AES256"
632
+ }
633
+ }
634
+ ]
635
+ },
636
+ "LoggingConfiguration": {
637
+ "DestinationBucketName": {
638
+ "Ref": "testcloudfronts3CloudfrontLoggingBucketAccessLog2E738D58"
639
+ }
640
+ },
641
+ "OwnershipControls": {
642
+ "Rules": [
643
+ {
644
+ "ObjectOwnership": "ObjectWriter"
645
+ }
646
+ ]
647
+ },
648
+ "PublicAccessBlockConfiguration": {
649
+ "BlockPublicAcls": true,
650
+ "BlockPublicPolicy": true,
651
+ "IgnorePublicAcls": true,
652
+ "RestrictPublicBuckets": true
653
+ },
654
+ "Tags": [
655
+ {
656
+ "Key": "aws-cdk:auto-delete-objects",
657
+ "Value": "true"
658
+ }
659
+ ],
660
+ "VersioningConfiguration": {
661
+ "Status": "Enabled"
662
+ }
663
+ },
664
+ "UpdateReplacePolicy": "Delete",
665
+ "DeletionPolicy": "Delete"
666
+ },
405
667
  "testcloudfronts3CloudfrontLoggingBucketPolicyDF55851B": {
406
668
  "Type": "AWS::S3::BucketPolicy",
407
669
  "Properties": {
@@ -507,11 +769,35 @@
507
769
  "UpdateReplacePolicy": "Delete",
508
770
  "DeletionPolicy": "Delete"
509
771
  },
510
- "testcloudfronts3CloudFrontDistributionOrigin1S3Origin4695F058": {
511
- "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
772
+ "testcloudfronts3CloudFrontOac7A951AA6": {
773
+ "Type": "AWS::CloudFront::OriginAccessControl",
512
774
  "Properties": {
513
- "CloudFrontOriginAccessIdentityConfig": {
514
- "Comment": "Identity for cfts3customheaderstestcloudfronts3CloudFrontDistributionOrigin126E0E496"
775
+ "OriginAccessControlConfig": {
776
+ "Description": "Origin access control provisioned by aws-cloudfront-s3",
777
+ "Name": {
778
+ "Fn::Join": [
779
+ "",
780
+ [
781
+ "aws-cloudfront-s3-testnt-s3-",
782
+ {
783
+ "Fn::Select": [
784
+ 2,
785
+ {
786
+ "Fn::Split": [
787
+ "/",
788
+ {
789
+ "Ref": "AWS::StackId"
790
+ }
791
+ ]
792
+ }
793
+ ]
794
+ }
795
+ ]
796
+ ]
797
+ },
798
+ "OriginAccessControlOriginType": "s3",
799
+ "SigningBehavior": "always",
800
+ "SigningProtocol": "sigv4"
515
801
  }
516
802
  }
517
803
  },
@@ -557,18 +843,14 @@
557
843
  ]
558
844
  },
559
845
  "Id": "cfts3customheaderstestcloudfronts3CloudFrontDistributionOrigin126E0E496",
846
+ "OriginAccessControlId": {
847
+ "Fn::GetAtt": [
848
+ "testcloudfronts3CloudFrontOac7A951AA6",
849
+ "Id"
850
+ ]
851
+ },
560
852
  "S3OriginConfig": {
561
- "OriginAccessIdentity": {
562
- "Fn::Join": [
563
- "",
564
- [
565
- "origin-access-identity/cloudfront/",
566
- {
567
- "Ref": "testcloudfronts3CloudFrontDistributionOrigin1S3Origin4695F058"
568
- }
569
- ]
570
- ]
571
- }
853
+ "OriginAccessIdentity": ""
572
854
  }
573
855
  }
574
856
  ]
@@ -632,7 +914,7 @@
632
914
  [
633
915
  "Lambda function for auto-deleting objects in ",
634
916
  {
635
- "Ref": "testcloudfronts3S3BucketE0C5F76E"
917
+ "Ref": "testcloudfronts3S3LoggingBucket90D239DD"
636
918
  },
637
919
  " S3 bucket."
638
920
  ]
@@ -52,9 +52,13 @@ new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3', {
52
52
  bucketProps: {
53
53
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
54
54
  autoDeleteObjects: true
55
- }
55
+ },
56
+ loggingBucketProps: {
57
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
58
+ autoDeleteObjects: true
59
+ },
56
60
  });
57
61
  core_1.suppressAutoDeleteHandlerWarnings(stack);
58
62
  // Synth
59
63
  app.synth();
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0czMtY3VzdG9tLWhlYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jZnRzMy1jdXN0b20taGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCxnQ0FBd0M7QUFDeEMseURBQTJHO0FBQzNHLHlEQUF5RDtBQUV6RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLDZCQUE2QjtBQUM3QixNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7O0lBU3ZDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxJQUFJLG9CQUFjLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFO0lBQzlDLDRCQUE0QixFQUFFO1FBQzVCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLGVBQWUsRUFBRTtZQUNmLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWU7b0JBQ3ZELFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb1MzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSwgc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5cbi8vIFNldHVwXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIGdlbmVyYXRlSW50ZWdTdGFja05hbWUoX19maWxlbmFtZSkpO1xuc3RhY2sudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gJ0ludGVncmF0aW9uIFRlc3QgZm9yIGF3cy1jbG91ZGZyb250LXMzJztcblxuLy8gY3VzdG9tIGNsb3VkZnJvbnQgZnVuY3Rpb25cbmNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IG5ldyBjbG91ZGZyb250LkZ1bmN0aW9uKHN0YWNrLCBcIk15RnVuY3Rpb25cIiwge1xuICBjb2RlOiBjbG91ZGZyb250LkZ1bmN0aW9uQ29kZS5mcm9tSW5saW5lKFwiZnVuY3Rpb24gaGFuZGxlcihldmVudCkgeyB2YXIgcmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTsgXFxcbiAgICB2YXIgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7IFxcXG4gICAgaGVhZGVyc1snc3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSddID0geyB2YWx1ZTogJ21heC1hZ2U9NjMwNzIwMDA7IGluY2x1ZGVTdWJkb21haW5zOyBwcmVsb2FkJ307IFxcXG4gICAgaGVhZGVyc1snY29udGVudC1zZWN1cml0eS1wb2xpY3knXSA9IHsgdmFsdWU6IFxcXCJkZWZhdWx0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdzZWxmJzsgaW1nLXNyYyAnc2VsZic7IHNjcmlwdC1zcmMgJ3NlbGYnOyBzdHlsZS1zcmMgJ3NlbGYnIGh0dHBzOjsgb2JqZWN0LXNyYyAnbm9uZSc7IGZyYW1lLWFuY2VzdG9ycyAnbm9uZSc7IGZvbnQtc3JjICdzZWxmJyBodHRwczo7IGZvcm0tYWN0aW9uICdzZWxmJzsgbWFuaWZlc3Qtc3JjICdzZWxmJzsgY29ubmVjdC1zcmMgJ3NlbGYnXFxcIiB9OyBcXFxuICAgIGhlYWRlcnNbJ3gtY29udGVudC10eXBlLW9wdGlvbnMnXSA9IHsgdmFsdWU6ICdub3NuaWZmJ307IFxcXG4gICAgaGVhZGVyc1sneC1mcmFtZS1vcHRpb25zJ10gPSB7dmFsdWU6ICdERU5ZJ307IFxcXG4gICAgaGVhZGVyc1sneC14c3MtcHJvdGVjdGlvbiddID0ge3ZhbHVlOiAnMTsgbW9kZT1ibG9jayd9OyBcXFxuICAgIGhlYWRlcnNbJ3JlZmVycmVyLXBvbGljeSddID0geyB2YWx1ZTogJ3NhbWUtb3JpZ2luJyB9OyBcXFxuICAgIHJldHVybiByZXNwb25zZTsgXFxcbiAgfVwiKVxufSk7XG5cbm5ldyBDbG91ZEZyb250VG9TMyhzdGFjaywgJ3Rlc3QtY2xvdWRmcm9udC1zMycsIHtcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxuICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IHtcbiAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25FdmVudFR5cGUuVklFV0VSX1JFU1BPTlNFLFxuICAgICAgICAgIGZ1bmN0aW9uOiBjbG91ZGZyb250RnVuY3Rpb25cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICB9XG4gIH0sXG4gIGJ1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gIH1cbn0pO1xuXG5zdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2spO1xuLy8gU3ludGhcbmFwcC5zeW50aCgpO1xuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0czMtY3VzdG9tLWhlYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5jZnRzMy1jdXN0b20taGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF3RDtBQUN4RCxnQ0FBd0M7QUFDeEMseURBQTJHO0FBQzNHLHlEQUF5RDtBQUV6RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLDZCQUE2QjtBQUM3QixNQUFNLGtCQUFrQixHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7O0lBU3ZDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxJQUFJLG9CQUFjLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFO0lBQzlDLDRCQUE0QixFQUFFO1FBQzVCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87UUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLGVBQWUsRUFBRTtZQUNmLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxTQUFTLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWU7b0JBQ3ZELFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsd0NBQWlDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IEFwcCwgU3RhY2ssIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENsb3VkRnJvbnRUb1MzIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSwgc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzIH0gZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5cbi8vIFNldHVwXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIGdlbmVyYXRlSW50ZWdTdGFja05hbWUoX19maWxlbmFtZSkpO1xuc3RhY2sudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gJ0ludGVncmF0aW9uIFRlc3QgZm9yIGF3cy1jbG91ZGZyb250LXMzJztcblxuLy8gY3VzdG9tIGNsb3VkZnJvbnQgZnVuY3Rpb25cbmNvbnN0IGNsb3VkZnJvbnRGdW5jdGlvbiA9IG5ldyBjbG91ZGZyb250LkZ1bmN0aW9uKHN0YWNrLCBcIk15RnVuY3Rpb25cIiwge1xuICBjb2RlOiBjbG91ZGZyb250LkZ1bmN0aW9uQ29kZS5mcm9tSW5saW5lKFwiZnVuY3Rpb24gaGFuZGxlcihldmVudCkgeyB2YXIgcmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTsgXFxcbiAgICB2YXIgaGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7IFxcXG4gICAgaGVhZGVyc1snc3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSddID0geyB2YWx1ZTogJ21heC1hZ2U9NjMwNzIwMDA7IGluY2x1ZGVTdWJkb21haW5zOyBwcmVsb2FkJ307IFxcXG4gICAgaGVhZGVyc1snY29udGVudC1zZWN1cml0eS1wb2xpY3knXSA9IHsgdmFsdWU6IFxcXCJkZWZhdWx0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdzZWxmJzsgaW1nLXNyYyAnc2VsZic7IHNjcmlwdC1zcmMgJ3NlbGYnOyBzdHlsZS1zcmMgJ3NlbGYnIGh0dHBzOjsgb2JqZWN0LXNyYyAnbm9uZSc7IGZyYW1lLWFuY2VzdG9ycyAnbm9uZSc7IGZvbnQtc3JjICdzZWxmJyBodHRwczo7IGZvcm0tYWN0aW9uICdzZWxmJzsgbWFuaWZlc3Qtc3JjICdzZWxmJzsgY29ubmVjdC1zcmMgJ3NlbGYnXFxcIiB9OyBcXFxuICAgIGhlYWRlcnNbJ3gtY29udGVudC10eXBlLW9wdGlvbnMnXSA9IHsgdmFsdWU6ICdub3NuaWZmJ307IFxcXG4gICAgaGVhZGVyc1sneC1mcmFtZS1vcHRpb25zJ10gPSB7dmFsdWU6ICdERU5ZJ307IFxcXG4gICAgaGVhZGVyc1sneC14c3MtcHJvdGVjdGlvbiddID0ge3ZhbHVlOiAnMTsgbW9kZT1ibG9jayd9OyBcXFxuICAgIGhlYWRlcnNbJ3JlZmVycmVyLXBvbGljeSddID0geyB2YWx1ZTogJ3NhbWUtb3JpZ2luJyB9OyBcXFxuICAgIHJldHVybiByZXNwb25zZTsgXFxcbiAgfVwiKVxufSk7XG5cbm5ldyBDbG91ZEZyb250VG9TMyhzdGFjaywgJ3Rlc3QtY2xvdWRmcm9udC1zMycsIHtcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxuICBjbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHM6IHtcbiAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25FdmVudFR5cGUuVklFV0VSX1JFU1BPTlNFLFxuICAgICAgICAgIGZ1bmN0aW9uOiBjbG91ZGZyb250RnVuY3Rpb25cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICB9XG4gIH0sXG4gIGJ1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gIH0sXG4gIGxvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxufSk7XG5cbnN1cHByZXNzQXV0b0RlbGV0ZUhhbmRsZXJXYXJuaW5ncyhzdGFjayk7XG4vLyBTeW50aFxuYXBwLnN5bnRoKCk7XG4iXX0=