## Unreleased
- The ECS credentials provider now performs retries in the event of some failures. ([awslabs/aws-c-auth#259][awslabs/aws-c-auth#259])
get_object
method 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_object
method now requires aGetObjectParams
parameter. Two of the existing parameters,range
andif_match
have been moved toGetObjectParams
. (#1121)increment_read_window
andread_window_end_offset
methods have been removed fromGetObjectResponse
.ClientBackpressureHandle
can be used to interact with flow-control window instead, it can be retrieved frombackpressure_handle
method. (#1200)head_object
method now requires aHeadObjectParams
parameter. The structure itself is not required to specify anything to achieve the existing behavior. (#1083)HeadObjectResult
no longer contains anObjectInfo
struct. Instead, it returns the object attributes as individual fields on theHeadObjectResult
. The entity tag field has also changed and is now of typeETag
rather thanString
. (#1058)HeadObjectResult
no longer provides the bucket and key used in the original request. (#1058)- Both
ObjectInfo
andChecksumAlgorithm
structs are now markednon_exhaustive
, to indicate that new fields may be added in the future.ChecksumAlgorithm
no longer implementsCopy
. (#1086) put_object
method now waits for theCreateMultipartUpload
request 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)
HeadObjectResult
now includes the server-side encryption settings used when storing the object. (#1143)- Add parameter to request checksum information as part of a
HeadObject
request. 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
GetObject
request. If specified, callingget_object_checksum
onGetObjectRequest
will return the checksum information. (#1123) - Expose checksum algorithm in
ListObjectsResult
'sObjectInfo
struct. (#1086, #1093) ChecksumAlgorithm
has 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 pointer
errors. (aws/s2n-tls#4584) - Inaccurate reporting of
s3.client.buffer_pool.primary_allocated
CRT statistic is fixed. (awslabs/aws-c-s3#453) - Expose
s3.client.buffer_pool.forced_used
metric which account for buffer allocations that could exceed memory limit in the CRT buffer pool. (#1025) - The
400 RequestTimeout
error 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_process
field would not be picked up correctly when usingsource_profile
or--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_URL
environment 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
ProvideErrorMetadata
to 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_checksums
field ofPutObjectParams
is now an enum, with a newReviewOnly
option that allows disabling sending additional checksum headers to S3 while still computing them for use byUploadReview
callbacks. (#849)
- No other changes.
- No breaking changes.
- The maximum number of attempts for S3 requests can now be configured with the
S3ClientConfig::max_attempts
method or theAWS_MAX_ATTEMPTS
environment 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::RequestCanceled
enum 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_client
module is no longer enabled by default, and is now available by enabling themock
feature for this crate. (#723)
- Introduced a new
ThroughputMockClient
that simulates a target network throughput from an in-memory mock S3 client. This client requires themock
feature 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
-dirty
suffix 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
SigV4Express
signing algorithm will be used for S3 Express One Zone buckets (#642)
- The
user_agent_prefix
string field ofS3ClientConfig
has been replaced with a newuser_agent
field of typeUserAgent
to 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) ETag
s can now be unwrapped withinto_inner()
, and now implementHash
andEq
(#589, #593)- The
MockClient
now 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) ListObjectsResult
no longer includes thebucket
field (#470)
list_objects
andhead_object
results now include the storage class and restore status of an object if available (#406, #467)put_object
now supports configuring trailing checksums (#320)- A new
review_and_complete
method onPutObjectRequest
can 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_object
requests (#282, #295). This change modifies theput_object
API.
Other changes:
- Avoid using CRT auto-ranged-get infrastructure for small requests (#285)
- Add
NoSuchBucket
error forhead_object
requests (#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-client
version inUser-agent
strings (#266) - Integrate per-request telemetry for S3 requests (#261)
Initial release.