September 21st, 2022
Pre-release
Pre-release
·
2019 commits
to main
since this release
Breaking Changes:
- ⚠ (smithy-rs#1603, aws-sdk-rust#586)
aws_config::RetryConfigno longer implementsDefault, and itsnewfunction has been replaced withstandard. - ⚠ (smithy-rs#1603, aws-sdk-rust#586) Direct configuration of
aws_config::SdkConfignow defaults to retries being disabled.
If you're usingaws_config::load_from_env()oraws_config::from_env()to configure
the SDK, then you are NOT affected by this change. If you useSdkConfig::builder()to
configure the SDK, then you ARE affected by this change and should set the retry config
on that builder. - ⚠ (smithy-rs#1603, aws-sdk-rust#586) Client creation now panics if retries or timeouts are enabled without an async sleep
implementation set on the SDK config.
If you're using the Tokio runtime and have thert-tokiofeature enabled (which is enabled by default),
then you shouldn't notice this change at all.
Otherwise, if using something other than Tokio as the async runtime, theAsyncSleeptrait must be implemented,
and that implementation given to the config builder via thesleep_implmethod. Alternatively, retry can be
explicitly turned off by setting the retry config toRetryConfig::disabled(), which will result in successful
client creation without an async sleep implementation. - ⚠ (smithy-rs#1715, smithy-rs#1717)
ClassifyResponsewas renamed toClassifyRetryand is no longer implemented for the unit type. - ⚠ (smithy-rs#1715, smithy-rs#1717) The
with_retry_policyandretry_policyfunctions onaws_smithy_http::operation::Operationhave been
renamed towith_retry_classifierandretry_classifierrespectively. Public memberretry_policyon
aws_smithy_http::operation::Partshas been renamed toretry_classifier.
New this release:
-
🎉 (smithy-rs#1647, smithy-rs#1112) Implemented customizable operations per RFC-0017.
Before this change, modifying operations before sending them required using lower-level APIs:
let input = SomeOperationInput::builder().some_value(5).build()?; let operation = { let op = input.make_operation(&service_config).await?; let (request, response) = op.into_request_response(); let request = request.augment(|req, _props| { req.headers_mut().insert( HeaderName::from_static("x-some-header"), HeaderValue::from_static("some-value") ); Result::<_, Infallible>::Ok(req) })?; Operation::from_parts(request, response) }; let response = smithy_client.call(operation).await?;
Now, users may easily modify operations before sending with the
customizemethod:let response = client.some_operation() .some_value(5) .customize() .await? .mutate_request(|mut req| { req.headers_mut().insert( HeaderName::from_static("x-some-header"), HeaderValue::from_static("some-value") ); }) .send() .await?;
-
🐛 (smithy-rs#966, smithy-rs#1718) The AWS STS SDK now automatically retries
IDPCommunicationErrorwhen callingAssumeRoleWithWebIdentity -
🐛 (aws-sdk-rust#303, smithy-rs#1717) The
SdkError::ResponseError, typically caused by a connection terminating before the full response is received, is now treated as a transient failure and retried.