Releases: awslabs/aws-sdk-rust
v0.0.25-alpha (November 11th, 2021)
No changes since last release except for version bumping since older versions of the AWS SDK were failing to compile with the 0.27.0-alpha.2
version chosen for some of the supporting crates.
v0.0.24-alpha (November 9th, 2021)
Breaking Changes
- Members named
builder
on model structs were renamed tobuilder_value
so that their accessors don't conflict with the existingbuilder()
methods (smithy-rs#842)
New this week
- Fix epoch seconds date-time parsing bug in
aws-smithy-types
(smithy-rs#834) - Omit trailing zeros from fraction when formatting HTTP dates in
aws-smithy-types
(smithy-rs#834) - Moved examples into repository root (aws-sdk-rust#181, smithy-rs#843)
- Model structs now have accessor methods for their members. We recommend updating code to use accessors instead of public fields. A future release will deprecate the public fields before they are made private. (smithy-rs#842)
- π Fix bug that caused signing to fail for requests where the body length was <=9. (smithy-rs#845)
v0.0.23-alpha (November 5th, 2021)
To upgrade to the new version of the SDK, update your version to 0.0.23-alpha
:
[dependencies]
aws-sdk-s3 = "0.0.23-alpha"
New this week
- π The SDK is available on crates.io! This also means that generated docs are now searchable and hosted on https://docs.rs.
- π Add support for AWS Glacier (smithy-rs#801)
- π Add support for AWS Panorama
- π Fix
native-tls
feature inaws-config
(aws-sdk-rust#265, smithy-rs#803) - π Add example to aws-sig-auth for generating an IAM Token for RDS (smithy-rs#811, aws-sdk-rust#147)
- π
hyper::Error(IncompleteMessage)
will now be retried (smithy-rs#815) - π Fix generated docs on unions like
dynamodb::AttributeValue
. (smithy-rs#826)
Breaking Changes
<operation>.make_operation(&config)
is now anasync
function for all operations. Code should be updated to call.await
. This will only impact users using the low-level API. (smithy-rs#797)- π S3 request metadata signing now correctly trims headers fixing problems like this (smithy-rs#761)
v0.0.22-alpha (October 20th, 2021)
Breaking Changes
CredentialsError
variants became non-exhaustive & now have struct bodies. This makes them impossible to construct directly outside of theaws_types
crate. In order to construct credentials errors, new methods have been added for each variant. Instead ofCredentialsError::Unhandled(...)
, you should instead useCredentialsError::unhandled
. Matching methods exist for all variants. If you match on specific variants, you will also need to update your code to include..
. (#781)- The default credentials chain now returns
CredentialsError::CredentialsNotLoaded
instead ofProviderError
when no credentials providers are configured. β οΈ All Smithy runtime crates have been renamed to have anaws-
prefix. This may require code changes:- Cargo.toml changes:
smithy-async
->aws-smithy-async
smithy-client
->aws-smithy-client
smithy-eventstream
->aws-smithy-eventstream
smithy-http
->aws-smithy-http
smithy-http-tower
->aws-smithy-http-tower
smithy-json
->aws-smithy-json
smithy-protocol-test
->aws-smithy-protocol-test
smithy-query
->aws-smithy-query
smithy-types
->aws-smithy-types
smithy-xml
->aws-smithy-xml
- Rust
use
statement changes:smithy_async
->aws_smithy_async
smithy_client
->aws_smithy_client
smithy_eventstream
->aws_smithy_eventstream
smithy_http
->aws_smithy_http
smithy_http_tower
->aws_smithy_http_tower
smithy_json
->aws_smithy_json
smithy_protocol_test
->aws_smithy_protocol_test
smithy_query
->aws_smithy_query
smithy_types
->aws_smithy_types
smithy_xml
->aws_smithy_xml
- Cargo.toml changes:
New this week
- Moved the contents of
aws-auth
into theaws-http
runtime crate (smithy-rs#783) - Fix instances where docs were missing in generated services and add
#[warn_missing_docs]
(smithy-rs#779) - Add tracing output for resolved AWS endpoint (smithy-rs#784)
- Update AWS service models (smithy-rs#790)
- Add support for the following Glacier customizations:
- Set the ApiVersion header (smithy-rs#138, #787)
v0.0.21-alpha (October 18th, 2021)
v0.0.21-alpha (October 15th, 2021)
New this week
- Prepare crate manifests for publishing to crates.io (smithy-rs#755)
- Add support for IAM Roles for tasks credential provider (smithy-rs#765, aws-sdk-rust#123)
- All service crates now have generated README files (smithy-rs#766)
- Update AWS service models (smithy-rs#772)
- π Add support for Amazon Managed Grafana (smithy-rs#772)
- π Make retry behavior configurable
- With env vars
AWS_MAX_ATTEMPTS
andAWS_RETRY_MODE
- With
~/.aws/config
settingsmax_attempts
andretry_mode
- By calling the
with_retry_config
method on aConfig
and passing in aRetryConfig
- Only the
Standard
retry mode is currently implemented.Adaptive
retry mode will be implemented at a later
date. - For more info, see the AWS Reference pages on configuring these settings:
- With env vars
v0.0.20-alpha (October 7th, 2021)
v0.0.20-alpha (October, 7, 2021)
Breaking changes
β οΈ MSRV increased from 1.52.1 to 1.53.0 per our 3-behind MSRV policy.SmithyConnector
andDynConnector
now returnConnectorError
instead ofBox<dyn Error>
. If you have written a custom connector, it will need to be updated to return the new error type. (#744)- The
DispatchError
variant ofSdkError
now containsConnectorError
instead ofBox<dyn Error>
(#744).
New This Week
- π Add presigned request support and examples for S3 GetObject and PutObject (smithy-rs#731, aws-sdk-rust#139)
- π Add presigned request support and example for Polly SynthesizeSpeech (smithy-rs#735, aws-sdk-rust#139)
- Add connect & HTTP read timeouts to IMDS, defaulting to 1 second
- IO and timeout errors from Hyper can now be retried (#744)
- π Fix error when receiving
Cont
event from S3 SelectObjectContent (smithy-rs#736) - π Fix bug in event stream receiver that could cause the last events in the response stream to be lost when using S3 SelectObjectContent (smithy-rs#736)
- Updated EC2 code examples to include readme; refactored operations from main into separate functions.
- Updated Transcribe code example to take an audio file as a command-line option and added readme.
- Refactored API Gateway code example by moving operation out of main and into a separate function; added readme.
- Updated Auto Scaling code example to move operation from main to separate function; added readme.
- Updated AWS Config code examples to include a readme; added command-line options; added DeleteConfigurationRecorder, DeleteDeliveryChannel, ListConfigurationRecorders, ListDeliveryChannels, ListResources, ShowResourceHistory, and EnableConfig code examples.
- π Add support for 6 new AWS services:
- Wisdom
- VoiceId
- Account
- KafkaConnect
- OpenSearch
- CloudControl
Contributors
Thank you!! β€οΈ
v0.0.19-alpha (September 24th, 2021)
New This Week
- π IMDS support in the default credential provider chain (aws-sdk-rust#97)
- π Add
sts::AssumeRoleProvider
toaws-config
. This enables customers to invoke STS directly, instead of using it via~/.aws/config
. (smithy-rs#703, aws-sdk-rust#3) - Add IMDS client to
aws-config
(smithy-rs#701) - Add IMDS credential provider to
aws-config
(smithy-rs#709) - Add IMDS region provider to
aws-config
(smithy-rs#715, aws-sdk-rust#97) - Add query param signing to the
aws-sigv4
crate (smithy-rs#707) - π Update event stream
Receiver
s to beSend
(smithy-rs#702, aws-sdk-rust#224) - π Fix panic when signing non-ASCII header values (smithy-rs#708, aws-sdk-rust#226)
Contributions
Thank you for your contributions! β€οΈ
September 14th, 2021: Bug fixes
v0.0.18-alpha (September 14th, 2021)
New This Week
- π Add support for OpenSearch service & bring in other model updates (smithy-rs#698)
- Cleanup docs in aws-config (smithy-rs#693)
- π Fixes issue where Content-Length header could be duplicated leading to signing failure (#220, smithy-rs#697)
v0.0.17-alpha (September 2nd, 2021)
This release adds support for three commonly requested features:
- More powerful credential chain
- Support for constructing multiple clients from the same configuration
- Support for Transcribe streaming and S3 Select
In addition, this overhauls client configuration which lead to a number of breaking changes. Detailed changes are inline.
Current Credential Provider Support:
- Environment variables
- Web Identity Token Credentials
- Profile file support (partial)
- Credentials
- SSO
- ECS Credential source
- IMDS credential source
- Assume role from source profile
- Static credentials source profile
- WebTokenIdentity provider
- Region
- Credentials
- IMDS
- ECS
Upgrade Guide
If you use <sdk>::Client::from_env
from_env
loaded region & credentials from environment variables only. Default sources have been removed from the generated
SDK clients and moved to the aws-config
package. Note that the aws-config
package default chain adds support for
profile file and web identity token profiles.
- Add a dependency on
aws-config
:[dependencies] aws-config = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.17-alpha" }
- Update your client creation code:
// `shared_config` can be used to construct multiple different service clients! let shared_config = aws_config::load_from_env().await; // before: <service>::Client::from_env(); let client = <service>::Client::new(&shared_config)
If you used <client>::Config::builder()
Config::build()
has been modified to not fallback to a default provider. Instead, use aws-config
to load and modify
the default chain. Note that when you switch to aws-config
, support for profile files and web identity tokens will be added.
-
Add a dependency on
aws-config
:[dependencies] aws-config = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.17-alpha" }
-
Update your client creation code:
fn before() { let region = aws_types::region::ChainProvider::first_try(<1 provider>).or_default_provider(); let config = <service>::Config::builder().region(region).build(); let client = <service>::Client::from_conf(&config); } async fn after() { use aws_config::meta::region::RegionProviderChain; let region_provider = RegionProviderChain::first_try(<1 provider>).or_default_provider(); // `shared_config` can be used to construct multiple different service clients! let shared_config = aws_config::from_env().region(region_provider).load().await; let client = <service>::Client::new(&shared_config) }
If you used aws-auth-providers
All credential providers that were in aws-auth-providers
have been moved to aws-config
. Unless you have a specific use case
for a specific credential provider, you should use the default provider chain:
let shared_config = aws_config::load_from_env().await;
let client = <service>::Client::new(&shared_config);
If you maintain your own credential provider
AsyncProvideCredentials
has been renamed to ProvideCredentials
. The trait has been moved from aws-auth
to aws-types
.
The original ProvideCredentials
trait has been removed. The return type has been changed to by a custom future.
For synchronous use cases:
use aws_types::credentials::{ProvideCredentials, future};
#[derive(Debug)]
struct CustomCreds;
impl ProvideCredentials for CustomCreds {
fn provide_credentials<'a>(&'a self) -> future::ProvideCredentials<'a>
where
Self: 'a,
{
// if your credentials are synchronous, use `::ready`
// if your credentials are loaded asynchronously, use `::new`
future::ProvideCredentials::ready(todo!()) // your credentials go here
}
}
For asynchronous use cases:
use aws_types::credentials::{ProvideCredentials, future, Result};
#[derive(Debug)]
struct CustomAsyncCreds;
impl CustomAsyncCreds {
async fn load_credentials(&self) -> Result {
Ok(Credentials::from_keys("my creds...", "secret", None))
}
}
impl ProvideCredentials for CustomCreds {
fn provide_credentials<'a>(&'a self) -> future::ProvideCredentials<'a>
where
Self: 'a,
{
future::ProvideCredentials::new(self.load_credentials())
}
}
Changes
Breaking Changes
-
Credential providers from
aws-auth-providers
have been moved toaws-config
(smithy-rs#678) -
AsyncProvideCredentials
has been renamed toProvideCredentials
. The original non-async provide credentials has been
removed. See the migration guide above. -
<sevicename>::from_env()
has been removed (#675). A drop-in replacement is available:- Add a dependency on
aws-config
:[dependencies] aws-config = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.17-alpha" }
- Update your client creation code:
let client = <service>>::Client::new(&aws_config::load_from_env().await)
- Add a dependency on
-
ProvideRegion
has been moved toaws_config::meta::region::ProvideRegion
. (smithy-rs#675) -
aws_types::region::ChainProvider
has been moved toaws_config::meta::region::RegionProviderChain
(smithy-rs#675). -
ProvideRegion
is now asynchronous. Code that calledprovider.region()
must be changed toprovider.region().await
. -
<awsservice>::Config::builder()
will not load a default region. To preserve previous behavior:- Add a dependency on
aws-config
:[dependencies] aws-config = { git = "https://github.com/awslabs/aws-sdk-rust", tag = "v0.0.17-alpha" }
-
let shared_config = aws_config::load_from_env().await; let config = <service>::config::Builder::from(&shared_config).<other builder modifications>.build();
- Add a dependency on
New this week
- π Add profile file provider for region (smithy-rs#594, smithy-rs#682)
- π Add support for shared configuration between multiple services (smithy-rs#673)
- π Add support for Transcribe
StartStreamTranscription
and S3SelectObjectContent
operations (smithy-rs#667) - π Add support for new MemoryDB service (smithy-rs#677)
- Improve documentation on collection-aware builders (smithy-rs#664)
- Update AWS SDK models (smithy-rs#677)
- π Fix sigv4 signing when request ALPN negotiates to HTTP/2. (smithy-rs#674)
- π Fix integer size on S3
Size
(smithy-rs#679, #209) - π Fix MediaLive response parsing issue (smithy-rs#683, #212)
August 19th, 2021
New This Week
- π Add Chime Identity, Chime Messaging, and Snow Device Management support (smithy-rs#657)
- π Add profile file credential provider implementation. This implementation currently does not support credential sources for assume role providers other than environment variables. (smithy-rs#640)
- π Add support for WebIdentityToken providers via profile & environment variables. (smithy-rs#654)
- π Fix name collision that occurred when a model had both a union and a structure named
Result
(smithy-rs#643) - π Fix STS Assume Role with WebIdentity & Assume role with SAML to support clients with no credentials provided (smithy-rs#652)
- Update AWS SDK models (smithy-rs#657)
- Add initial implementation of a default provider chain. (smithy-rs#650)