aws-sdk-s3 1.104.0 → 1.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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