mirror of https://github.com/smithy-lang/smithy-rs
315 lines
12 KiB
TOML
315 lines
12 KiB
TOML
# Example changelog entries
|
|
# [[aws-sdk-rust]]
|
|
# message = "Fix typos in module documentation for generated crates"
|
|
# references = ["smithy-rs#920"]
|
|
# meta = { "breaking" = false, "tada" = false, "bug" = false }
|
|
# author = "rcoh"
|
|
#
|
|
# [[smithy-rs]]
|
|
# message = "Fix typos in module documentation for generated crates"
|
|
# references = ["smithy-rs#920"]
|
|
# meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client | server | all"}
|
|
# author = "rcoh"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = """Request IDs can now be easily retrieved on successful responses. For example, with S3:
|
|
```rust
|
|
// Import the trait to get the `request_id` method on outputs
|
|
use aws_sdk_s3::types::RequestId;
|
|
let output = client.list_buckets().send().await?;
|
|
println!("Request ID: {:?}", output.request_id());
|
|
```
|
|
"""
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = """Retrieving a request ID from errors now requires importing the `RequestId` trait. For example, with S3:
|
|
```rust
|
|
use aws_sdk_s3::types::RequestId;
|
|
println!("Request ID: {:?}", error.request_id());
|
|
```
|
|
"""
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "Generic clients no longer expose a `request_id()` function on errors. To get request ID functionality, use the SDK code generator."
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client"}
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "The `message()` and `code()` methods on errors have been moved into `ProvideErrorMetadata` trait. This trait will need to be imported to continue calling these."
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "The `message()` and `code()` methods on errors have been moved into `ProvideErrorMetadata` trait. This trait will need to be imported to continue calling these."
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client"}
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = """
|
|
The `*Error` and `*ErrorKind` types have been combined to make error matching simpler.
|
|
<details>
|
|
<summary>Example with S3</summary>
|
|
**Before:**
|
|
```rust
|
|
let result = client
|
|
.get_object()
|
|
.bucket(BUCKET_NAME)
|
|
.key("some-key")
|
|
.send()
|
|
.await;
|
|
match result {
|
|
Ok(_output) => { /* Do something with the output */ }
|
|
Err(err) => match err.into_service_error() {
|
|
GetObjectError { kind, .. } => match kind {
|
|
GetObjectErrorKind::InvalidObjectState(value) => println!("invalid object state: {:?}", value),
|
|
GetObjectErrorKind::NoSuchKey(_) => println!("object didn't exist"),
|
|
}
|
|
err @ GetObjectError { .. } if err.code() == Some("SomeUnmodeledError") => {}
|
|
err @ _ => return Err(err.into()),
|
|
},
|
|
}
|
|
```
|
|
**After:**
|
|
```rust
|
|
// Needed to access the `.code()` function on the error type:
|
|
use aws_sdk_s3::types::ProvideErrorMetadata;
|
|
let result = client
|
|
.get_object()
|
|
.bucket(BUCKET_NAME)
|
|
.key("some-key")
|
|
.send()
|
|
.await;
|
|
match result {
|
|
Ok(_output) => { /* Do something with the output */ }
|
|
Err(err) => match err.into_service_error() {
|
|
GetObjectError::InvalidObjectState(value) => {
|
|
println!("invalid object state: {:?}", value);
|
|
}
|
|
GetObjectError::NoSuchKey(_) => {
|
|
println!("object didn't exist");
|
|
}
|
|
err if err.code() == Some("SomeUnmodeledError") => {}
|
|
err @ _ => return Err(err.into()),
|
|
},
|
|
}
|
|
```
|
|
</details>
|
|
"""
|
|
references = ["smithy-rs#76", "smithy-rs#2129", "smithy-rs#2075"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = """
|
|
The `*Error` and `*ErrorKind` types have been combined to make error matching simpler.
|
|
<details>
|
|
<summary>Example with S3</summary>
|
|
**Before:**
|
|
```rust
|
|
let result = client
|
|
.get_object()
|
|
.bucket(BUCKET_NAME)
|
|
.key("some-key")
|
|
.send()
|
|
.await;
|
|
match result {
|
|
Ok(_output) => { /* Do something with the output */ }
|
|
Err(err) => match err.into_service_error() {
|
|
GetObjectError { kind, .. } => match kind {
|
|
GetObjectErrorKind::InvalidObjectState(value) => println!("invalid object state: {:?}", value),
|
|
GetObjectErrorKind::NoSuchKey(_) => println!("object didn't exist"),
|
|
}
|
|
err @ GetObjectError { .. } if err.code() == Some("SomeUnmodeledError") => {}
|
|
err @ _ => return Err(err.into()),
|
|
},
|
|
}
|
|
```
|
|
**After:**
|
|
```rust
|
|
// Needed to access the `.code()` function on the error type:
|
|
use aws_sdk_s3::types::ProvideErrorMetadata;
|
|
let result = client
|
|
.get_object()
|
|
.bucket(BUCKET_NAME)
|
|
.key("some-key")
|
|
.send()
|
|
.await;
|
|
match result {
|
|
Ok(_output) => { /* Do something with the output */ }
|
|
Err(err) => match err.into_service_error() {
|
|
GetObjectError::InvalidObjectState(value) => {
|
|
println!("invalid object state: {:?}", value);
|
|
}
|
|
GetObjectError::NoSuchKey(_) => {
|
|
println!("object didn't exist");
|
|
}
|
|
err if err.code() == Some("SomeUnmodeledError") => {}
|
|
err @ _ => return Err(err.into()),
|
|
},
|
|
}
|
|
```
|
|
</details>
|
|
"""
|
|
references = ["smithy-rs#76", "smithy-rs#2129", "smithy-rs#2075"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client"}
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "`aws_smithy_types::Error` has been renamed to `aws_smithy_types::error::ErrorMetadata`."
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client"}
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "`aws_smithy_types::Error` has been renamed to `aws_smithy_types::error::ErrorMetadata`."
|
|
references = ["smithy-rs#76", "smithy-rs#2129"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "Fluent builder methods on the client are now marked as deprecated when the related operation is deprecated."
|
|
references = ["aws-sdk-rust#740"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = true }
|
|
author = "Velfi"
|
|
|
|
[[smithy-rs]]
|
|
message = "Fluent builder methods on the client are now marked as deprecated when the related operation is deprecated."
|
|
references = ["aws-sdk-rust#740"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = true, "target" = "client"}
|
|
author = "Velfi"
|
|
|
|
[[smithy-rs]]
|
|
message = """
|
|
Add support for the `awsQueryCompatible` trait. This allows services to continue supporting a custom error code (via the `awsQueryError` trait) when the services migrate their protocol from `awsQuery` to `awsJson1_0` annotated with `awsQueryCompatible`.
|
|
<details>
|
|
<summary>Click to expand for more details...</summary>
|
|
|
|
After the migration, services will include an additional header `x-amzn-query-error` in their responses whose value is in the form of `<error code>;<error type>`. An example response looks something like
|
|
```
|
|
HTTP/1.1 400
|
|
x-amzn-query-error: AWS.SimpleQueueService.NonExistentQueue;Sender
|
|
Date: Wed, 08 Sep 2021 23:46:52 GMT
|
|
Content-Type: application/x-amz-json-1.0
|
|
Content-Length: 163
|
|
|
|
{
|
|
"__type": "com.amazonaws.sqs#QueueDoesNotExist",
|
|
"message": "some user-visible message"
|
|
}
|
|
```
|
|
`<error code>` is `AWS.SimpleQueueService.NonExistentQueue` and `<error type>` is `Sender`.
|
|
|
|
If an operation results in an error that causes a service to send back the response above, you can access `<error code>` and `<error type>` as follows:
|
|
```rust
|
|
match client.some_operation().send().await {
|
|
Ok(_) => { /* success */ }
|
|
Err(sdk_err) => {
|
|
let err = sdk_err.into_service_error();
|
|
assert_eq!(
|
|
error.meta().code(),
|
|
Some("AWS.SimpleQueueService.NonExistentQueue"),
|
|
);
|
|
assert_eq!(error.meta().extra("type"), Some("Sender"));
|
|
}
|
|
}
|
|
</details>
|
|
```
|
|
"""
|
|
references = ["smithy-rs#2398"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = false }
|
|
author = "ysaito1001"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "`SdkError` variants can now be constructed for easier unit testing."
|
|
references = ["smithy-rs#2428", "smithy-rs#2208"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "`SdkError` variants can now be constructed for easier unit testing."
|
|
references = ["smithy-rs#2428", "smithy-rs#2208"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = false, "target" = "client" }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "Remove unnecessary type parameter `B` from `Upgrade` service."
|
|
references = ["smithy-rs#2436"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "server" }
|
|
author = "hlbarber"
|
|
|
|
[[smithy-rs]]
|
|
message = "Fix `FilterByOperationName` plugin. This previous caused services with this applied to fail to compile due to mismatched bounds."
|
|
references = ["smithy-rs#2441"]
|
|
meta = { "breaking" = false, "tada" = false, "bug" = true, "target" = "server" }
|
|
author = "hlbarber"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "Add more client re-exports. Specifically, it re-exports `aws_smithy_http::body::SdkBody`, `aws_smithy_http::byte_stream::error::Error`, and `aws_smithy_http::operation::{Request, Response}`."
|
|
references = ["smithy-rs#2437", "aws-sdk-rust#600"]
|
|
meta = { "breaking" = false, "tada" = false, "bug" = false }
|
|
author = "ysaito1001"
|
|
|
|
[[smithy-rs]]
|
|
message = "Add more client re-exports. Specifically, it re-exports `aws_smithy_http::body::SdkBody`, `aws_smithy_http::byte_stream::error::Error`, and `aws_smithy_http::operation::{Request, Response}`."
|
|
references = ["smithy-rs#2437", "aws-sdk-rust#600"]
|
|
meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client" }
|
|
author = "ysaito1001"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "Enable presigning for S3's `HeadObject` operation."
|
|
references = ["aws-sdk-rust#753", "smithy-rs#2451"]
|
|
meta = { "breaking" = false, "tada" = true, "bug" = false }
|
|
author = "Velfi"
|
|
|
|
[[smithy-rs]]
|
|
message = "Smithy members named `send` were previously renamed to `send_value` at codegen time. These will now be called `send` in the generated code."
|
|
references = ["smithy-rs#2382"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = true, "target" = "server" }
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = "The modules in the SDK crates have been reorganized. See the [SDK Crate Reorganization Upgrade Guidance](https://github.com/awslabs/aws-sdk-rust/discussions/752) to see how to fix your code after this change."
|
|
references = ["smithy-rs#2433"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "jdisanti"
|
|
|
|
[[smithy-rs]]
|
|
message = "The modules in generated client crates have been reorganized. See the [Client Crate Reorganization Upgrade Guidance](https://github.com/awslabs/smithy-rs/discussions/2449) to see how to fix your code after this change."
|
|
references = ["smithy-rs#2448"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false, "target" = "client" }
|
|
author = "jdisanti"
|
|
|
|
[[aws-sdk-rust]]
|
|
message = """Reconnect on transient errors.
|
|
|
|
If a transient error (timeout, 500, 503, 503) is encountered, the connection will be evicted from the pool and will not
|
|
be reused. This is enabled by default for all AWS services. It can be disabled by setting `RetryConfig::with_reconnect_mode`
|
|
|
|
Although there is no API breakage from this change, it alters the client behavior in a way that may cause breakage for customers.
|
|
"""
|
|
references = ["aws-sdk-rust#160", "smithy-rs#2445"]
|
|
meta = { "breaking" = true, "tada" = false, "bug" = false }
|
|
author = "rcoh"
|
|
|
|
[[smithy-rs]]
|
|
message = """Reconnect on transient errors.
|
|
|
|
Note: **this behavior is disabled by default for generic clients**. It can be enabled with
|
|
`aws_smithy_client::Builder::reconnect_on_transient_errors`
|
|
|
|
If a transient error (timeout, 500, 503, 503) is encountered, the connection will be evicted from the pool and will not
|
|
be reused.
|
|
"""
|
|
references = ["aws-sdk-rust#160", "smithy-rs#2445"]
|
|
meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client" }
|
|
author = "rcoh"
|