- Upgrade to Rust 2024. (#1498)
- Fix a race condition in the internal memory pool that in some cases could result in a deadlock. (#1515) (#1520) (awslabs/aws-c-s3#533) (awslabs/aws-c-s3#536)
- Reduce memory fragmentation and peak usage by avoiding copying data returned by GetObject into newly allocated buffers.
Callers of the
get_objectmethod are now responsible for returning the buffers to the internal memory pool by dropping the receivedBytesinstances after use. Failure to do so may eventually lead to reduced or zero throughput when the memory pool reaches capacity. (#1481)
- Add support for RenameObject API. (#1468)
- Variants of the
GetObjectErrorandS3RequestErrorenums now contain aClientErrorMetadatafield, which stores information from the S3 response. (#1411)
- Fix compatibility issue with S3-like services by removing
Content-Length: 0header from GET, HEAD, and DELETE requests. (#1381) (awslabs/aws-c-s3#516) - The memory limit for CRT Client can now be configured with the
S3ClientConfig::memory_limit_in_bytesmethod. (#1363) - Fix missing credential caching when using
S3ClientAuthConfig::Profilecredential configuration. (#1398)
GetObjectResponsereturns part content asBytesrather thanBox<[u8]>. (#1348)
- Fix an issue where GetObject requests may not be cancelled. (#1355)
- Fix race condition in GetObject that could result in empty responses. (#1334)
- Update endpoints. (awslabs/aws-c-s3#502)
- Bump Default Memory Limit for Higher Target Throughput. (awslabs/aws-c-s3#499)
- Update to latest CRT dependencies.
- Add support for CRC64-NVME checksum algorithm. (#1235)
- Add support for overriding the number of threads used by the Event Loop. (#1240)
- The ECS credentials provider now performs retries in the event of some failures. (awslabs/aws-c-auth#259)
- Export missing types in public API which previously required a direct dependency on
mountpoint-s3-crt. (#1248)
get_objectmethod now waits for the response headers before returning and may report errors earlier. Moreover, its return type on success has been renamed toGetObjectResponse(wasGetObjectRequest). (#1171)get_objectmethod now requires aGetObjectParamsparameter. Two of the existing parameters,rangeandif_matchhave been moved toGetObjectParams. (#1121)increment_read_windowandread_window_end_offsetmethods have been removed fromGetObjectResponse.ClientBackpressureHandlecan be used to interact with flow-control window instead, it can be retrieved frombackpressure_handlemethod. (#1200)head_objectmethod now requires aHeadObjectParamsparameter. The structure itself is not required to specify anything to achieve the existing behavior. (#1083)HeadObjectResultno longer contains anObjectInfostruct. Instead, it returns the object attributes as individual fields on theHeadObjectResult. The entity tag field has also changed and is now of typeETagrather thanString. (#1058)HeadObjectResultno longer provides the bucket and key used in the original request. (#1058)- Both
ObjectInfoandChecksumAlgorithmstructs are now markednon_exhaustive, to indicate that new fields may be added in the future.ChecksumAlgorithmno longer implementsCopy. (#1086) put_objectmethod now waits for theCreateMultipartUploadrequest to complete before returning and may report errors earlier. (#1192)
- Add support for custom telemetry handlers. (#1080)
- Add support for source buckets with dots in the name in
copy_object. (#1228) - Add support for object metadata in GET requests. (#1065)
HeadObjectResultnow includes the server-side encryption settings used when storing the object. (#1143)- Add parameter to request checksum information as part of a
HeadObjectrequest. If specified, the result should contain the checksum for the object if available in the S3 response. (#1083) - Add parameter to request checksum information as part of a
GetObjectrequest. If specified, callingget_object_checksumonGetObjectRequestwill return the checksum information. (#1123) - Expose checksum algorithm in
ListObjectsResult'sObjectInfostruct. (#1086, #1093) ChecksumAlgorithmhas a new variantUnknown(String), to accomodate algorithms not recognized by the client should they be added in future. (#1086)- Allow to specify any of the supported checksum algorithms when uploading objects with
put_object_single. (#1157) - Amazon S3 introduces support for AWS Dedicated Local Zones. (awslabs/aws-c-s3#465)
- No breaking changes.
- Add support for copy object operation. (#1052)
- Introduce a new API (
put_object_single) to perform single PutObject requests rather than multi-part uploads. (#1046) - Return the new object ETag after a successful PUT request. (#1057)
- Add support for custom headers in PUT requests. (#1059)
- Add support for writing object metadata in PUT requests. (#1062)
- Address a threading issue in the s2n-tls library that could result in premature cleanup and
NULL pointererrors. (aws/s2n-tls#4584) - Inaccurate reporting of
s3.client.buffer_pool.primary_allocatedCRT statistic is fixed. (awslabs/aws-c-s3#453) - Expose
s3.client.buffer_pool.forced_usedmetric which account for buffer allocations that could exceed memory limit in the CRT buffer pool. (#1025) - The
400 RequestTimeouterror is now treated as retryable. (awslabs/aws-c-s3#457)
- When using GetObject with backpressure enabled, an error will be returned when there is not enough read window instead of blocking. (#971)
- Allow querying initial read window size and read window end offset for backpressure GetObject. (#971)
- Fix an issue where
credential_processfield would not be picked up correctly when usingsource_profileor--profile <AWS_PROFILE>. (awslabs/aws-c-auth#245) - Update CacheCredentialsProvider Refresh Time to 5 Minutes before Expiry. (awslabs/aws-c-auth#247)
- Allow specifying a list of network interfaces to be used by an S3 client. (#943)
- Adds support for
AWS_ENDPOINT_URLenvironment variable. (#895) - Support backpressure for GetObject request (#889)
- Fix an issue where mountpoint-s3-client could interpret a HTTP 206 Partial success response as an error (#917)
- Introduce a new trait
ProvideErrorMetadatato provide additional information for error reporting (#882) - Improve overall performance by not creating a new rule engine for every endpoint resolution (#860)
- Adopt polling API for uploading data in PutObject requests (#874)
- The
trailing_checksumsfield ofPutObjectParamsis now an enum, with a newReviewOnlyoption that allows disabling sending additional checksum headers to S3 while still computing them for use byUploadReviewcallbacks. (#849)
- No other changes.
- No breaking changes.
- The maximum number of attempts for S3 requests can now be configured with the
S3ClientConfig::max_attemptsmethod or theAWS_MAX_ATTEMPTSenvironment variable. (#830) - Return server-side encryption headers in
PutObjectResult. (#745) - Add support for AES256 server-side encryption (SSE-S3). (#827)
- Expose memory consumption metrics for the CRT buffer pool (
s3.client.buffer_pool.*). (#820) - Adopt new async write API for PutObject requests (#832)
- S3 requests are now canceled when dropped. As part of this change, there is a new
S3RequestError::RequestCanceledenum variant. (#794)
- Added new metrics to track number of known S3 endpoint IPs. (#778)
- Request IDs are now logged for meta request failures. (#790)
- The
mock_clientmodule is no longer enabled by default, and is now available by enabling themockfeature for this crate. (#723)
- Introduced a new
ThroughputMockClientthat simulates a target network throughput from an in-memory mock S3 client. This client requires themockfeature flag. (#723) - Updated some of the dependencies that aim to clean up our dependency closure. It includes the update of built dependency which fixes a vulnerability in libgit2-sys. (#731)
- No breaking changes.
- Individual S3 requests made as part of meta requests are no longer logged at WARN, only DEBUG. For those log entries, the CRT error is now output to the logs. (#669)
- Client user-agent now includes
-dirtysuffix to indicate when the client was built with uncommitted changes. (#678)
- No breaking changes.
- Consume CRT bug fix for an issue where a large number of requests to S3 Express directory buckets could end up stuck waiting for initial S3 Express session to be created (awslabs/aws-c-s3#384)
- No breaking changes.
- Endpoint resolver now supports resolving S3 Express One Zone endpoints and the new
SigV4Expresssigning algorithm will be used for S3 Express One Zone buckets (#642)
- The
user_agent_prefixstring field ofS3ClientConfighas been replaced with a newuser_agentfield of typeUserAgentto allow more flexible construction of user agent headers that fit the pattern of AWS SDKs (#608)
- Request tracing spans are now created with a unique target to allow them to be filtered out (#615)
- Added
InstanceInfo, a higher-level IMDS client that can retrieve metadata about an EC2 instance (#608) ETags can now be unwrapped withinto_inner(), and now implementHashandEq(#589, #593)- The
MockClientnow supports counting the number of requests performed, for use in tests that need to make assertions about requests (#567)
- The crate has been reorganized to avoid exposing every type at the top level. See the crate documentation for more details. (#511)
- Some errors, notably
403 Forbidden, that were previously handled by individual requests are now handled by shared logic, and may be returned differently (#413) ListObjectsResultno longer includes thebucketfield (#470)
list_objectsandhead_objectresults now include the storage class and restore status of an object if available (#406, #467)put_objectnow supports configuring trailing checksums (#320)- A new
review_and_completemethod onPutObjectRequestcan be used to inspect the parts of a multi-part upload before completing it (#367)
Breaking changes:
- Use CRT's new asynchronous streaming APIs for
put_objectrequests (#282, #295). This change modifies theput_objectAPI.
Other changes:
- Avoid using CRT auto-ranged-get infrastructure for small requests (#285)
- Add
NoSuchBucketerror forhead_objectrequests (#273) - Fix a bug in computing time-to-first-byte for per-request telemetry (#275)
- Fix a build failure when consuming this crate from outside a Git repository ((#269)
- Include
mountpoint-s3-clientversion inUser-agentstrings (#266) - Integrate per-request telemetry for S3 requests (#261)
Initial release.