Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build_tools/services.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class ServiceEnumerator
MINIMUM_CORE_VERSION = "3.241.4"

# Minimum `aws-sdk-core` version for new S3 gem builds
MINIMUM_CORE_VERSION_S3 = "3.241.4"
MINIMUM_CORE_VERSION_S3 = "3.243.0"

EVENTSTREAM_PLUGIN = "Aws::Plugins::EventStreamConfiguration"

Expand Down
2 changes: 2 additions & 0 deletions gems/aws-sdk-core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Unreleased Changes
------------------

* Feature - Add user agent metrics for S3 Transfer Manager directory operations.

3.242.0 (2026-02-02)
------------------

Expand Down
4 changes: 3 additions & 1 deletion gems/aws-sdk-core/lib/aws-sdk-core/plugins/user_agent.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ class UserAgent < Seahorse::Client::Plugin
"SSO_LOGIN_AUTH" : "2",
"BEARER_SERVICE_ENV_VARS": "3",
"CREDENTIALS_PROFILE_LOGIN": "AC",
"CREDENTIALS_LOGIN": "AD"
"CREDENTIALS_LOGIN": "AD",
"S3_TRANSFER_UPLOAD_DIRECTORY": "9",
"S3_TRANSFER_DOWNLOAD_DIRECTORY": "+"
}
METRICS

Expand Down
2 changes: 2 additions & 0 deletions gems/aws-sdk-s3/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Unreleased Changes
------------------

* Issue - Fix `LoadError` when requiring `aws-sdk-s3` due to missing `directory_progress` file.

1.214.0 (2026-03-04)
------------------

Expand Down
1 change: 0 additions & 1 deletion gems/aws-sdk-s3/lib/aws-sdk-s3/customizations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ module S3
autoload :MultipartFileUploader, 'aws-sdk-s3/multipart_file_uploader'
autoload :MultipartStreamUploader, 'aws-sdk-s3/multipart_stream_uploader'
autoload :MultipartUploadError, 'aws-sdk-s3/multipart_upload_error'
autoload :DirectoryProgress, 'aws-sdk-s3/directory_progress'
autoload :DirectoryDownloadError, 'aws-sdk-s3/directory_download_error'
autoload :DirectoryDownloader, 'aws-sdk-s3/directory_downloader'
autoload :DirectoryUploadError, 'aws-sdk-s3/directory_upload_error'
Expand Down
24 changes: 14 additions & 10 deletions gems/aws-sdk-s3/lib/aws-sdk-s3/transfer_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,13 @@ def initialize(options = {})
# * `:failed_downloads` - Number of objects that failed to download
# * `:errors` - Array of errors for failed downloads (only present when failures occur)
def download_directory(destination, bucket:, **options)
executor = @executor || DefaultExecutor.new(max_threads: options.delete(:thread_count))
downloader = DirectoryDownloader.new(client: @client, executor: executor, logger: @logger)
result = downloader.download(destination, bucket: bucket, **options)
executor.shutdown unless @executor
result
Aws::Plugins::UserAgent.metric('S3_TRANSFER', 'S3_TRANSFER_DOWNLOAD_DIRECTORY') do
executor = @executor || DefaultExecutor.new(max_threads: options.delete(:thread_count))
downloader = DirectoryDownloader.new(client: @client, executor: executor, logger: @logger)
result = downloader.download(destination, bucket: bucket, **options)
executor.shutdown unless @executor
result
end
end

# Downloads a file in S3 to a path on disk.
Expand Down Expand Up @@ -357,11 +359,13 @@ def download_file(destination, bucket:, key:, **options)
# * `:failed_uploads` - Number of files that failed to upload
# * `:errors` - Array of error objects for failed uploads (only present when failures occur)
def upload_directory(source, bucket:, **options)
executor = @executor || DefaultExecutor.new(max_threads: options.delete(:thread_count))
uploader = DirectoryUploader.new(client: @client, executor: executor, logger: @logger)
result = uploader.upload(source, bucket, **options.merge(http_chunk_size: resolve_http_chunk_size(options)))
executor.shutdown unless @executor
result
Aws::Plugins::UserAgent.metric('S3_TRANSFER', 'S3_TRANSFER_UPLOAD_DIRECTORY') do
executor = @executor || DefaultExecutor.new(max_threads: options.delete(:thread_count))
uploader = DirectoryUploader.new(client: @client, executor: executor, logger: @logger)
result = uploader.upload(source, bucket, **options.merge(http_chunk_size: resolve_http_chunk_size(options)))
executor.shutdown unless @executor
result
end
end

# Uploads a file from disk to S3.
Expand Down
Loading