<!-- Do not manually edit this file. Use the `changelogger` tool. -->
April 30th, 2024
================
**New this release:**
- :tada: (client, [smithy-rs#119](https://github.com/smithy-lang/smithy-rs/issues/119), [smithy-rs#3595](https://github.com/smithy-lang/smithy-rs/issues/3595), [smithy-rs#3593](https://github.com/smithy-lang/smithy-rs/issues/3593), [smithy-rs#3585](https://github.com/smithy-lang/smithy-rs/issues/3585), [smithy-rs#3571](https://github.com/smithy-lang/smithy-rs/issues/3571), [smithy-rs#3569](https://github.com/smithy-lang/smithy-rs/issues/3569)) Added support for waiters. Services that model waiters now have a `Waiters` trait that adds
some methods prefixed with `wait_until` to the existing clients.
For example, if there was a waiter modeled for "thing" that takes a "thing ID", using
that waiter would look as follows:
```rust
use my_generated_client::client::Waiters;
let result = client.wait_until_thing()
.thing_id("someId")
.wait(Duration::from_secs(120))
.await;
```
- :bug: (all, [smithy-rs#3603](https://github.com/smithy-lang/smithy-rs/issues/3603)) Fix event stream `:content-type` message headers for struct messages. Note: this was the `:content-type` header on individual event message frames that was incorrect, not the HTTP `content-type` header for the initial request.
message="SDK crates now set the `rust-version` property in their Cargo.toml files to indicate the minimum supported Rust version."
references=["smithy-rs#3601"]
meta={"breaking"=false,"tada"=true,"bug"=false}
author="jdisanti"
[[smithy-rs]]
message="Fix event stream `:content-type` message headers for struct messages. Note: this was the `:content-type` header on individual event message frames that was incorrect, not the HTTP `content-type` header for the initial request."
"message":"`aws_sigv4::http_request::settigns::SigningSettings` adds a new setting `session_token_name_override` to allow for an alternative session token name for SigV4 signing.",
"message":"`DefaultS3ExpressIdentityProvider` now uses `BehaviorVersion` threaded through from the outer S3 client, instead of always creating `BehaviorVersion::latest()` on the fly.",
"message":"Users may now set an endpoint URL from the env or profile file:\n\n- env: `AWS_ENDPOINT_URL=\"http://localhost\"`\n- profile: `endpoint_url = http://localhost`\n\nUsers may also ignore endpoint URLs sourced from the env and profile files:\n\n- env: `AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=\"true\"`\n- profile: `ignore_configured_endpoint_urls = true`\n",
"message":"Fix a bug where a `sigv4-s3express` auth scheme was incorrectly positioned at the front of `auth_scheme_options` and was used when no auth schemes were available for an endpoint.",
"message":"Users may now set service-specific configuration in the environment. For more information, see [this discussion topic](https://github.com/smithy-lang/smithy-rs/discussions/3537).",
"message":"Add FIPS support to our Hyper 1.0-based client. Customers can enable this mode by enabling the `crypto-aws-lc-fips` on `aws-smithy-experimental`. To construct a client using the new client, consult this [example](https://github.com/awslabs/aws-sdk-rust/blob/release-2024-03-29/sdk/s3/tests/hyper-10.rs).\n\nPlease note that support for Hyper 1.0 remains experimental.",
"message":"Fixes the identity resolver types (`credentials_provider()` and `token_provider()`) from `SdkConfig` to have\na consistent identity cache partition when re-used across different clients.\n",
"message":"Stalled stream protection now supports request upload streams. It is currently off by default, but will be enabled by default in a future release. To enable it now, you can do the following:\n\n```rust\nlet config = aws_config::defaults(BehaviorVersion::latest())\n .stalled_stream_protection(StalledStreamProtectionConfig::enabled().build())\n .load()\n .await;\n```\n",
"message":"Stalled stream protection on downloads will now only trigger if the upstream source is too slow. Previously, stalled stream protection could be erroneously triggered if the user was slowly consuming the stream slower than the minimum speed limit.",
"message":"Added support for waiters. Services that model waiters now have a `Waiters` trait that adds\nsome methods prefixed with `wait_until` to the existing clients. These can be used to, for example\nin S3, wait for a newly created bucket to be ready, or in EC2, to wait for a started instance to\nhave the status OK.\n\nUsing a waiter looks like the following example for EC2:\n```rust\nuse aws_sdk_ec2::client::Waiters;\n\nlet result = ec2_client.wait_until_instance_status_ok()\n .instance_ids(\"some-instance-id\")\n .wait(Duration::from_secs(300))\n .await;\n```\n",