Releases: awslabs/aws-sdk-rust
v0.13.0 (June 9th, 2022)
New this release:
- π (smithy-rs#1390) Add method
ByteStream::into_async_read. This makes it easy to convertByteStreams into a struct implementingtokio:io::AsyncRead. Available on crate featurert-tokioonly. - π (smithy-rs#1356, @jszwedko) Add support for
credential_processin AWS configs for fetching credentials from an external process. - (smithy-rs#1404, @petrosagg) Switch to RustCrypto's implementation of MD5.
Contributors
Thank you for your contributions! β€
v0.12.0 (May 13th, 2022)
New this release:
- (smithy-rs#1352) Log a debug event when a retry is going to be peformed
v0.11.0 (April 28th 2022)
Breaking Changes:
- β (smithy-rs#1318) Bump MSRV from 1.56.1 to 1.58.1 per our "two versions behind" policy.
New this release:
- π (smithy-rs#1344, @ryansb) Suppress irrelevant
$HOMEexpansion warning when running in a Lambda Extension
Contributors
Thank you for your contributions! β€
0.10.1 (April 14th, 2022)
Breaking Changes:
- β (aws-sdk-rust#490) Update all SDK and runtime crates to edition 2021
New this release:
- (smithy-rs#1262, @liubin) Fix link to Developer Guide in crate's README.md
- π (smithy-rs#1271, @elrob) Treat blank environment variable credentials (
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY) as missing instead of attempting to use them to sign requests. - (aws-sdk-rust#479, smithy-rs#1296) Add support for configuring the session length in AssumeRoleProvider
- (smithy-rs#1296) Add caching to AssumeRoleProvider
- (smithy-rs#1300, @benesch) Add endpoint resolver to SdkConfig. This enables overriding the endpoint resolver for all services build from a single SdkConfig.
Contributors
Thank you for your contributions! β€
0.9.0 (March 17, 2022)
Breaking Changes:
-
β (aws-sdk-rust#406)
aws_types::config::Confighas been renamed toaws_types::sdk_config::SdkConfig. This is to better differentiate it
from service-specific configs likeaws_sdk_s3::Config. If you were creating shared configs with
aws_config::load_from_env(), then you don't have to do anything. If you were directly referring to a shared config,
update yourusestatements andstructnames.Before:
use aws_types::config::Config; fn main() { let config = Config::builder() // config builder methods... .build() .await; }
After:
// We re-export this type from the root module so it's easier to reference use aws_types::SdkConfig; fn main() { let config = SdkConfig::builder() // config builder methods... .build() .await; }
-
β (smithy-rs#724) Timeout configuration has been refactored a bit. If you were setting timeouts through environment variables or an AWS
profile, then you shouldn't need to change anything. Take note, however, that we don't currently support HTTP connect,
read, write, or TLS negotiation timeouts. If you try to set any of those timeouts in your profile or environment, we'll
log a warning explaining that those timeouts don't currently do anything.If you were using timeouts programmatically,
you'll need to update your code. In previous versions, timeout configuration was stored in a singleTimeoutConfig
struct. In this new version, timeouts have been broken up into several different config structs that are then collected
in atimeout::Configstruct. As an example, to get the API per-attempt timeout in previous versions you would access
it with<your TimeoutConfig>.api_call_attempt_timeout()and in this new version you would access it with
<your timeout::Config>.api.call_attempt_timeout(). We also made some unimplemented timeouts inaccessible in order to
avoid giving users the impression that setting them had an effect. We plan to re-introduce them once they're made
functional in a future update.
New this release:
- π (aws-sdk-rust#475, aws-sdk-rust#473) Enable presigning for S3 operations UploadPart and DeleteObject
0.8.0 (Februrary 24, 2022)
Breaking Changes:
- β (smithy-rs#1216)
aws-sigv4no longer skips thecontent-lengthandcontent-typeheaders when signing withSignatureLocation::QueryParams
New this release:
- π (smithy-rs#1220, aws-sdk-rust#462) Made it possible to change settings, such as load timeout, on the credential cache used by the
DefaultCredentialsChain. - π (smithy-rs#1197) Fixed a bug that caused clients to eventually stop retrying. The cross-request retry allowance wasn't being reimbursed upon receiving a successful response, so once this allowance reached zero, no further retries would ever be attempted.
- π (smithy-rs#1217, aws-sdk-rust#467)
ClientBuilderhelpersrustls()andnative_tls()now returnDynConnectorso that they once again work when constructing clients with custom middleware in the SDK. - π (smithy-rs#1216, aws-sdk-rust#466) Fixed a bug in S3 that prevented the
content-lengthandcontent-typeinputs from being included in a presigned request signature. With this fix, customers can generate presigned URLs that enforcecontent-lengthandcontent-typefor requests to S3.
v0.7.0 (February 18th, 2022)
0.7.0 (February 18th, 2022)
Breaking Changes:
-
β (smithy-rs#1144) The
aws_config::http_providermodule has been renamed toaws_config::http_credential_providerto better reflect its purpose. -
β (smithy-rs#1144) Some APIs required that timeout configuration be specified with an
aws_smithy_client::timeout::Settingsstruct while
others required anaws_smithy_types::timeout::TimeoutConfigstruct. Both were equivalent. Nowaws_smithy_types::timeout::TimeoutConfig
is used everywhere andaws_smithy_client::timeout::Settingshas been removed. Here's how to migrate code your code that
depended ontimeout::Settings:The old way:
let timeout = timeout::Settings::new() .with_connect_timeout(Duration::from_secs(1)) .with_read_timeout(Duration::from_secs(2));
The new way:
// This example is passing values, so they're wrapped in `Option::Some`. You can disable a timeout by passing `None`. let timeout = TimeoutConfig::new() .with_connect_timeout(Some(Duration::from_secs(1))) .with_read_timeout(Some(Duration::from_secs(2)));
-
β (smithy-rs#1144)
MakeConnectorFn,HttpConnector, andHttpSettingshave been moved fromaws_config::provider_configto
aws_smithy_client::http_connector. This is in preparation for a later update that will change how connectors are
created and configured.If you were using these structs/enums, you can migrate your old code by importing them from their new location.
-
β (smithy-rs#1144) Along with moving
HttpConnectortoaws_smithy_client, theHttpConnector::make_connectormethod has been renamed to
HttpConnector::connector.If you were using this method, you can migrate your old code by calling
connectorinstead ofmake_connector. -
β (smithy-rs#1085) Moved the following re-exports into a
typesmodule for all services:aws_sdk_<service>::AggregatedBytes->aws_sdk_<service>::types::AggregatedBytesaws_sdk_<service>::Blob->aws_sdk_<service>::types::Blobaws_sdk_<service>::ByteStream->aws_sdk_<service>::types::ByteStreamaws_sdk_<service>::DateTime->aws_sdk_<service>::types::DateTimeaws_sdk_<service>::SdkError->aws_sdk_<service>::types::SdkError
-
β (smithy-rs#1085)
AggregatedBytesandByteStreamare now only re-exported if the service has streaming operations,
andBlob/DateTimeare only re-exported if the service uses them. -
β (smithy-rs#1130) MSRV increased from
1.54to1.56.1per our 2-behind MSRV policy. -
β (smithy-rs#1132) Fluent clients for all services no longer have generics, and now use
DynConnectorandDynMiddlewareto allow
for connector/middleware customization. This should only break references to the client that specified generic types for it.If you customized the AWS client's connector or middleware with something like the following:
let client = aws_sdk_s3::Client::with_config( aws_sdk_s3::client::Builder::new() .connector(my_custom_connector) // Connector customization .middleware(my_custom_middleware) // Middleware customization .default_async_sleep() .build(), config );
Then you will need to wrap the custom connector or middleware in
DynConnector
and
DynMiddleware
respectively:let client = aws_sdk_s3::Client::with_config( aws_sdk_s3::client::Builder::new() .connector(DynConnector::new(my_custom_connector)) // Now with `DynConnector` .middleware(DynMiddleware::new(my_custom_middleware)) // Now with `DynMiddleware` .default_async_sleep() .build(), config );
If you had functions that took a generic connector, such as the following:
fn some_function<C, E>(conn: C) -> Result<()> where C: aws_smithy_client::bounds::SmithyConnector<Error = E> + Send + 'static, E: Into<aws_smithy_http::result::ConnectorError> { // ... }
Then the generics and trait bounds will no longer be necessary:
fn some_function(conn: DynConnector) -> Result<()> { // ... }
Similarly, functions that took a generic middleware can replace the generic with
DynMiddlewareand
remove their trait bounds.
New this release:
- π (aws-sdk-rust#443) The
ProfileFileRegionProviderwill now respect regions set in chained profiles - (smithy-rs#1144) Several modules defined in the
aws_configcrate that used to be declared within another module's file have been moved to their own files. The moved modules arests,connector, anddefault_providers. They still have the exact same import paths. - π (smithy-rs#1129) Fix some docs links not working because they were escaped when they shouldn't have been
- (smithy-rs#1085) The
ClientandConfigre-exports now have their documentation inlined in the service docs - π (smithy-rs#1180) Fixed example showing how to use hardcoded credentials in
aws-types
0.6.0 (January 26, 2022)
New this release:
- (aws-sdk-rust#423) Added
impl Into<http::request::Builder> for PresignedRequestand a conversion method for turningPresignedRequests intohttp::Requests. - (smithy-rs#1087) Convert several
infospans todebugin aws-config - (smithy-rs#1118) SDK examples now come from
awsdocs/aws-doc-sdk-examplesrather than fromsmithy-rs
0.5.2 (January 20th, 2022)
New this release:
- π (smithy-rs#1100) Internal: Update sync script to run gradle clean. This fixes an issue where codegen was not triggered when only properties changed.
v0.5.1 (January 19th, 2022)
New this release:
- π (smithy-rs#1089) Fix dev-dependency cycle between aws-sdk-sso and aws-config