aws-sdk-s3 1.232.1 → 1.233.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/client.rb +4 -4
- data/lib/aws-sdk-s3/customizations/object.rb +35 -26
- data/lib/aws-sdk-s3/transfer_manager.rb +54 -37
- data/lib/aws-sdk-s3.rb +1 -1
- data/sig/client.rbs +1 -1
- data/sig/types.rbs +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 39ab335ff541d8651defd1a742def7371faeabe89c6a3aeafef98e7130c40e56
|
|
4
|
+
data.tar.gz: 6215b21914e2d2a008a269c4cbcc28745d9d8e0b5e27eeaf77f063723060a107
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 973291423658781b53f54c6d54d3d5a836f605b9169b9963daae754870e695b88850e573e1682ec872c4af984205653c50673c95a24e2aabfb8103ed3bdf1c04
|
|
7
|
+
data.tar.gz: 1386d963bb662bacfddc26dbc4aa9bebb43d7aab54c9abbc7306e95c1ebf47d2b057f6ac1b0b6f4a411da77450170c91a560988f91cf33bd79defb1fd8b1c471
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
Unreleased Changes
|
|
2
2
|
------------------
|
|
3
3
|
|
|
4
|
+
1.233.0 (2026-09-30)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
* Feature - Amazon S3 adds a new optional S3 Inventory field, IntelligentTieringReferenceDate, reporting the reference date S3 Intelligent-Tiering uses to evaluate an object's tier-transition eligibility. The value is populated for objects in the Intelligent-Tiering storage class and left blank for others.
|
|
8
|
+
|
|
9
|
+
1.232.3 (2026-09-28)
|
|
10
|
+
------------------
|
|
11
|
+
|
|
12
|
+
* Issue - Remove `:thread_count` from transfer options even when a custom `:executor` is configured on `TransferManager`, fixing an `ArgumentError` raised on single-part `upload_file` calls.
|
|
13
|
+
|
|
14
|
+
* Issue - Fix `:thread_count` being ignored by the deprecated `Object#download_file`, which always used the default thread count.
|
|
15
|
+
|
|
16
|
+
1.232.2 (2026-09-25)
|
|
17
|
+
------------------
|
|
18
|
+
|
|
19
|
+
* Issue - Ensure the internally-created executor is shutdown on error in `TransferManager` and `Aws::S3::Object` resource methods, preventing leaked worker threads on multipart transfer failures (#3419).
|
|
20
|
+
|
|
4
21
|
1.232.1 (2026-09-16)
|
|
5
22
|
------------------
|
|
6
23
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.233.0
|
data/lib/aws-sdk-s3/client.rb
CHANGED
|
@@ -7723,7 +7723,7 @@ module Aws::S3
|
|
|
7723
7723
|
# resp.inventory_configuration.id #=> String
|
|
7724
7724
|
# resp.inventory_configuration.included_object_versions #=> String, one of "All", "Current"
|
|
7725
7725
|
# resp.inventory_configuration.optional_fields #=> Array
|
|
7726
|
-
# resp.inventory_configuration.optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "ObjectLockEventHoldStatus", "ObjectLockEventHoldDuration", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner", "LifecycleExpirationDate"
|
|
7726
|
+
# resp.inventory_configuration.optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "ObjectLockEventHoldStatus", "ObjectLockEventHoldDuration", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner", "LifecycleExpirationDate", "IntelligentTieringReferenceDate"
|
|
7727
7727
|
# resp.inventory_configuration.schedule.frequency #=> String, one of "Daily", "Weekly"
|
|
7728
7728
|
#
|
|
7729
7729
|
# @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration AWS API Documentation
|
|
@@ -12760,7 +12760,7 @@ module Aws::S3
|
|
|
12760
12760
|
# resp.inventory_configuration_list[0].id #=> String
|
|
12761
12761
|
# resp.inventory_configuration_list[0].included_object_versions #=> String, one of "All", "Current"
|
|
12762
12762
|
# resp.inventory_configuration_list[0].optional_fields #=> Array
|
|
12763
|
-
# resp.inventory_configuration_list[0].optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "ObjectLockEventHoldStatus", "ObjectLockEventHoldDuration", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner", "LifecycleExpirationDate"
|
|
12763
|
+
# resp.inventory_configuration_list[0].optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "ObjectLockEventHoldStatus", "ObjectLockEventHoldDuration", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner", "LifecycleExpirationDate", "IntelligentTieringReferenceDate"
|
|
12764
12764
|
# resp.inventory_configuration_list[0].schedule.frequency #=> String, one of "Daily", "Weekly"
|
|
12765
12765
|
# resp.is_truncated #=> Boolean
|
|
12766
12766
|
# resp.next_continuation_token #=> String
|
|
@@ -16319,7 +16319,7 @@ module Aws::S3
|
|
|
16319
16319
|
# },
|
|
16320
16320
|
# id: "InventoryId", # required
|
|
16321
16321
|
# included_object_versions: "All", # required, accepts All, Current
|
|
16322
|
-
# optional_fields: ["Size"], # accepts Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, ObjectLockEventHoldStatus, ObjectLockEventHoldDuration, IntelligentTieringAccessTier, BucketKeyStatus, ChecksumAlgorithm, ObjectAccessControlList, ObjectOwner, LifecycleExpirationDate
|
|
16322
|
+
# optional_fields: ["Size"], # accepts Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, ObjectLockEventHoldStatus, ObjectLockEventHoldDuration, IntelligentTieringAccessTier, BucketKeyStatus, ChecksumAlgorithm, ObjectAccessControlList, ObjectOwner, LifecycleExpirationDate, IntelligentTieringReferenceDate
|
|
16323
16323
|
# schedule: { # required
|
|
16324
16324
|
# frequency: "Daily", # required, accepts Daily, Weekly
|
|
16325
16325
|
# },
|
|
@@ -24209,7 +24209,7 @@ module Aws::S3
|
|
|
24209
24209
|
tracer: tracer
|
|
24210
24210
|
)
|
|
24211
24211
|
context[:gem_name] = 'aws-sdk-s3'
|
|
24212
|
-
context[:gem_version] = '1.
|
|
24212
|
+
context[:gem_version] = '1.233.0'
|
|
24213
24213
|
Seahorse::Client::Request.new(handlers, context)
|
|
24214
24214
|
end
|
|
24215
24215
|
|
|
@@ -406,17 +406,20 @@ module Aws
|
|
|
406
406
|
def upload_stream(options = {}, &block)
|
|
407
407
|
upload_opts = options.merge(bucket: bucket_name, key: key)
|
|
408
408
|
executor = DefaultExecutor.new(max_threads: upload_opts.delete(:thread_count))
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
409
|
+
begin
|
|
410
|
+
uploader = MultipartStreamUploader.new(
|
|
411
|
+
client: client,
|
|
412
|
+
executor: executor,
|
|
413
|
+
tempfile: upload_opts.delete(:tempfile),
|
|
414
|
+
part_size: upload_opts.delete(:part_size)
|
|
415
|
+
)
|
|
416
|
+
Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
|
|
417
|
+
uploader.upload(upload_opts, &block)
|
|
418
|
+
end
|
|
419
|
+
true
|
|
420
|
+
ensure
|
|
421
|
+
executor.shutdown
|
|
417
422
|
end
|
|
418
|
-
executor.shutdown
|
|
419
|
-
true
|
|
420
423
|
end
|
|
421
424
|
deprecated(:upload_stream, use: 'Aws::S3::TransferManager#upload_stream', version: 'next major version')
|
|
422
425
|
|
|
@@ -480,17 +483,20 @@ module Aws
|
|
|
480
483
|
def upload_file(source, options = {})
|
|
481
484
|
upload_opts = options.merge(bucket: bucket_name, key: key)
|
|
482
485
|
executor = DefaultExecutor.new(max_threads: upload_opts.delete(:thread_count))
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
486
|
+
begin
|
|
487
|
+
uploader = FileUploader.new(
|
|
488
|
+
client: client,
|
|
489
|
+
executor: executor,
|
|
490
|
+
multipart_threshold: upload_opts.delete(:multipart_threshold)
|
|
491
|
+
)
|
|
492
|
+
response = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
|
|
493
|
+
uploader.upload(source, upload_opts)
|
|
494
|
+
end
|
|
495
|
+
yield response if block_given?
|
|
496
|
+
true
|
|
497
|
+
ensure
|
|
498
|
+
executor.shutdown
|
|
490
499
|
end
|
|
491
|
-
yield response if block_given?
|
|
492
|
-
executor.shutdown
|
|
493
|
-
true
|
|
494
500
|
end
|
|
495
501
|
deprecated(:upload_file, use: 'Aws::S3::TransferManager#upload_file', version: 'next major version')
|
|
496
502
|
|
|
@@ -561,13 +567,16 @@ module Aws
|
|
|
561
567
|
# @see Client#head_object
|
|
562
568
|
def download_file(destination, options = {})
|
|
563
569
|
download_opts = options.merge(bucket: bucket_name, key: key)
|
|
564
|
-
executor = DefaultExecutor.new(max_threads: download_opts.delete(
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
570
|
+
executor = DefaultExecutor.new(max_threads: download_opts.delete(:thread_count))
|
|
571
|
+
begin
|
|
572
|
+
downloader = FileDownloader.new(client: client, executor: executor)
|
|
573
|
+
Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
|
|
574
|
+
downloader.download(destination, download_opts)
|
|
575
|
+
end
|
|
576
|
+
true
|
|
577
|
+
ensure
|
|
578
|
+
executor.shutdown
|
|
568
579
|
end
|
|
569
|
-
executor.shutdown
|
|
570
|
-
true
|
|
571
580
|
end
|
|
572
581
|
deprecated(:download_file, use: 'Aws::S3::TransferManager#download_file', version: 'next major version')
|
|
573
582
|
|
|
@@ -160,11 +160,14 @@ module Aws
|
|
|
160
160
|
# * `:errors` - Array of errors for failed downloads (only present when failures occur)
|
|
161
161
|
def download_directory(destination, bucket:, **options)
|
|
162
162
|
Aws::Plugins::UserAgent.metric('S3_TRANSFER', 'S3_TRANSFER_DOWNLOAD_DIRECTORY') do
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
thread_count = options.delete(:thread_count)
|
|
164
|
+
executor = @executor || DefaultExecutor.new(max_threads: thread_count)
|
|
165
|
+
begin
|
|
166
|
+
downloader = DirectoryDownloader.new(client: @client, executor: executor, logger: @logger)
|
|
167
|
+
downloader.download(destination, bucket: bucket, **options)
|
|
168
|
+
ensure
|
|
169
|
+
executor.shutdown unless @executor
|
|
170
|
+
end
|
|
168
171
|
end
|
|
169
172
|
end
|
|
170
173
|
|
|
@@ -245,11 +248,15 @@ module Aws
|
|
|
245
248
|
# @see Client#head_object
|
|
246
249
|
def download_file(destination, bucket:, key:, **options)
|
|
247
250
|
download_opts = options.merge(bucket: bucket, key: key)
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
251
|
+
thread_count = download_opts.delete(:thread_count)
|
|
252
|
+
executor = @executor || DefaultExecutor.new(max_threads: thread_count)
|
|
253
|
+
begin
|
|
254
|
+
downloader = FileDownloader.new(client: @client, executor: executor)
|
|
255
|
+
downloader.download(destination, download_opts)
|
|
256
|
+
true
|
|
257
|
+
ensure
|
|
258
|
+
executor.shutdown unless @executor
|
|
259
|
+
end
|
|
253
260
|
end
|
|
254
261
|
|
|
255
262
|
# Uploads all files under the given directory to the provided S3 bucket.
|
|
@@ -360,11 +367,14 @@ module Aws
|
|
|
360
367
|
# * `:errors` - Array of error objects for failed uploads (only present when failures occur)
|
|
361
368
|
def upload_directory(source, bucket:, **options)
|
|
362
369
|
Aws::Plugins::UserAgent.metric('S3_TRANSFER', 'S3_TRANSFER_UPLOAD_DIRECTORY') do
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
370
|
+
thread_count = options.delete(:thread_count)
|
|
371
|
+
executor = @executor || DefaultExecutor.new(max_threads: thread_count)
|
|
372
|
+
begin
|
|
373
|
+
uploader = DirectoryUploader.new(client: @client, executor: executor, logger: @logger)
|
|
374
|
+
uploader.upload(source, bucket, **options.merge(http_chunk_size: resolve_http_chunk_size(options)))
|
|
375
|
+
ensure
|
|
376
|
+
executor.shutdown unless @executor
|
|
377
|
+
end
|
|
368
378
|
end
|
|
369
379
|
end
|
|
370
380
|
|
|
@@ -443,18 +453,21 @@ module Aws
|
|
|
443
453
|
def upload_file(source, bucket:, key:, **options)
|
|
444
454
|
upload_opts = options.merge(bucket: bucket, key: key)
|
|
445
455
|
http_chunk_size = resolve_http_chunk_size(upload_opts)
|
|
446
|
-
|
|
447
|
-
executor = @executor || DefaultExecutor.new(max_threads:
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
456
|
+
thread_count = upload_opts.delete(:thread_count)
|
|
457
|
+
executor = @executor || DefaultExecutor.new(max_threads: thread_count)
|
|
458
|
+
begin
|
|
459
|
+
uploader = FileUploader.new(
|
|
460
|
+
multipart_threshold: upload_opts.delete(:multipart_threshold),
|
|
461
|
+
http_chunk_size: http_chunk_size,
|
|
462
|
+
client: @client,
|
|
463
|
+
executor: executor
|
|
464
|
+
)
|
|
465
|
+
response = uploader.upload(source, upload_opts)
|
|
466
|
+
yield response if block_given?
|
|
467
|
+
true
|
|
468
|
+
ensure
|
|
469
|
+
executor.shutdown unless @executor
|
|
470
|
+
end
|
|
458
471
|
end
|
|
459
472
|
|
|
460
473
|
# Uploads a stream in a streaming fashion to S3.
|
|
@@ -511,16 +524,20 @@ module Aws
|
|
|
511
524
|
# @see Client#upload_part
|
|
512
525
|
def upload_stream(bucket:, key:, **options, &block)
|
|
513
526
|
upload_opts = options.merge(bucket: bucket, key: key)
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
527
|
+
thread_count = upload_opts.delete(:thread_count)
|
|
528
|
+
executor = @executor || DefaultExecutor.new(max_threads: thread_count)
|
|
529
|
+
begin
|
|
530
|
+
uploader = MultipartStreamUploader.new(
|
|
531
|
+
client: @client,
|
|
532
|
+
executor: executor,
|
|
533
|
+
tempfile: upload_opts.delete(:tempfile),
|
|
534
|
+
part_size: upload_opts.delete(:part_size)
|
|
535
|
+
)
|
|
536
|
+
uploader.upload(upload_opts, &block)
|
|
537
|
+
true
|
|
538
|
+
ensure
|
|
539
|
+
executor.shutdown unless @executor
|
|
540
|
+
end
|
|
524
541
|
end
|
|
525
542
|
|
|
526
543
|
private
|
data/lib/aws-sdk-s3.rb
CHANGED
data/sig/client.rbs
CHANGED
|
@@ -1671,7 +1671,7 @@ module Aws
|
|
|
1671
1671
|
}?,
|
|
1672
1672
|
id: ::String,
|
|
1673
1673
|
included_object_versions: ("All" | "Current"),
|
|
1674
|
-
optional_fields: Array[("Size" | "LastModifiedDate" | "StorageClass" | "ETag" | "IsMultipartUploaded" | "ReplicationStatus" | "EncryptionStatus" | "ObjectLockRetainUntilDate" | "ObjectLockMode" | "ObjectLockLegalHoldStatus" | "ObjectLockEventHoldStatus" | "ObjectLockEventHoldDuration" | "IntelligentTieringAccessTier" | "BucketKeyStatus" | "ChecksumAlgorithm" | "ObjectAccessControlList" | "ObjectOwner" | "LifecycleExpirationDate")]?,
|
|
1674
|
+
optional_fields: Array[("Size" | "LastModifiedDate" | "StorageClass" | "ETag" | "IsMultipartUploaded" | "ReplicationStatus" | "EncryptionStatus" | "ObjectLockRetainUntilDate" | "ObjectLockMode" | "ObjectLockLegalHoldStatus" | "ObjectLockEventHoldStatus" | "ObjectLockEventHoldDuration" | "IntelligentTieringAccessTier" | "BucketKeyStatus" | "ChecksumAlgorithm" | "ObjectAccessControlList" | "ObjectOwner" | "LifecycleExpirationDate" | "IntelligentTieringReferenceDate")]?,
|
|
1675
1675
|
schedule: {
|
|
1676
1676
|
frequency: ("Daily" | "Weekly")
|
|
1677
1677
|
}
|
data/sig/types.rbs
CHANGED
|
@@ -1515,7 +1515,7 @@ module Aws::S3
|
|
|
1515
1515
|
attr_accessor filter: Types::InventoryFilter
|
|
1516
1516
|
attr_accessor id: ::String
|
|
1517
1517
|
attr_accessor included_object_versions: ("All" | "Current")
|
|
1518
|
-
attr_accessor optional_fields: ::Array[("Size" | "LastModifiedDate" | "StorageClass" | "ETag" | "IsMultipartUploaded" | "ReplicationStatus" | "EncryptionStatus" | "ObjectLockRetainUntilDate" | "ObjectLockMode" | "ObjectLockLegalHoldStatus" | "ObjectLockEventHoldStatus" | "ObjectLockEventHoldDuration" | "IntelligentTieringAccessTier" | "BucketKeyStatus" | "ChecksumAlgorithm" | "ObjectAccessControlList" | "ObjectOwner" | "LifecycleExpirationDate")]
|
|
1518
|
+
attr_accessor optional_fields: ::Array[("Size" | "LastModifiedDate" | "StorageClass" | "ETag" | "IsMultipartUploaded" | "ReplicationStatus" | "EncryptionStatus" | "ObjectLockRetainUntilDate" | "ObjectLockMode" | "ObjectLockLegalHoldStatus" | "ObjectLockEventHoldStatus" | "ObjectLockEventHoldDuration" | "IntelligentTieringAccessTier" | "BucketKeyStatus" | "ChecksumAlgorithm" | "ObjectAccessControlList" | "ObjectOwner" | "LifecycleExpirationDate" | "IntelligentTieringReferenceDate")]
|
|
1519
1519
|
attr_accessor schedule: Types::InventorySchedule
|
|
1520
1520
|
SENSITIVE: []
|
|
1521
1521
|
end
|