aws-sdk-s3 1.104.0 → 1.107.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -386,6 +386,8 @@ module Aws::S3
386
386
  ObjectLockToken = Shapes::StringShape.new(name: 'ObjectLockToken')
387
387
  ObjectNotInActiveTierError = Shapes::StructureShape.new(name: 'ObjectNotInActiveTierError')
388
388
  ObjectOwnership = Shapes::StringShape.new(name: 'ObjectOwnership')
389
+ ObjectSizeGreaterThanBytes = Shapes::IntegerShape.new(name: 'ObjectSizeGreaterThanBytes')
390
+ ObjectSizeLessThanBytes = Shapes::IntegerShape.new(name: 'ObjectSizeLessThanBytes')
389
391
  ObjectStorageClass = Shapes::StringShape.new(name: 'ObjectStorageClass')
390
392
  ObjectVersion = Shapes::StructureShape.new(name: 'ObjectVersion')
391
393
  ObjectVersionId = Shapes::StringShape.new(name: 'ObjectVersionId')
@@ -561,6 +563,7 @@ module Aws::S3
561
563
  UploadPartRequest = Shapes::StructureShape.new(name: 'UploadPartRequest')
562
564
  UserMetadata = Shapes::ListShape.new(name: 'UserMetadata')
563
565
  Value = Shapes::StringShape.new(name: 'Value')
566
+ VersionCount = Shapes::IntegerShape.new(name: 'VersionCount')
564
567
  VersionIdMarker = Shapes::StringShape.new(name: 'VersionIdMarker')
565
568
  VersioningConfiguration = Shapes::StructureShape.new(name: 'VersioningConfiguration')
566
569
  WebsiteConfiguration = Shapes::StructureShape.new(name: 'WebsiteConfiguration')
@@ -1491,10 +1494,14 @@ module Aws::S3
1491
1494
 
1492
1495
  LifecycleRuleAndOperator.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location_name: "Prefix"))
1493
1496
  LifecycleRuleAndOperator.add_member(:tags, Shapes::ShapeRef.new(shape: TagSet, location_name: "Tag", metadata: {"flattened"=>true}))
1497
+ LifecycleRuleAndOperator.add_member(:object_size_greater_than, Shapes::ShapeRef.new(shape: ObjectSizeGreaterThanBytes, location_name: "ObjectSizeGreaterThan"))
1498
+ LifecycleRuleAndOperator.add_member(:object_size_less_than, Shapes::ShapeRef.new(shape: ObjectSizeLessThanBytes, location_name: "ObjectSizeLessThan"))
1494
1499
  LifecycleRuleAndOperator.struct_class = Types::LifecycleRuleAndOperator
1495
1500
 
1496
1501
  LifecycleRuleFilter.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location_name: "Prefix"))
1497
1502
  LifecycleRuleFilter.add_member(:tag, Shapes::ShapeRef.new(shape: Tag, location_name: "Tag"))
1503
+ LifecycleRuleFilter.add_member(:object_size_greater_than, Shapes::ShapeRef.new(shape: ObjectSizeGreaterThanBytes, location_name: "ObjectSizeGreaterThan"))
1504
+ LifecycleRuleFilter.add_member(:object_size_less_than, Shapes::ShapeRef.new(shape: ObjectSizeLessThanBytes, location_name: "ObjectSizeLessThan"))
1498
1505
  LifecycleRuleFilter.add_member(:and, Shapes::ShapeRef.new(shape: LifecycleRuleAndOperator, location_name: "And"))
1499
1506
  LifecycleRuleFilter.struct_class = Types::LifecycleRuleFilter
1500
1507
 
@@ -1719,10 +1726,12 @@ module Aws::S3
1719
1726
  NoSuchUpload.struct_class = Types::NoSuchUpload
1720
1727
 
1721
1728
  NoncurrentVersionExpiration.add_member(:noncurrent_days, Shapes::ShapeRef.new(shape: Days, location_name: "NoncurrentDays"))
1729
+ NoncurrentVersionExpiration.add_member(:newer_noncurrent_versions, Shapes::ShapeRef.new(shape: VersionCount, location_name: "NewerNoncurrentVersions"))
1722
1730
  NoncurrentVersionExpiration.struct_class = Types::NoncurrentVersionExpiration
1723
1731
 
1724
1732
  NoncurrentVersionTransition.add_member(:noncurrent_days, Shapes::ShapeRef.new(shape: Days, location_name: "NoncurrentDays"))
1725
1733
  NoncurrentVersionTransition.add_member(:storage_class, Shapes::ShapeRef.new(shape: TransitionStorageClass, location_name: "StorageClass"))
1734
+ NoncurrentVersionTransition.add_member(:newer_noncurrent_versions, Shapes::ShapeRef.new(shape: VersionCount, location_name: "NewerNoncurrentVersions"))
1726
1735
  NoncurrentVersionTransition.struct_class = Types::NoncurrentVersionTransition
1727
1736
 
1728
1737
  NoncurrentVersionTransitionList.member = Shapes::ShapeRef.new(shape: NoncurrentVersionTransition)
@@ -161,7 +161,7 @@ module Aws
161
161
  #
162
162
  # @param [Symbol] method
163
163
  # The S3 operation to generate a presigned URL for. Valid values
164
- # are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`,
164
+ # are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`,
165
165
  # `:list_multipart_uploads`, `:complete_multipart_upload`,
166
166
  # `:abort_multipart_upload`, `:list_parts`, and `:upload_part`.
167
167
  #
@@ -215,6 +215,79 @@ module Aws
215
215
  )
216
216
  end
217
217
 
218
+ # Allows you to create presigned URL requests for S3 operations. This
219
+ # method returns a tuple containing the URL and the signed X-amz-* headers
220
+ # to be used with the presigned url.
221
+ #
222
+ # @example Pre-signed GET URL, valid for one hour
223
+ #
224
+ # obj.presigned_request(:get, expires_in: 3600)
225
+ # #=> ["https://bucket-name.s3.amazonaws.com/object-key?...", {}]
226
+ #
227
+ # @example Pre-signed PUT with a canned ACL
228
+ #
229
+ # # the object uploaded using this URL will be publicly accessible
230
+ # obj.presigned_request(:put, acl: 'public-read')
231
+ # #=> ["https://bucket-name.s3.amazonaws.com/object-key?...",
232
+ # {"x-amz-acl"=>"public-read"}]
233
+ #
234
+ # @param [Symbol] method
235
+ # The S3 operation to generate a presigned request for. Valid values
236
+ # are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`,
237
+ # `:list_multipart_uploads`, `:complete_multipart_upload`,
238
+ # `:abort_multipart_upload`, `:list_parts`, and `:upload_part`.
239
+ #
240
+ # @param [Hash] params
241
+ # Additional request parameters to use when generating the pre-signed
242
+ # request. See the related documentation in {Client} for accepted
243
+ # params.
244
+ #
245
+ # | Method | Client Method |
246
+ # |------------------------------|------------------------------------|
247
+ # | `:get` | {Client#get_object} |
248
+ # | `:put` | {Client#put_object} |
249
+ # | `:head` | {Client#head_object} |
250
+ # | `:delete` | {Client#delete_object} |
251
+ # | `:create_multipart_upload` | {Client#create_multipart_upload} |
252
+ # | `:list_multipart_uploads` | {Client#list_multipart_uploads} |
253
+ # | `:complete_multipart_upload` | {Client#complete_multipart_upload} |
254
+ # | `:abort_multipart_upload` | {Client#abort_multipart_upload} |
255
+ # | `:list_parts` | {Client#list_parts} |
256
+ # | `:upload_part` | {Client#upload_part} |
257
+ #
258
+ # @option params [Boolean] :virtual_host (false) When `true` the
259
+ # presigned URL will use the bucket name as a virtual host.
260
+ #
261
+ # bucket = Aws::S3::Bucket.new('my.bucket.com')
262
+ # bucket.object('key').presigned_request(virtual_host: true)
263
+ # #=> ["http://my.bucket.com/key?...", {}]
264
+ #
265
+ # @option params [Integer] :expires_in (900) Number of seconds before
266
+ # the pre-signed URL expires. This may not exceed one week (604800
267
+ # seconds). Note that the pre-signed URL is also only valid as long as
268
+ # credentials used to sign it are. For example, when using IAM roles,
269
+ # temporary tokens generated for signing also have a default expiration
270
+ # which will affect the effective expiration of the pre-signed URL.
271
+ #
272
+ # @raise [ArgumentError] Raised if `:expires_in` exceeds one week
273
+ # (604800 seconds).
274
+ #
275
+ # @return [String, Hash] A tuple with a presigned URL and headers that
276
+ # should be included with the request.
277
+ #
278
+ def presigned_request(method, params = {})
279
+ presigner = Presigner.new(client: client)
280
+
281
+ if %w(delete head get put).include?(method.to_s)
282
+ method = "#{method}_object".to_sym
283
+ end
284
+
285
+ presigner.presigned_request(
286
+ method.downcase,
287
+ params.merge(bucket: bucket_name, key: key)
288
+ )
289
+ end
290
+
218
291
  # Returns the public (un-signed) URL for this object.
219
292
  #
220
293
  # s3.bucket('bucket-name').object('obj-key').public_url
@@ -41,11 +41,17 @@ each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3/
41
41
  accelerate = context.params.delete(:use_accelerate_endpoint)
42
42
  end
43
43
  accelerate = context.config.use_accelerate_endpoint if accelerate.nil?
44
- # Raise if :endpoint and dualstack are both provided
44
+ # Raise if :endpoint and accelerate are both provided
45
45
  if accelerate && !context.config.regional_endpoint
46
46
  raise ArgumentError,
47
47
  'Cannot use both :use_accelerate_endpoint and :endpoint'
48
48
  end
49
+ # Raise if :use_fips_endpoint and accelerate are both provided
50
+ if accelerate && context.config.use_fips_endpoint
51
+ raise ArgumentError,
52
+ 'Cannot use both :use_accelerate_endpoint and '\
53
+ ':use_fips_endpoint'
54
+ end
49
55
  context[:use_accelerate_endpoint] = accelerate
50
56
  @handler.call(context)
51
57
  end
@@ -77,17 +77,10 @@ result in cross region requests.
77
77
  if arn
78
78
  validate_config!(context, arn)
79
79
 
80
- fips = false
81
- if resolved_region.include?('fips')
82
- fips = true
83
- resolved_region = resolved_region.gsub('fips-', '')
84
- .gsub('-fips', '')
85
- end
86
-
87
80
  context.metadata[:s3_arn] = {
88
81
  arn: arn,
89
82
  resolved_region: resolved_region,
90
- fips: fips,
83
+ fips: context.config.use_fips_endpoint,
91
84
  dualstack: extract_dualstack_config!(context)
92
85
  }
93
86
  end
@@ -126,7 +119,8 @@ result in cross region requests.
126
119
 
127
120
  if !arn.support_dualstack? && context[:use_dualstack_endpoint]
128
121
  raise ArgumentError,
129
- 'Cannot provide an Outpost Access Point or Multi-region Access Point ARN'\
122
+ 'Cannot provide an Outpost Access Point, Object Lambda, '\
123
+ 'or Multi-region Access Point ARN'\
130
124
  ' when `:use_dualstack_endpoint` is set to true.'
131
125
  end
132
126
 
@@ -135,6 +129,12 @@ result in cross region requests.
135
129
  'Cannot provide a Multi-region Access Point ARN with '\
136
130
  '`:s3_disable_multiregion_access_points` set to true'
137
131
  end
132
+
133
+ if context.config.use_fips_endpoint && !arn.support_fips?
134
+ raise ArgumentError,
135
+ 'FIPS client regions are not supported for this type '\
136
+ 'of ARN.'
137
+ end
138
138
  end
139
139
  end
140
140
 
@@ -146,7 +146,7 @@ result in cross region requests.
146
146
  s3_arn = resolve_arn_type!(arn)
147
147
  s3_arn.validate_arn!
148
148
  validate_region_config!(s3_arn, region, use_arn_region)
149
- region = s3_arn.region if use_arn_region && !region.include?('fips')
149
+ region = s3_arn.region if use_arn_region
150
150
  [region, s3_arn]
151
151
  else
152
152
  [region]
@@ -231,19 +231,6 @@ result in cross region requests.
231
231
  raise Aws::Errors::InvalidARNPartitionError
232
232
  end
233
233
  else
234
- if region.include?('fips')
235
- # If ARN type doesn't support FIPS but the client region is FIPS
236
- unless arn.support_fips?
237
- raise ArgumentError,
238
- 'FIPS client regions are not supported for this type '\
239
- 'of ARN.'
240
- end
241
-
242
- fips = true
243
- # Normalize the region so we can compare partition and regions
244
- region = region.gsub('fips-', '').gsub('-fips', '')
245
- end
246
-
247
234
  # use_arn_region does not apply to MRAP (global) arns
248
235
  unless arn.region.empty?
249
236
  # Raise if the ARN and client regions are in different partitions
@@ -254,7 +241,7 @@ result in cross region requests.
254
241
 
255
242
  # Raise if regions mismatch
256
243
  # Either when it's a fips client or not using the ARN region
257
- if (!use_arn_region || fips) && region != arn.region
244
+ if !use_arn_region && region != arn.region
258
245
  raise Aws::Errors::InvalidARNRegionError
259
246
  end
260
247
  end
@@ -24,7 +24,7 @@ request URI and never moved to the host as a sub-domain.
24
24
  DOCS
25
25
 
26
26
  def add_handlers(handlers, config)
27
- handlers.add(Handler) unless config.force_path_style
27
+ handlers.add(Handler, priority: 48) unless config.force_path_style
28
28
  end
29
29
 
30
30
  # @api private
@@ -5,18 +5,9 @@ module Aws
5
5
  module Plugins
6
6
  # @api private
7
7
  class Dualstack < Seahorse::Client::Plugin
8
-
9
- option(:use_dualstack_endpoint,
10
- default: false,
11
- doc_type: 'Boolean',
12
- docstring: <<-DOCS)
13
- When set to `true`, IPv6-compatible bucket endpoints will be used
14
- for all operations.
15
- DOCS
16
-
17
8
  def add_handlers(handlers, config)
18
9
  handlers.add(OptionHandler, step: :initialize)
19
- handlers.add(DualstackHandler, step: :build, priority: 11)
10
+ handlers.add(DualstackHandler, step: :build, priority: 49)
20
11
  end
21
12
 
22
13
  # @api private
@@ -40,38 +31,41 @@ for all operations.
40
31
  # @api private
41
32
  class DualstackHandler < Seahorse::Client::Handler
42
33
  def call(context)
43
- if context.config.regional_endpoint && use_dualstack_endpoint?(context)
34
+ # only rewrite the endpoint if it's not a custom endpoint
35
+ # accelerate/ARN already handle dualstack cases, so ignore these
36
+ # check to see if dualstack is on but configured off via operation
37
+ if context.config.regional_endpoint &&
38
+ use_dualstack_endpoint?(context)
44
39
  apply_dualstack_endpoint(context)
45
40
  end
46
41
  @handler.call(context)
47
42
  end
48
43
 
49
44
  private
50
- def apply_dualstack_endpoint(context)
51
- bucket_name = context.params[:bucket]
52
- region = context.config.region
53
- dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
54
45
 
55
- if use_bucket_dns?(bucket_name, context)
56
- host = "#{bucket_name}.s3.dualstack.#{region}.#{dns_suffix}"
57
- else
58
- host = "s3.dualstack.#{region}.#{dns_suffix}"
59
- end
46
+ def apply_dualstack_endpoint(context)
47
+ new_endpoint = Aws::Partitions::EndpointProvider.resolve(
48
+ context.config.region,
49
+ 's3',
50
+ 'regional',
51
+ {
52
+ dualstack: context[:use_dualstack_endpoint],
53
+ fips: context.config.use_fips_endpoint
54
+ }
55
+ )
60
56
  endpoint = URI.parse(context.http_request.endpoint.to_s)
61
- endpoint.scheme = context.http_request.endpoint.scheme
62
- endpoint.port = context.http_request.endpoint.port
63
- endpoint.host = host
64
- context.http_request.endpoint = endpoint.to_s
65
- end
66
-
67
- def use_bucket_dns?(bucket_name, context)
68
- ssl = context.http_request.endpoint.scheme == "https"
69
- bucket_name && BucketDns.dns_compatible?(bucket_name, ssl) &&
70
- !context.config.force_path_style
57
+ endpoint.host = URI.parse(new_endpoint).host
58
+ context.http_request.endpoint = endpoint
71
59
  end
72
60
 
73
61
  def use_dualstack_endpoint?(context)
74
- context[:use_dualstack_endpoint] && !context[:use_accelerate_endpoint]
62
+ # case when dualstack is turned off via operation
63
+ (context[:use_dualstack_endpoint] ||
64
+ context.config.use_dualstack_endpoint) &&
65
+ # accelerate plugin already applies dualstack
66
+ !context[:use_accelerate_endpoint] &&
67
+ # arns handle dualstack
68
+ !context.metadata[:s3_arn]
75
69
  end
76
70
  end
77
71
 
@@ -22,7 +22,9 @@ module Aws
22
22
  # S3 removes core's signature_v4 plugin that checks for this
23
23
  raise Aws::Errors::MissingRegionError if cfg.region.nil?
24
24
 
25
- Aws::Partitions::EndpointProvider.signing_region(cfg.region, 's3')
25
+ Aws::Partitions::EndpointProvider.signing_region(
26
+ cfg.region, 's3'
27
+ )
26
28
  end
27
29
 
28
30
  def add_handlers(handlers, cfg)
@@ -162,7 +164,12 @@ module Aws
162
164
 
163
165
  def custom_endpoint?(resp)
164
166
  resolved_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(
165
- resp.context.config.region
167
+ resp.context.config.region,
168
+ 's3',
169
+ {
170
+ dualstack: resp.context[:use_dualstack_endpoint],
171
+ fips: resp.context.config.use_fips_endpoint
172
+ }
166
173
  )
167
174
  !resp.context.http_request.endpoint.hostname.include?(resolved_suffix)
168
175
  end
@@ -234,12 +241,20 @@ module Aws
234
241
  # Otherwise it will retry with the ARN as the bucket name.
235
242
  def new_hostname(context, region)
236
243
  uri = URI.parse(
237
- Aws::Partitions::EndpointProvider.resolve(region, 's3')
244
+ Aws::Partitions::EndpointProvider.resolve(
245
+ region, 's3', 'regional',
246
+ {
247
+ dualstack: context[:use_dualstack_endpoint],
248
+ fips: context.config.use_fips_endpoint
249
+ }
250
+ )
238
251
  )
239
252
 
240
253
  if (arn = context.metadata[:s3_arn])
241
254
  # Retry with the response region and not the ARN resolved one
242
- ARN.resolve_url!(uri, arn[:arn], region).host
255
+ ARN.resolve_url!(
256
+ uri, arn[:arn], region, arn[:fips], arn[:dualstack]
257
+ ).host
243
258
  else
244
259
  "#{context.params[:bucket]}.#{uri.host}"
245
260
  end
@@ -517,6 +517,8 @@ module Aws::S3
517
517
  # key: "ObjectKey", # required
518
518
  # value: "Value", # required
519
519
  # },
520
+ # object_size_greater_than: 1,
521
+ # object_size_less_than: 1,
520
522
  # and: {
521
523
  # prefix: "Prefix",
522
524
  # tags: [
@@ -525,6 +527,8 @@ module Aws::S3
525
527
  # value: "Value", # required
526
528
  # },
527
529
  # ],
530
+ # object_size_greater_than: 1,
531
+ # object_size_less_than: 1,
528
532
  # },
529
533
  # },
530
534
  # status: "Enabled", # required, accepts Enabled, Disabled
@@ -539,10 +543,12 @@ module Aws::S3
539
543
  # {
540
544
  # noncurrent_days: 1,
541
545
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
546
+ # newer_noncurrent_versions: 1,
542
547
  # },
543
548
  # ],
544
549
  # noncurrent_version_expiration: {
545
550
  # noncurrent_days: 1,
551
+ # newer_noncurrent_versions: 1,
546
552
  # },
547
553
  # abort_incomplete_multipart_upload: {
548
554
  # days_after_initiation: 1,
@@ -1113,6 +1119,9 @@ module Aws::S3
1113
1119
  #
1114
1120
  # @!attribute [rw] parts
1115
1121
  # Array of CompletedPart data types.
1122
+ #
1123
+ # If you do not supply a valid `Part` with your request, the service
1124
+ # sends back an HTTP 400 response.
1116
1125
  # @return [Array<Types::CompletedPart>]
1117
1126
  #
1118
1127
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompletedMultipartUpload AWS API Documentation
@@ -7325,9 +7334,11 @@ module Aws::S3
7325
7334
  # noncurrent_version_transition: {
7326
7335
  # noncurrent_days: 1,
7327
7336
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
7337
+ # newer_noncurrent_versions: 1,
7328
7338
  # },
7329
7339
  # noncurrent_version_expiration: {
7330
7340
  # noncurrent_days: 1,
7341
+ # newer_noncurrent_versions: 1,
7331
7342
  # },
7332
7343
  # abort_incomplete_multipart_upload: {
7333
7344
  # days_after_initiation: 1,
@@ -7405,6 +7416,8 @@ module Aws::S3
7405
7416
  # key: "ObjectKey", # required
7406
7417
  # value: "Value", # required
7407
7418
  # },
7419
+ # object_size_greater_than: 1,
7420
+ # object_size_less_than: 1,
7408
7421
  # and: {
7409
7422
  # prefix: "Prefix",
7410
7423
  # tags: [
@@ -7413,6 +7426,8 @@ module Aws::S3
7413
7426
  # value: "Value", # required
7414
7427
  # },
7415
7428
  # ],
7429
+ # object_size_greater_than: 1,
7430
+ # object_size_less_than: 1,
7416
7431
  # },
7417
7432
  # },
7418
7433
  # status: "Enabled", # required, accepts Enabled, Disabled
@@ -7427,10 +7442,12 @@ module Aws::S3
7427
7442
  # {
7428
7443
  # noncurrent_days: 1,
7429
7444
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
7445
+ # newer_noncurrent_versions: 1,
7430
7446
  # },
7431
7447
  # ],
7432
7448
  # noncurrent_version_expiration: {
7433
7449
  # noncurrent_days: 1,
7450
+ # newer_noncurrent_versions: 1,
7434
7451
  # },
7435
7452
  # abort_incomplete_multipart_upload: {
7436
7453
  # days_after_initiation: 1,
@@ -7538,6 +7555,8 @@ module Aws::S3
7538
7555
  # value: "Value", # required
7539
7556
  # },
7540
7557
  # ],
7558
+ # object_size_greater_than: 1,
7559
+ # object_size_less_than: 1,
7541
7560
  # }
7542
7561
  #
7543
7562
  # @!attribute [rw] prefix
@@ -7549,11 +7568,21 @@ module Aws::S3
7549
7568
  # the rule to apply.
7550
7569
  # @return [Array<Types::Tag>]
7551
7570
  #
7571
+ # @!attribute [rw] object_size_greater_than
7572
+ # Minimum object size to which the rule applies.
7573
+ # @return [Integer]
7574
+ #
7575
+ # @!attribute [rw] object_size_less_than
7576
+ # Maximum object size to which the rule applies.
7577
+ # @return [Integer]
7578
+ #
7552
7579
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleRuleAndOperator AWS API Documentation
7553
7580
  #
7554
7581
  class LifecycleRuleAndOperator < Struct.new(
7555
7582
  :prefix,
7556
- :tags)
7583
+ :tags,
7584
+ :object_size_greater_than,
7585
+ :object_size_less_than)
7557
7586
  SENSITIVE = []
7558
7587
  include Aws::Structure
7559
7588
  end
@@ -7571,6 +7600,8 @@ module Aws::S3
7571
7600
  # key: "ObjectKey", # required
7572
7601
  # value: "Value", # required
7573
7602
  # },
7603
+ # object_size_greater_than: 1,
7604
+ # object_size_less_than: 1,
7574
7605
  # and: {
7575
7606
  # prefix: "Prefix",
7576
7607
  # tags: [
@@ -7579,6 +7610,8 @@ module Aws::S3
7579
7610
  # value: "Value", # required
7580
7611
  # },
7581
7612
  # ],
7613
+ # object_size_greater_than: 1,
7614
+ # object_size_less_than: 1,
7582
7615
  # },
7583
7616
  # }
7584
7617
  #
@@ -7599,6 +7632,14 @@ module Aws::S3
7599
7632
  # to apply.
7600
7633
  # @return [Types::Tag]
7601
7634
  #
7635
+ # @!attribute [rw] object_size_greater_than
7636
+ # Minimum object size to which the rule applies.
7637
+ # @return [Integer]
7638
+ #
7639
+ # @!attribute [rw] object_size_less_than
7640
+ # Maximum object size to which the rule applies.
7641
+ # @return [Integer]
7642
+ #
7602
7643
  # @!attribute [rw] and
7603
7644
  # This is used in a Lifecycle Rule Filter to apply a logical AND to
7604
7645
  # two or more predicates. The Lifecycle Rule will apply to any object
@@ -7610,6 +7651,8 @@ module Aws::S3
7610
7651
  class LifecycleRuleFilter < Struct.new(
7611
7652
  :prefix,
7612
7653
  :tag,
7654
+ :object_size_greater_than,
7655
+ :object_size_less_than,
7613
7656
  :and)
7614
7657
  SENSITIVE = []
7615
7658
  include Aws::Structure
@@ -9261,6 +9304,7 @@ module Aws::S3
9261
9304
  #
9262
9305
  # {
9263
9306
  # noncurrent_days: 1,
9307
+ # newer_noncurrent_versions: 1,
9264
9308
  # }
9265
9309
  #
9266
9310
  # @!attribute [rw] noncurrent_days
@@ -9274,10 +9318,23 @@ module Aws::S3
9274
9318
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations
9275
9319
  # @return [Integer]
9276
9320
  #
9321
+ # @!attribute [rw] newer_noncurrent_versions
9322
+ # Specifies how many noncurrent versions Amazon S3 will retain. If
9323
+ # there are this many more recent noncurrent versions, Amazon S3 will
9324
+ # take the associated action. For more information about noncurrent
9325
+ # versions, see [Lifecycle configuration elements][1] in the *Amazon
9326
+ # S3 User Guide*.
9327
+ #
9328
+ #
9329
+ #
9330
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html
9331
+ # @return [Integer]
9332
+ #
9277
9333
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionExpiration AWS API Documentation
9278
9334
  #
9279
9335
  class NoncurrentVersionExpiration < Struct.new(
9280
- :noncurrent_days)
9336
+ :noncurrent_days,
9337
+ :newer_noncurrent_versions)
9281
9338
  SENSITIVE = []
9282
9339
  include Aws::Structure
9283
9340
  end
@@ -9297,6 +9354,7 @@ module Aws::S3
9297
9354
  # {
9298
9355
  # noncurrent_days: 1,
9299
9356
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
9357
+ # newer_noncurrent_versions: 1,
9300
9358
  # }
9301
9359
  #
9302
9360
  # @!attribute [rw] noncurrent_days
@@ -9314,11 +9372,24 @@ module Aws::S3
9314
9372
  # The class of storage used to store the object.
9315
9373
  # @return [String]
9316
9374
  #
9375
+ # @!attribute [rw] newer_noncurrent_versions
9376
+ # Specifies how many noncurrent versions Amazon S3 will retain. If
9377
+ # there are this many more recent noncurrent versions, Amazon S3 will
9378
+ # take the associated action. For more information about noncurrent
9379
+ # versions, see [Lifecycle configuration elements][1] in the *Amazon
9380
+ # S3 User Guide*.
9381
+ #
9382
+ #
9383
+ #
9384
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html
9385
+ # @return [Integer]
9386
+ #
9317
9387
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionTransition AWS API Documentation
9318
9388
  #
9319
9389
  class NoncurrentVersionTransition < Struct.new(
9320
9390
  :noncurrent_days,
9321
- :storage_class)
9391
+ :storage_class,
9392
+ :newer_noncurrent_versions)
9322
9393
  SENSITIVE = []
9323
9394
  include Aws::Structure
9324
9395
  end
@@ -10599,6 +10670,8 @@ module Aws::S3
10599
10670
  # key: "ObjectKey", # required
10600
10671
  # value: "Value", # required
10601
10672
  # },
10673
+ # object_size_greater_than: 1,
10674
+ # object_size_less_than: 1,
10602
10675
  # and: {
10603
10676
  # prefix: "Prefix",
10604
10677
  # tags: [
@@ -10607,6 +10680,8 @@ module Aws::S3
10607
10680
  # value: "Value", # required
10608
10681
  # },
10609
10682
  # ],
10683
+ # object_size_greater_than: 1,
10684
+ # object_size_less_than: 1,
10610
10685
  # },
10611
10686
  # },
10612
10687
  # status: "Enabled", # required, accepts Enabled, Disabled
@@ -10621,10 +10696,12 @@ module Aws::S3
10621
10696
  # {
10622
10697
  # noncurrent_days: 1,
10623
10698
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
10699
+ # newer_noncurrent_versions: 1,
10624
10700
  # },
10625
10701
  # ],
10626
10702
  # noncurrent_version_expiration: {
10627
10703
  # noncurrent_days: 1,
10704
+ # newer_noncurrent_versions: 1,
10628
10705
  # },
10629
10706
  # abort_incomplete_multipart_upload: {
10630
10707
  # days_after_initiation: 1,
@@ -10684,9 +10761,11 @@ module Aws::S3
10684
10761
  # noncurrent_version_transition: {
10685
10762
  # noncurrent_days: 1,
10686
10763
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
10764
+ # newer_noncurrent_versions: 1,
10687
10765
  # },
10688
10766
  # noncurrent_version_expiration: {
10689
10767
  # noncurrent_days: 1,
10768
+ # newer_noncurrent_versions: 1,
10690
10769
  # },
10691
10770
  # abort_incomplete_multipart_upload: {
10692
10771
  # days_after_initiation: 1,
@@ -13700,9 +13779,11 @@ module Aws::S3
13700
13779
  # noncurrent_version_transition: {
13701
13780
  # noncurrent_days: 1,
13702
13781
  # storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
13782
+ # newer_noncurrent_versions: 1,
13703
13783
  # },
13704
13784
  # noncurrent_version_expiration: {
13705
13785
  # noncurrent_days: 1,
13786
+ # newer_noncurrent_versions: 1,
13706
13787
  # },
13707
13788
  # abort_incomplete_multipart_upload: {
13708
13789
  # days_after_initiation: 1,
data/lib/aws-sdk-s3.rb CHANGED
@@ -69,6 +69,6 @@ require_relative 'aws-sdk-s3/event_streams'
69
69
  # @!group service
70
70
  module Aws::S3
71
71
 
72
- GEM_VERSION = '1.104.0'
72
+ GEM_VERSION = '1.107.0'
73
73
 
74
74
  end