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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/arn/access_point_arn.rb +6 -6
- data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +2 -3
- data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +6 -6
- data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +7 -6
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +2 -0
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +6 -0
- data/lib/aws-sdk-s3/client.rb +105 -77
- data/lib/aws-sdk-s3/client_api.rb +9 -0
- data/lib/aws-sdk-s3/customizations/object.rb +74 -1
- data/lib/aws-sdk-s3/plugins/accelerate.rb +7 -1
- data/lib/aws-sdk-s3/plugins/arn.rb +11 -24
- data/lib/aws-sdk-s3/plugins/bucket_dns.rb +1 -1
- data/lib/aws-sdk-s3/plugins/dualstack.rb +25 -31
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +19 -4
- data/lib/aws-sdk-s3/types.rb +84 -3
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +4 -4
@@ -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
|
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:
|
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
|
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
|
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
|
244
|
+
if !use_arn_region && region != arn.region
|
258
245
|
raise Aws::Errors::InvalidARNRegionError
|
259
246
|
end
|
260
247
|
end
|
@@ -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:
|
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
|
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
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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.
|
62
|
-
|
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
|
-
|
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(
|
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(
|
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!(
|
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
|
data/lib/aws-sdk-s3/types.rb
CHANGED
@@ -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,
|