File Coverage

blib/lib/Cfn/Resource/AWS/S3/Bucket.pm
Criterion Covered Total %
statement 332 332 100.0
branch n/a
condition n/a
subroutine 112 112 100.0
pod 0 2 0.0
total 444 446 99.5


line stmt bran cond sub pod time code
1             # AWS::S3::Bucket generated from spec 21.0.0
2 5     5   4576 use Moose::Util::TypeConstraints;
  5         22  
  5         68  
3              
4             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket',
5             from 'HashRef',
6             via { Cfn::Resource::Properties::AWS::S3::Bucket->new( %$_ ) };
7              
8             package Cfn::Resource::AWS::S3::Bucket {
9 5     5   10987 use Moose;
  5         16  
  5         39  
10             extends 'Cfn::Resource';
11             has Properties => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket', is => 'rw', coerce => 1);
12            
13             sub AttributeList {
14 1     1 0 6 [ 'Arn','DomainName','DualStackDomainName','RegionalDomainName','WebsiteURL' ]
15             }
16             sub supported_regions {
17 1     1 0 1252 [ 'af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-southeast-1','ap-southeast-2','ca-central-1','cn-north-1','cn-northwest-1','eu-central-1','eu-north-1','eu-south-1','eu-west-1','eu-west-2','eu-west-3','me-south-1','sa-east-1','us-east-1','us-east-2','us-gov-east-1','us-gov-west-1','us-west-1','us-west-2' ]
18             }
19             }
20              
21              
22             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter',
23             as 'Cfn::Value',
24             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
25             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
26              
27             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter',
28             from 'HashRef',
29             via {
30             if (my $f = Cfn::TypeLibrary::try_function($_)) {
31             return $f
32             } else {
33             die 'Only accepts functions';
34             }
35             },
36             from 'ArrayRef',
37             via {
38             Cfn::Value::Array->new(Value => [
39             map {
40             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::TagFilter')->coerce($_)
41             } @$_
42             ]);
43             };
44              
45             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::TagFilter',
46             as 'Cfn::Value';
47              
48             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::TagFilter',
49             from 'HashRef',
50             via {
51             if (my $f = Cfn::TypeLibrary::try_function($_)) {
52             return $f
53             } else {
54             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::TagFilter->new( %$_ );
55             }
56             };
57              
58             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::TagFilter {
59 5     5   38121 use Moose;
  5         15  
  5         27  
60 5     5   33409 use MooseX::StrictConstructor;
  5         26367  
  5         56  
61             extends 'Cfn::Value::TypedValue';
62            
63             has Key => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
64             has Value => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
65             }
66              
67             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTimeValue',
68             as 'Cfn::Value';
69              
70             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTimeValue',
71             from 'HashRef',
72             via {
73             if (my $f = Cfn::TypeLibrary::try_function($_)) {
74             return $f
75             } else {
76             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationTimeValue->new( %$_ );
77             }
78             };
79              
80             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationTimeValue {
81 5     5   24746 use Moose;
  5         28  
  5         31  
82 5     5   33441 use MooseX::StrictConstructor;
  5         13  
  5         30  
83             extends 'Cfn::Value::TypedValue';
84            
85             has Minutes => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
86             }
87             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::FilterRule',
88             as 'Cfn::Value',
89             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
90             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
91              
92             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::FilterRule',
93             from 'HashRef',
94             via {
95             if (my $f = Cfn::TypeLibrary::try_function($_)) {
96             return $f
97             } else {
98             die 'Only accepts functions';
99             }
100             },
101             from 'ArrayRef',
102             via {
103             Cfn::Value::Array->new(Value => [
104             map {
105             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::FilterRule')->coerce($_)
106             } @$_
107             ]);
108             };
109              
110             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::FilterRule',
111             as 'Cfn::Value';
112              
113             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::FilterRule',
114             from 'HashRef',
115             via {
116             if (my $f = Cfn::TypeLibrary::try_function($_)) {
117             return $f
118             } else {
119             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::FilterRule->new( %$_ );
120             }
121             };
122              
123             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::FilterRule {
124 5     5   17672 use Moose;
  5         23  
  5         26  
125 5     5   32604 use MooseX::StrictConstructor;
  5         19  
  5         40  
126             extends 'Cfn::Value::TypedValue';
127            
128             has Name => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
129             has Value => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
130             }
131              
132             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::SseKmsEncryptedObjects',
133             as 'Cfn::Value';
134              
135             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::SseKmsEncryptedObjects',
136             from 'HashRef',
137             via {
138             if (my $f = Cfn::TypeLibrary::try_function($_)) {
139             return $f
140             } else {
141             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::SseKmsEncryptedObjects->new( %$_ );
142             }
143             };
144              
145             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::SseKmsEncryptedObjects {
146 5     5   16301 use Moose;
  5         17  
  5         36  
147 5     5   32294 use MooseX::StrictConstructor;
  5         15  
  5         28  
148             extends 'Cfn::Value::TypedValue';
149            
150             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
151             }
152              
153             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::S3KeyFilter',
154             as 'Cfn::Value';
155              
156             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::S3KeyFilter',
157             from 'HashRef',
158             via {
159             if (my $f = Cfn::TypeLibrary::try_function($_)) {
160             return $f
161             } else {
162             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::S3KeyFilter->new( %$_ );
163             }
164             };
165              
166             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::S3KeyFilter {
167 5     5   16441 use Moose;
  5         20  
  5         31  
168 5     5   32521 use MooseX::StrictConstructor;
  5         18  
  5         26  
169             extends 'Cfn::Value::TypedValue';
170            
171             has Rules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::FilterRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
172             }
173              
174             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTime',
175             as 'Cfn::Value';
176              
177             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTime',
178             from 'HashRef',
179             via {
180             if (my $f = Cfn::TypeLibrary::try_function($_)) {
181             return $f
182             } else {
183             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationTime->new( %$_ );
184             }
185             };
186              
187             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationTime {
188 5     5   16378 use Moose;
  5         17  
  5         27  
189 5     5   32691 use MooseX::StrictConstructor;
  5         12  
  5         37  
190             extends 'Cfn::Value::TypedValue';
191            
192             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
193             has Time => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTimeValue', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
194             }
195              
196             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleAndOperator',
197             as 'Cfn::Value';
198              
199             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleAndOperator',
200             from 'HashRef',
201             via {
202             if (my $f = Cfn::TypeLibrary::try_function($_)) {
203             return $f
204             } else {
205             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRuleAndOperator->new( %$_ );
206             }
207             };
208              
209             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRuleAndOperator {
210 5     5   16700 use Moose;
  5         14  
  5         39  
211 5     5   32167 use MooseX::StrictConstructor;
  5         12  
  5         27  
212             extends 'Cfn::Value::TypedValue';
213            
214             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
215             has TagFilters => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
216             }
217              
218             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::Metrics',
219             as 'Cfn::Value';
220              
221             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::Metrics',
222             from 'HashRef',
223             via {
224             if (my $f = Cfn::TypeLibrary::try_function($_)) {
225             return $f
226             } else {
227             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::Metrics->new( %$_ );
228             }
229             };
230              
231             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::Metrics {
232 5     5   16663 use Moose;
  5         15  
  5         33  
233 5     5   32063 use MooseX::StrictConstructor;
  5         12  
  5         25  
234             extends 'Cfn::Value::TypedValue';
235            
236             has EventThreshold => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTimeValue', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
237             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
238             }
239              
240             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::EncryptionConfiguration',
241             as 'Cfn::Value';
242              
243             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::EncryptionConfiguration',
244             from 'HashRef',
245             via {
246             if (my $f = Cfn::TypeLibrary::try_function($_)) {
247             return $f
248             } else {
249             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::EncryptionConfiguration->new( %$_ );
250             }
251             };
252              
253             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::EncryptionConfiguration {
254 5     5   16696 use Moose;
  5         18  
  5         54  
255 5     5   31930 use MooseX::StrictConstructor;
  5         13  
  5         27  
256             extends 'Cfn::Value::TypedValue';
257            
258             has ReplicaKmsKeyID => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
259             }
260              
261             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::Destination',
262             as 'Cfn::Value';
263              
264             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::Destination',
265             from 'HashRef',
266             via {
267             if (my $f = Cfn::TypeLibrary::try_function($_)) {
268             return $f
269             } else {
270             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::Destination->new( %$_ );
271             }
272             };
273              
274             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::Destination {
275 5     5   16115 use Moose;
  5         18  
  5         63  
276 5     5   31828 use MooseX::StrictConstructor;
  5         12  
  5         29  
277             extends 'Cfn::Value::TypedValue';
278            
279             has BucketAccountId => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
280             has BucketArn => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
281             has Format => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
282             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
283             }
284              
285             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::AccessControlTranslation',
286             as 'Cfn::Value';
287              
288             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::AccessControlTranslation',
289             from 'HashRef',
290             via {
291             if (my $f = Cfn::TypeLibrary::try_function($_)) {
292             return $f
293             } else {
294             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::AccessControlTranslation->new( %$_ );
295             }
296             };
297              
298             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::AccessControlTranslation {
299 5     5   16691 use Moose;
  5         14  
  5         27  
300 5     5   32046 use MooseX::StrictConstructor;
  5         16  
  5         23  
301             extends 'Cfn::Value::TypedValue';
302            
303             has Owner => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
304             }
305             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Transition',
306             as 'Cfn::Value',
307             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
308             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
309              
310             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Transition',
311             from 'HashRef',
312             via {
313             if (my $f = Cfn::TypeLibrary::try_function($_)) {
314             return $f
315             } else {
316             die 'Only accepts functions';
317             }
318             },
319             from 'ArrayRef',
320             via {
321             Cfn::Value::Array->new(Value => [
322             map {
323             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::Transition')->coerce($_)
324             } @$_
325             ]);
326             };
327              
328             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::Transition',
329             as 'Cfn::Value';
330              
331             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::Transition',
332             from 'HashRef',
333             via {
334             if (my $f = Cfn::TypeLibrary::try_function($_)) {
335             return $f
336             } else {
337             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::Transition->new( %$_ );
338             }
339             };
340              
341             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::Transition {
342 5     5   17338 use Moose;
  5         15  
  5         26  
343 5     5   32912 use MooseX::StrictConstructor;
  5         13  
  5         26  
344             extends 'Cfn::Value::TypedValue';
345            
346             has StorageClass => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
347             has TransitionDate => (isa => 'Cfn::Value::Timestamp', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
348             has TransitionInDays => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
349             }
350              
351             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::SourceSelectionCriteria',
352             as 'Cfn::Value';
353              
354             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::SourceSelectionCriteria',
355             from 'HashRef',
356             via {
357             if (my $f = Cfn::TypeLibrary::try_function($_)) {
358             return $f
359             } else {
360             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::SourceSelectionCriteria->new( %$_ );
361             }
362             };
363              
364             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::SourceSelectionCriteria {
365 5     5   16264 use Moose;
  5         15  
  5         27  
366 5     5   31800 use MooseX::StrictConstructor;
  5         14  
  5         29  
367             extends 'Cfn::Value::TypedValue';
368            
369             has SseKmsEncryptedObjects => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::SseKmsEncryptedObjects', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
370             }
371              
372             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionByDefault',
373             as 'Cfn::Value';
374              
375             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionByDefault',
376             from 'HashRef',
377             via {
378             if (my $f = Cfn::TypeLibrary::try_function($_)) {
379             return $f
380             } else {
381             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ServerSideEncryptionByDefault->new( %$_ );
382             }
383             };
384              
385             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ServerSideEncryptionByDefault {
386 5     5   16289 use Moose;
  5         43  
  5         35  
387 5     5   32259 use MooseX::StrictConstructor;
  5         16  
  5         26  
388             extends 'Cfn::Value::TypedValue';
389            
390             has KMSMasterKeyID => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
391             has SSEAlgorithm => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
392             }
393              
394             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRuleCondition',
395             as 'Cfn::Value';
396              
397             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRuleCondition',
398             from 'HashRef',
399             via {
400             if (my $f = Cfn::TypeLibrary::try_function($_)) {
401             return $f
402             } else {
403             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::RoutingRuleCondition->new( %$_ );
404             }
405             };
406              
407             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::RoutingRuleCondition {
408 5     5   16536 use Moose;
  5         14  
  5         44  
409 5     5   31901 use MooseX::StrictConstructor;
  5         12  
  5         2183  
410             extends 'Cfn::Value::TypedValue';
411            
412             has HttpErrorCodeReturnedEquals => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
413             has KeyPrefixEquals => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
414             }
415              
416             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleFilter',
417             as 'Cfn::Value';
418              
419             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleFilter',
420             from 'HashRef',
421             via {
422             if (my $f = Cfn::TypeLibrary::try_function($_)) {
423             return $f
424             } else {
425             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRuleFilter->new( %$_ );
426             }
427             };
428              
429             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRuleFilter {
430 5     5   16422 use Moose;
  5         17  
  5         39  
431 5     5   31858 use MooseX::StrictConstructor;
  5         11  
  5         27  
432             extends 'Cfn::Value::TypedValue';
433            
434             has And => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleAndOperator', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
435             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
436             has TagFilter => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
437             }
438              
439             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationDestination',
440             as 'Cfn::Value';
441              
442             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationDestination',
443             from 'HashRef',
444             via {
445             if (my $f = Cfn::TypeLibrary::try_function($_)) {
446             return $f
447             } else {
448             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationDestination->new( %$_ );
449             }
450             };
451              
452             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationDestination {
453 5     5   16705 use Moose;
  5         18  
  5         34  
454 5     5   31543 use MooseX::StrictConstructor;
  5         14  
  5         31  
455             extends 'Cfn::Value::TypedValue';
456            
457             has AccessControlTranslation => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::AccessControlTranslation', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
458             has Account => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
459             has Bucket => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
460             has EncryptionConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::EncryptionConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
461             has Metrics => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::Metrics', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
462             has ReplicationTime => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationTime', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
463             has StorageClass => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
464             }
465              
466             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectRule',
467             as 'Cfn::Value';
468              
469             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectRule',
470             from 'HashRef',
471             via {
472             if (my $f = Cfn::TypeLibrary::try_function($_)) {
473             return $f
474             } else {
475             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::RedirectRule->new( %$_ );
476             }
477             };
478              
479             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::RedirectRule {
480 5     5   17430 use Moose;
  5         15  
  5         32  
481 5     5   31905 use MooseX::StrictConstructor;
  5         16  
  5         27  
482             extends 'Cfn::Value::TypedValue';
483            
484             has HostName => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
485             has HttpRedirectCode => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
486             has Protocol => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
487             has ReplaceKeyPrefixWith => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
488             has ReplaceKeyWith => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
489             }
490              
491             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationFilter',
492             as 'Cfn::Value';
493              
494             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationFilter',
495             from 'HashRef',
496             via {
497             if (my $f = Cfn::TypeLibrary::try_function($_)) {
498             return $f
499             } else {
500             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::NotificationFilter->new( %$_ );
501             }
502             };
503              
504             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::NotificationFilter {
505 5     5   16755 use Moose;
  5         13  
  5         36  
506 5     5   31774 use MooseX::StrictConstructor;
  5         14  
  5         23  
507             extends 'Cfn::Value::TypedValue';
508            
509             has S3Key => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::S3KeyFilter', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
510             }
511             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition',
512             as 'Cfn::Value',
513             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
514             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
515              
516             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition',
517             from 'HashRef',
518             via {
519             if (my $f = Cfn::TypeLibrary::try_function($_)) {
520             return $f
521             } else {
522             die 'Only accepts functions';
523             }
524             },
525             from 'ArrayRef',
526             via {
527             Cfn::Value::Array->new(Value => [
528             map {
529             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition')->coerce($_)
530             } @$_
531             ]);
532             };
533              
534             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition',
535             as 'Cfn::Value';
536              
537             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition',
538             from 'HashRef',
539             via {
540             if (my $f = Cfn::TypeLibrary::try_function($_)) {
541             return $f
542             } else {
543             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::NoncurrentVersionTransition->new( %$_ );
544             }
545             };
546              
547             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::NoncurrentVersionTransition {
548 5     5   17352 use Moose;
  5         16  
  5         39  
549 5     5   32645 use MooseX::StrictConstructor;
  5         25  
  5         33  
550             extends 'Cfn::Value::TypedValue';
551            
552             has StorageClass => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
553             has TransitionInDays => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
554             }
555              
556             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::DeleteMarkerReplication',
557             as 'Cfn::Value';
558              
559             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::DeleteMarkerReplication',
560             from 'HashRef',
561             via {
562             if (my $f = Cfn::TypeLibrary::try_function($_)) {
563             return $f
564             } else {
565             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::DeleteMarkerReplication->new( %$_ );
566             }
567             };
568              
569             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::DeleteMarkerReplication {
570 5     5   16902 use Moose;
  5         17  
  5         28  
571 5     5   32744 use MooseX::StrictConstructor;
  5         14  
  5         25  
572             extends 'Cfn::Value::TypedValue';
573            
574             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
575             }
576              
577             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::DefaultRetention',
578             as 'Cfn::Value';
579              
580             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::DefaultRetention',
581             from 'HashRef',
582             via {
583             if (my $f = Cfn::TypeLibrary::try_function($_)) {
584             return $f
585             } else {
586             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::DefaultRetention->new( %$_ );
587             }
588             };
589              
590             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::DefaultRetention {
591 5     5   16337 use Moose;
  5         12  
  5         30  
592 5     5   31702 use MooseX::StrictConstructor;
  5         18  
  5         38  
593             extends 'Cfn::Value::TypedValue';
594            
595             has Days => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
596             has Mode => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
597             has Years => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
598             }
599              
600             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::DataExport',
601             as 'Cfn::Value';
602              
603             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::DataExport',
604             from 'HashRef',
605             via {
606             if (my $f = Cfn::TypeLibrary::try_function($_)) {
607             return $f
608             } else {
609             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::DataExport->new( %$_ );
610             }
611             };
612              
613             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::DataExport {
614 5     5   16369 use Moose;
  5         30  
  5         25  
615 5     5   31798 use MooseX::StrictConstructor;
  5         13  
  5         27  
616             extends 'Cfn::Value::TypedValue';
617            
618             has Destination => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::Destination', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
619             has OutputSchemaVersion => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
620             }
621              
622             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::AbortIncompleteMultipartUpload',
623             as 'Cfn::Value';
624              
625             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::AbortIncompleteMultipartUpload',
626             from 'HashRef',
627             via {
628             if (my $f = Cfn::TypeLibrary::try_function($_)) {
629             return $f
630             } else {
631             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::AbortIncompleteMultipartUpload->new( %$_ );
632             }
633             };
634              
635             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::AbortIncompleteMultipartUpload {
636 5     5   16459 use Moose;
  5         12  
  5         25  
637 5     5   31917 use MooseX::StrictConstructor;
  5         15  
  5         28  
638             extends 'Cfn::Value::TypedValue';
639            
640             has DaysAfterInitiation => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
641             }
642             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration',
643             as 'Cfn::Value',
644             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
645             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
646              
647             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration',
648             from 'HashRef',
649             via {
650             if (my $f = Cfn::TypeLibrary::try_function($_)) {
651             return $f
652             } else {
653             die 'Only accepts functions';
654             }
655             },
656             from 'ArrayRef',
657             via {
658             Cfn::Value::Array->new(Value => [
659             map {
660             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration')->coerce($_)
661             } @$_
662             ]);
663             };
664              
665             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration',
666             as 'Cfn::Value';
667              
668             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration',
669             from 'HashRef',
670             via {
671             if (my $f = Cfn::TypeLibrary::try_function($_)) {
672             return $f
673             } else {
674             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::TopicConfiguration->new( %$_ );
675             }
676             };
677              
678             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::TopicConfiguration {
679 5     5   17369 use Moose;
  5         15  
  5         26  
680 5     5   31881 use MooseX::StrictConstructor;
  5         12  
  5         27  
681             extends 'Cfn::Value::TypedValue';
682            
683             has Event => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
684             has Filter => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
685             has Topic => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
686             }
687             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Tiering',
688             as 'Cfn::Value',
689             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
690             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
691              
692             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Tiering',
693             from 'HashRef',
694             via {
695             if (my $f = Cfn::TypeLibrary::try_function($_)) {
696             return $f
697             } else {
698             die 'Only accepts functions';
699             }
700             },
701             from 'ArrayRef',
702             via {
703             Cfn::Value::Array->new(Value => [
704             map {
705             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::Tiering')->coerce($_)
706             } @$_
707             ]);
708             };
709              
710             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::Tiering',
711             as 'Cfn::Value';
712              
713             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::Tiering',
714             from 'HashRef',
715             via {
716             if (my $f = Cfn::TypeLibrary::try_function($_)) {
717             return $f
718             } else {
719             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::Tiering->new( %$_ );
720             }
721             };
722              
723             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::Tiering {
724 5     5   17490 use Moose;
  5         15  
  5         36  
725 5     5   31973 use MooseX::StrictConstructor;
  5         15  
  5         24  
726             extends 'Cfn::Value::TypedValue';
727            
728             has AccessTier => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
729             has Days => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
730             }
731              
732             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::StorageClassAnalysis',
733             as 'Cfn::Value';
734              
735             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::StorageClassAnalysis',
736             from 'HashRef',
737             via {
738             if (my $f = Cfn::TypeLibrary::try_function($_)) {
739             return $f
740             } else {
741             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::StorageClassAnalysis->new( %$_ );
742             }
743             };
744              
745             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::StorageClassAnalysis {
746 5     5   16263 use Moose;
  5         14  
  5         25  
747 5     5   32266 use MooseX::StrictConstructor;
  5         22  
  5         25  
748             extends 'Cfn::Value::TypedValue';
749            
750             has DataExport => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::DataExport', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
751             }
752             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule',
753             as 'Cfn::Value',
754             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
755             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
756              
757             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule',
758             from 'HashRef',
759             via {
760             if (my $f = Cfn::TypeLibrary::try_function($_)) {
761             return $f
762             } else {
763             die 'Only accepts functions';
764             }
765             },
766             from 'ArrayRef',
767             via {
768             Cfn::Value::Array->new(Value => [
769             map {
770             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule')->coerce($_)
771             } @$_
772             ]);
773             };
774              
775             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule',
776             as 'Cfn::Value';
777              
778             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule',
779             from 'HashRef',
780             via {
781             if (my $f = Cfn::TypeLibrary::try_function($_)) {
782             return $f
783             } else {
784             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ServerSideEncryptionRule->new( %$_ );
785             }
786             };
787              
788             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ServerSideEncryptionRule {
789 5     5   17011 use Moose;
  5         15  
  5         26  
790 5     5   32089 use MooseX::StrictConstructor;
  5         21  
  5         26  
791             extends 'Cfn::Value::TypedValue';
792            
793             has ServerSideEncryptionByDefault => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionByDefault', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
794             }
795             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Rule',
796             as 'Cfn::Value',
797             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
798             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
799              
800             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Rule',
801             from 'HashRef',
802             via {
803             if (my $f = Cfn::TypeLibrary::try_function($_)) {
804             return $f
805             } else {
806             die 'Only accepts functions';
807             }
808             },
809             from 'ArrayRef',
810             via {
811             Cfn::Value::Array->new(Value => [
812             map {
813             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::Rule')->coerce($_)
814             } @$_
815             ]);
816             };
817              
818             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::Rule',
819             as 'Cfn::Value';
820              
821             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::Rule',
822             from 'HashRef',
823             via {
824             if (my $f = Cfn::TypeLibrary::try_function($_)) {
825             return $f
826             } else {
827             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::Rule->new( %$_ );
828             }
829             };
830              
831             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::Rule {
832 5     5   17495 use Moose;
  5         18  
  5         29  
833 5     5   32264 use MooseX::StrictConstructor;
  5         12  
  5         28  
834             extends 'Cfn::Value::TypedValue';
835            
836             has AbortIncompleteMultipartUpload => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::AbortIncompleteMultipartUpload', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
837             has ExpirationDate => (isa => 'Cfn::Value::Timestamp', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
838             has ExpirationInDays => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
839             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
840             has NoncurrentVersionExpirationInDays => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
841             has NoncurrentVersionTransition => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
842             has NoncurrentVersionTransitions => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::NoncurrentVersionTransition', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
843             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
844             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
845             has TagFilters => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
846             has Transition => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::Transition', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
847             has Transitions => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Transition', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
848             }
849             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::RoutingRule',
850             as 'Cfn::Value',
851             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
852             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
853              
854             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::RoutingRule',
855             from 'HashRef',
856             via {
857             if (my $f = Cfn::TypeLibrary::try_function($_)) {
858             return $f
859             } else {
860             die 'Only accepts functions';
861             }
862             },
863             from 'ArrayRef',
864             via {
865             Cfn::Value::Array->new(Value => [
866             map {
867             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRule')->coerce($_)
868             } @$_
869             ]);
870             };
871              
872             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRule',
873             as 'Cfn::Value';
874              
875             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRule',
876             from 'HashRef',
877             via {
878             if (my $f = Cfn::TypeLibrary::try_function($_)) {
879             return $f
880             } else {
881             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::RoutingRule->new( %$_ );
882             }
883             };
884              
885             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::RoutingRule {
886 5     5   18374 use Moose;
  5         29  
  5         29  
887 5     5   31816 use MooseX::StrictConstructor;
  5         11  
  5         27  
888             extends 'Cfn::Value::TypedValue';
889            
890             has RedirectRule => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
891             has RoutingRuleCondition => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::RoutingRuleCondition', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
892             }
893             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule',
894             as 'Cfn::Value',
895             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
896             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
897              
898             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule',
899             from 'HashRef',
900             via {
901             if (my $f = Cfn::TypeLibrary::try_function($_)) {
902             return $f
903             } else {
904             die 'Only accepts functions';
905             }
906             },
907             from 'ArrayRef',
908             via {
909             Cfn::Value::Array->new(Value => [
910             map {
911             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule')->coerce($_)
912             } @$_
913             ]);
914             };
915              
916             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule',
917             as 'Cfn::Value';
918              
919             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule',
920             from 'HashRef',
921             via {
922             if (my $f = Cfn::TypeLibrary::try_function($_)) {
923             return $f
924             } else {
925             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRule->new( %$_ );
926             }
927             };
928              
929             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationRule {
930 5     5   17492 use Moose;
  5         15  
  5         26  
931 5     5   32091 use MooseX::StrictConstructor;
  5         13  
  5         25  
932             extends 'Cfn::Value::TypedValue';
933            
934             has DeleteMarkerReplication => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::DeleteMarkerReplication', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
935             has Destination => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationDestination', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
936             has Filter => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationRuleFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
937             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
938             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
939             has Priority => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
940             has SourceSelectionCriteria => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::SourceSelectionCriteria', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
941             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
942             }
943              
944             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectAllRequestsTo',
945             as 'Cfn::Value';
946              
947             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectAllRequestsTo',
948             from 'HashRef',
949             via {
950             if (my $f = Cfn::TypeLibrary::try_function($_)) {
951             return $f
952             } else {
953             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::RedirectAllRequestsTo->new( %$_ );
954             }
955             };
956              
957             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::RedirectAllRequestsTo {
958 5     5   17215 use Moose;
  5         21  
  5         38  
959 5     5   32815 use MooseX::StrictConstructor;
  5         16  
  5         27  
960             extends 'Cfn::Value::TypedValue';
961            
962             has HostName => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
963             has Protocol => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
964             }
965             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration',
966             as 'Cfn::Value',
967             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
968             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
969              
970             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration',
971             from 'HashRef',
972             via {
973             if (my $f = Cfn::TypeLibrary::try_function($_)) {
974             return $f
975             } else {
976             die 'Only accepts functions';
977             }
978             },
979             from 'ArrayRef',
980             via {
981             Cfn::Value::Array->new(Value => [
982             map {
983             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration')->coerce($_)
984             } @$_
985             ]);
986             };
987              
988             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration',
989             as 'Cfn::Value';
990              
991             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration',
992             from 'HashRef',
993             via {
994             if (my $f = Cfn::TypeLibrary::try_function($_)) {
995             return $f
996             } else {
997             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::QueueConfiguration->new( %$_ );
998             }
999             };
1000              
1001             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::QueueConfiguration {
1002 5     5   17621 use Moose;
  5         15  
  5         29  
1003 5     5   33271 use MooseX::StrictConstructor;
  5         14  
  5         34  
1004             extends 'Cfn::Value::TypedValue';
1005            
1006             has Event => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1007             has Filter => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1008             has Queue => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1009             }
1010             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule',
1011             as 'Cfn::Value',
1012             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1013             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1014              
1015             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule',
1016             from 'HashRef',
1017             via {
1018             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1019             return $f
1020             } else {
1021             die 'Only accepts functions';
1022             }
1023             },
1024             from 'ArrayRef',
1025             via {
1026             Cfn::Value::Array->new(Value => [
1027             map {
1028             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule')->coerce($_)
1029             } @$_
1030             ]);
1031             };
1032              
1033             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule',
1034             as 'Cfn::Value';
1035              
1036             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule',
1037             from 'HashRef',
1038             via {
1039             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1040             return $f
1041             } else {
1042             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::OwnershipControlsRule->new( %$_ );
1043             }
1044             };
1045              
1046             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::OwnershipControlsRule {
1047 5     5   17864 use Moose;
  5         339  
  5         33  
1048 5     5   32474 use MooseX::StrictConstructor;
  5         14  
  5         42  
1049             extends 'Cfn::Value::TypedValue';
1050            
1051             has ObjectOwnership => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1052             }
1053              
1054             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockRule',
1055             as 'Cfn::Value';
1056              
1057             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockRule',
1058             from 'HashRef',
1059             via {
1060             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1061             return $f
1062             } else {
1063             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ObjectLockRule->new( %$_ );
1064             }
1065             };
1066              
1067             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ObjectLockRule {
1068 5     5   16473 use Moose;
  5         231  
  5         34  
1069 5     5   32311 use MooseX::StrictConstructor;
  5         20  
  5         29  
1070             extends 'Cfn::Value::TypedValue';
1071            
1072             has DefaultRetention => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::DefaultRetention', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1073             }
1074             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration',
1075             as 'Cfn::Value',
1076             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1077             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1078              
1079             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration',
1080             from 'HashRef',
1081             via {
1082             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1083             return $f
1084             } else {
1085             die 'Only accepts functions';
1086             }
1087             },
1088             from 'ArrayRef',
1089             via {
1090             Cfn::Value::Array->new(Value => [
1091             map {
1092             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration')->coerce($_)
1093             } @$_
1094             ]);
1095             };
1096              
1097             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration',
1098             as 'Cfn::Value';
1099              
1100             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration',
1101             from 'HashRef',
1102             via {
1103             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1104             return $f
1105             } else {
1106             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::LambdaConfiguration->new( %$_ );
1107             }
1108             };
1109              
1110             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::LambdaConfiguration {
1111 5     5   17458 use Moose;
  5         12  
  5         34  
1112 5     5   32194 use MooseX::StrictConstructor;
  5         16  
  5         35  
1113             extends 'Cfn::Value::TypedValue';
1114            
1115             has Event => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1116             has Filter => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1117             has Function => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1118             }
1119             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::CorsRule',
1120             as 'Cfn::Value',
1121             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1122             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1123              
1124             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::CorsRule',
1125             from 'HashRef',
1126             via {
1127             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1128             return $f
1129             } else {
1130             die 'Only accepts functions';
1131             }
1132             },
1133             from 'ArrayRef',
1134             via {
1135             Cfn::Value::Array->new(Value => [
1136             map {
1137             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::CorsRule')->coerce($_)
1138             } @$_
1139             ]);
1140             };
1141              
1142             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::CorsRule',
1143             as 'Cfn::Value';
1144              
1145             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::CorsRule',
1146             from 'HashRef',
1147             via {
1148             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1149             return $f
1150             } else {
1151             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::CorsRule->new( %$_ );
1152             }
1153             };
1154              
1155             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::CorsRule {
1156 5     5   17558 use Moose;
  5         14  
  5         28  
1157 5     5   32152 use MooseX::StrictConstructor;
  5         19  
  5         26  
1158             extends 'Cfn::Value::TypedValue';
1159            
1160             has AllowedHeaders => (isa => 'Cfn::Value::Array|Cfn::Value::Function|Cfn::DynamicValue', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1161             has AllowedMethods => (isa => 'Cfn::Value::Array|Cfn::Value::Function|Cfn::DynamicValue', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1162             has AllowedOrigins => (isa => 'Cfn::Value::Array|Cfn::Value::Function|Cfn::DynamicValue', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1163             has ExposedHeaders => (isa => 'Cfn::Value::Array|Cfn::Value::Function|Cfn::DynamicValue', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1164             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1165             has MaxAge => (isa => 'Cfn::Value::Integer', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1166             }
1167              
1168             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::WebsiteConfiguration',
1169             as 'Cfn::Value';
1170              
1171             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::WebsiteConfiguration',
1172             from 'HashRef',
1173             via {
1174             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1175             return $f
1176             } else {
1177             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::WebsiteConfiguration->new( %$_ );
1178             }
1179             };
1180              
1181             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::WebsiteConfiguration {
1182 5     5   16530 use Moose;
  5         22  
  5         32  
1183 5     5   31881 use MooseX::StrictConstructor;
  5         16  
  5         27  
1184             extends 'Cfn::Value::TypedValue';
1185            
1186             has ErrorDocument => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1187             has IndexDocument => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1188             has RedirectAllRequestsTo => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::RedirectAllRequestsTo', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1189             has RoutingRules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::RoutingRule', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1190             }
1191              
1192             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::VersioningConfiguration',
1193             as 'Cfn::Value';
1194              
1195             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::VersioningConfiguration',
1196             from 'HashRef',
1197             via {
1198             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1199             return $f
1200             } else {
1201             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::VersioningConfiguration->new( %$_ );
1202             }
1203             };
1204              
1205             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::VersioningConfiguration {
1206 5     5   17078 use Moose;
  5         13  
  5         26  
1207 5     5   31976 use MooseX::StrictConstructor;
  5         15  
  5         30  
1208             extends 'Cfn::Value::TypedValue';
1209            
1210             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1211             }
1212              
1213             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationConfiguration',
1214             as 'Cfn::Value';
1215              
1216             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationConfiguration',
1217             from 'HashRef',
1218             via {
1219             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1220             return $f
1221             } else {
1222             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationConfiguration->new( %$_ );
1223             }
1224             };
1225              
1226             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ReplicationConfiguration {
1227 5     5   16380 use Moose;
  5         13  
  5         40  
1228 5     5   31881 use MooseX::StrictConstructor;
  5         26  
  5         36  
1229             extends 'Cfn::Value::TypedValue';
1230            
1231             has Role => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1232             has Rules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ReplicationRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1233             }
1234              
1235             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::PublicAccessBlockConfiguration',
1236             as 'Cfn::Value';
1237              
1238             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::PublicAccessBlockConfiguration',
1239             from 'HashRef',
1240             via {
1241             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1242             return $f
1243             } else {
1244             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::PublicAccessBlockConfiguration->new( %$_ );
1245             }
1246             };
1247              
1248             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::PublicAccessBlockConfiguration {
1249 5     5   16417 use Moose;
  5         14  
  5         25  
1250 5     5   32031 use MooseX::StrictConstructor;
  5         19  
  5         30  
1251             extends 'Cfn::Value::TypedValue';
1252            
1253             has BlockPublicAcls => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1254             has BlockPublicPolicy => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1255             has IgnorePublicAcls => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1256             has RestrictPublicBuckets => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1257             }
1258              
1259             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControls',
1260             as 'Cfn::Value';
1261              
1262             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControls',
1263             from 'HashRef',
1264             via {
1265             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1266             return $f
1267             } else {
1268             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::OwnershipControls->new( %$_ );
1269             }
1270             };
1271              
1272             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::OwnershipControls {
1273 5     5   16763 use Moose;
  5         17  
  5         26  
1274 5     5   32033 use MooseX::StrictConstructor;
  5         14  
  5         27  
1275             extends 'Cfn::Value::TypedValue';
1276            
1277             has Rules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::OwnershipControlsRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1278             }
1279              
1280             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockConfiguration',
1281             as 'Cfn::Value';
1282              
1283             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockConfiguration',
1284             from 'HashRef',
1285             via {
1286             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1287             return $f
1288             } else {
1289             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::ObjectLockConfiguration->new( %$_ );
1290             }
1291             };
1292              
1293             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::ObjectLockConfiguration {
1294 5     5   16394 use Moose;
  5         16  
  5         30  
1295 5     5   32262 use MooseX::StrictConstructor;
  5         18  
  5         26  
1296             extends 'Cfn::Value::TypedValue';
1297            
1298             has ObjectLockEnabled => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1299             has Rule => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockRule', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1300             }
1301              
1302             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationConfiguration',
1303             as 'Cfn::Value';
1304              
1305             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationConfiguration',
1306             from 'HashRef',
1307             via {
1308             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1309             return $f
1310             } else {
1311             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::NotificationConfiguration->new( %$_ );
1312             }
1313             };
1314              
1315             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::NotificationConfiguration {
1316 5     5   17068 use Moose;
  5         16  
  5         26  
1317 5     5   32750 use MooseX::StrictConstructor;
  5         13  
  5         27  
1318             extends 'Cfn::Value::TypedValue';
1319            
1320             has LambdaConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::LambdaConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1321             has QueueConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::QueueConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1322             has TopicConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TopicConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1323             }
1324             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration',
1325             as 'Cfn::Value',
1326             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1327             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1328              
1329             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration',
1330             from 'HashRef',
1331             via {
1332             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1333             return $f
1334             } else {
1335             die 'Only accepts functions';
1336             }
1337             },
1338             from 'ArrayRef',
1339             via {
1340             Cfn::Value::Array->new(Value => [
1341             map {
1342             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration')->coerce($_)
1343             } @$_
1344             ]);
1345             };
1346              
1347             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration',
1348             as 'Cfn::Value';
1349              
1350             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration',
1351             from 'HashRef',
1352             via {
1353             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1354             return $f
1355             } else {
1356             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::MetricsConfiguration->new( %$_ );
1357             }
1358             };
1359              
1360             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::MetricsConfiguration {
1361 5     5   17529 use Moose;
  5         18  
  5         33  
1362 5     5   32543 use MooseX::StrictConstructor;
  5         14  
  5         27  
1363             extends 'Cfn::Value::TypedValue';
1364            
1365             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1366             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1367             has TagFilters => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1368             }
1369              
1370             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::LoggingConfiguration',
1371             as 'Cfn::Value';
1372              
1373             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::LoggingConfiguration',
1374             from 'HashRef',
1375             via {
1376             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1377             return $f
1378             } else {
1379             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::LoggingConfiguration->new( %$_ );
1380             }
1381             };
1382              
1383             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::LoggingConfiguration {
1384 5     5   17063 use Moose;
  5         19  
  5         28  
1385 5     5   32054 use MooseX::StrictConstructor;
  5         14  
  5         29  
1386             extends 'Cfn::Value::TypedValue';
1387            
1388             has DestinationBucketName => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1389             has LogFilePrefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1390             }
1391              
1392             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::LifecycleConfiguration',
1393             as 'Cfn::Value';
1394              
1395             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::LifecycleConfiguration',
1396             from 'HashRef',
1397             via {
1398             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1399             return $f
1400             } else {
1401             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::LifecycleConfiguration->new( %$_ );
1402             }
1403             };
1404              
1405             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::LifecycleConfiguration {
1406 5     5   16287 use Moose;
  5         13  
  5         25  
1407 5     5   32156 use MooseX::StrictConstructor;
  5         15  
  5         28  
1408             extends 'Cfn::Value::TypedValue';
1409            
1410             has Rules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Rule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1411             }
1412             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration',
1413             as 'Cfn::Value',
1414             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1415             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1416              
1417             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration',
1418             from 'HashRef',
1419             via {
1420             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1421             return $f
1422             } else {
1423             die 'Only accepts functions';
1424             }
1425             },
1426             from 'ArrayRef',
1427             via {
1428             Cfn::Value::Array->new(Value => [
1429             map {
1430             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration')->coerce($_)
1431             } @$_
1432             ]);
1433             };
1434              
1435             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration',
1436             as 'Cfn::Value';
1437              
1438             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration',
1439             from 'HashRef',
1440             via {
1441             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1442             return $f
1443             } else {
1444             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::InventoryConfiguration->new( %$_ );
1445             }
1446             };
1447              
1448             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::InventoryConfiguration {
1449 5     5   17782 use Moose;
  5         14  
  5         35  
1450 5     5   32204 use MooseX::StrictConstructor;
  5         20  
  5         28  
1451             extends 'Cfn::Value::TypedValue';
1452            
1453             has Destination => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::Destination', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1454             has Enabled => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1455             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1456             has IncludedObjectVersions => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1457             has OptionalFields => (isa => 'Cfn::Value::Array|Cfn::Value::Function|Cfn::DynamicValue', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1458             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1459             has ScheduleFrequency => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1460             }
1461             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration',
1462             as 'Cfn::Value',
1463             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1464             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1465              
1466             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration',
1467             from 'HashRef',
1468             via {
1469             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1470             return $f
1471             } else {
1472             die 'Only accepts functions';
1473             }
1474             },
1475             from 'ArrayRef',
1476             via {
1477             Cfn::Value::Array->new(Value => [
1478             map {
1479             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration')->coerce($_)
1480             } @$_
1481             ]);
1482             };
1483              
1484             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration',
1485             as 'Cfn::Value';
1486              
1487             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration',
1488             from 'HashRef',
1489             via {
1490             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1491             return $f
1492             } else {
1493             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::IntelligentTieringConfiguration->new( %$_ );
1494             }
1495             };
1496              
1497             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::IntelligentTieringConfiguration {
1498 5     5   17789 use Moose;
  5         14  
  5         26  
1499 5     5   32063 use MooseX::StrictConstructor;
  5         15  
  5         26  
1500             extends 'Cfn::Value::TypedValue';
1501            
1502             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1503             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1504             has Status => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1505             has TagFilters => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1506             has Tierings => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::Tiering', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1507             }
1508              
1509             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::CorsConfiguration',
1510             as 'Cfn::Value';
1511              
1512             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::CorsConfiguration',
1513             from 'HashRef',
1514             via {
1515             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1516             return $f
1517             } else {
1518             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::CorsConfiguration->new( %$_ );
1519             }
1520             };
1521              
1522             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::CorsConfiguration {
1523 5     5   16578 use Moose;
  5         20  
  5         37  
1524 5     5   31877 use MooseX::StrictConstructor;
  5         15  
  5         26  
1525             extends 'Cfn::Value::TypedValue';
1526            
1527             has CorsRules => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::CorsRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1528             }
1529              
1530             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::BucketEncryption',
1531             as 'Cfn::Value';
1532              
1533             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::BucketEncryption',
1534             from 'HashRef',
1535             via {
1536             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1537             return $f
1538             } else {
1539             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::BucketEncryption->new( %$_ );
1540             }
1541             };
1542              
1543             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::BucketEncryption {
1544 5     5   16258 use Moose;
  5         18  
  5         27  
1545 5     5   31626 use MooseX::StrictConstructor;
  5         15  
  5         26  
1546             extends 'Cfn::Value::TypedValue';
1547            
1548             has ServerSideEncryptionConfiguration => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::ServerSideEncryptionRule', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1549             }
1550             subtype 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration',
1551             as 'Cfn::Value',
1552             where { $_->isa('Cfn::Value::Array') or $_->isa('Cfn::Value::Function') },
1553             message { "$_ is not a Cfn::Value or a Cfn::Value::Function" };
1554              
1555             coerce 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration',
1556             from 'HashRef',
1557             via {
1558             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1559             return $f
1560             } else {
1561             die 'Only accepts functions';
1562             }
1563             },
1564             from 'ArrayRef',
1565             via {
1566             Cfn::Value::Array->new(Value => [
1567             map {
1568             Moose::Util::TypeConstraints::find_type_constraint('Cfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration')->coerce($_)
1569             } @$_
1570             ]);
1571             };
1572              
1573             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration',
1574             as 'Cfn::Value';
1575              
1576             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration',
1577             from 'HashRef',
1578             via {
1579             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1580             return $f
1581             } else {
1582             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::AnalyticsConfiguration->new( %$_ );
1583             }
1584             };
1585              
1586             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::AnalyticsConfiguration {
1587 5     5   17203 use Moose;
  5         22  
  5         29  
1588 5     5   31733 use MooseX::StrictConstructor;
  5         12  
  5         28  
1589             extends 'Cfn::Value::TypedValue';
1590            
1591             has Id => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1592             has Prefix => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1593             has StorageClassAnalysis => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::StorageClassAnalysis', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1594             has TagFilters => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::TagFilter', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1595             }
1596              
1597             subtype 'Cfn::Resource::Properties::AWS::S3::Bucket::AccelerateConfiguration',
1598             as 'Cfn::Value';
1599              
1600             coerce 'Cfn::Resource::Properties::AWS::S3::Bucket::AccelerateConfiguration',
1601             from 'HashRef',
1602             via {
1603             if (my $f = Cfn::TypeLibrary::try_function($_)) {
1604             return $f
1605             } else {
1606             return Cfn::Resource::Properties::Object::AWS::S3::Bucket::AccelerateConfiguration->new( %$_ );
1607             }
1608             };
1609              
1610             package Cfn::Resource::Properties::Object::AWS::S3::Bucket::AccelerateConfiguration {
1611 5     5   16773 use Moose;
  5         16  
  5         27  
1612 5     5   31877 use MooseX::StrictConstructor;
  5         16  
  5         27  
1613             extends 'Cfn::Value::TypedValue';
1614            
1615             has AccelerationStatus => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, required => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1616             }
1617              
1618             package Cfn::Resource::Properties::AWS::S3::Bucket {
1619 5     5   16327 use Moose;
  5         16  
  5         30  
1620 5     5   31785 use MooseX::StrictConstructor;
  5         16  
  5         23  
1621             extends 'Cfn::Resource::Properties';
1622            
1623             has AccelerateConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::AccelerateConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1624             has AccessControl => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1625             has AnalyticsConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::AnalyticsConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1626             has BucketEncryption => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::BucketEncryption', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1627             has BucketName => (isa => 'Cfn::Value::String', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Immutable');
1628             has CorsConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::CorsConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1629             has IntelligentTieringConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::IntelligentTieringConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1630             has InventoryConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::InventoryConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1631             has LifecycleConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::LifecycleConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1632             has LoggingConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::LoggingConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1633             has MetricsConfigurations => (isa => 'ArrayOfCfn::Resource::Properties::AWS::S3::Bucket::MetricsConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1634             has NotificationConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::NotificationConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1635             has ObjectLockConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ObjectLockConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1636             has ObjectLockEnabled => (isa => 'Cfn::Value::Boolean', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Immutable');
1637             has OwnershipControls => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::OwnershipControls', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1638             has PublicAccessBlockConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::PublicAccessBlockConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1639             has ReplicationConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::ReplicationConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1640             has Tags => (isa => 'ArrayOfCfn::Resource::Properties::TagType', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1641             has VersioningConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::VersioningConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1642             has WebsiteConfiguration => (isa => 'Cfn::Resource::Properties::AWS::S3::Bucket::WebsiteConfiguration', is => 'rw', coerce => 1, traits => [ 'CfnMutability' ], mutability => 'Mutable');
1643             }
1644              
1645             1;
1646             ### main pod documentation begin ###
1647              
1648             =encoding UTF-8
1649              
1650             =head1 NAME
1651              
1652             Cfn::Resource::AWS::S3::Bucket - Cfn resource for AWS::S3::Bucket
1653              
1654             =head1 DESCRIPTION
1655              
1656             This module implements a Perl module that represents the CloudFormation object AWS::S3::Bucket.
1657              
1658             See L<Cfn> for more information on how to use it.
1659              
1660             =head1 AUTHOR
1661              
1662             Jose Luis Martinez
1663             CAPSiDE
1664             jlmartinez@capside.com
1665              
1666             =head1 COPYRIGHT and LICENSE
1667              
1668             Copyright (c) 2013 by CAPSiDE
1669             This code is distributed under the Apache 2 License. The full text of the
1670             license can be found in the LICENSE file included with this module.
1671              
1672             =cut