Skip to content

March 30th, 2023

Pre-release
Pre-release
Compare
Choose a tag to compare
@aws-sdk-rust-ci aws-sdk-rust-ci released this 30 Mar 19:18
· 712 commits to main since this release

Breaking Changes:

  • βš πŸŽ‰ (smithy-rs#2467) Update MSRV to 1.66.1

  • ⚠ (smithy-rs#76, smithy-rs#2129) Request IDs can now be easily retrieved on successful responses. For example, with S3:

    // 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());
  • ⚠ (smithy-rs#76, smithy-rs#2129) Retrieving a request ID from errors now requires importing the RequestId trait. For example, with S3:

    use aws_sdk_s3::types::RequestId;
    println!("Request ID: {:?}", error.request_id());
  • ⚠ (smithy-rs#76, smithy-rs#2129) The message() and code() methods on errors have been moved into ProvideErrorMetadata trait. This trait will need to be imported to continue calling these.

  • ⚠ (smithy-rs#76, smithy-rs#2129, smithy-rs#2075) The *Error and *ErrorKind types have been combined to make error matching simpler.

    Example with S3

    Before:

    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:

    // 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()),
        },
    }
  • ⚠ (smithy-rs#76, smithy-rs#2129) aws_smithy_types::Error has been renamed to aws_smithy_types::error::ErrorMetadata.

  • ⚠ (smithy-rs#2433) The modules in the SDK crates have been reorganized. See the SDK Crate Reorganization Upgrade Guidance to see how to fix your code after this change.

  • ⚠ (aws-sdk-rust#160, smithy-rs#2445) 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.

  • ⚠ (smithy-rs#2390, smithy-rs#1784) Remove deprecated ResolveAwsEndpoint interfaces.
    For details see the longform changelog entry.

  • βš πŸŽ‰ (smithy-rs#2222, @Nugine) Upgrade Rust MSRV to 1.63.0

New this release:

  • πŸ›πŸŽ‰ (aws-sdk-rust#740) Fluent builder methods on the client are now marked as deprecated when the related operation is deprecated.

  • πŸŽ‰ (smithy-rs#2428, smithy-rs#2208) SdkError variants can now be constructed for easier unit testing.

  • πŸŽ‰ (aws-sdk-rust#753, smithy-rs#2451) Enable presigning for S3's HeadObject operation.

  • (smithy-rs#2437, aws-sdk-rust#600) 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}.

  • πŸ› (smithy-rs#2471, smithy-rs#2333, smithy-rs#2151) Default connector provided by aws-config now respects ConnectorSettings.

    Previously, it used the timeout settings provided by aws-config. A test from @Oliboy50 has been incorporated to verify this behavior.

    Behavior Change: Prior to this change, the Hyper client would be shared between all service clients. After this change, each service client will use its own Hyper Client.
    To revert to the previous behavior, set HttpConnector::Prebuilt on SdkConfig::http_connector.

  • (smithy-rs#2474) Increase Tokio version to 1.23.1 for all crates. This is to address RUSTSEC-2023-0001

  • πŸŽ‰ (smithy-rs#2258) Add static stability support to IMDS credentials provider. It does not alter common use cases for the provider, but allows the provider to serve expired credentials in case IMDS is unreachable. This allows requests to be dispatched to a target service with expired credentials. This, in turn, allows the target service to make the ultimate decision as to whether requests sent are valid or not.

  • (smithy-rs#2246) Provide a way to retrieve fallback credentials if a call to provide_credentials is interrupted. An interrupt can occur when a timeout future is raced against a future for provide_credentials, and the former wins the race. A new method, fallback_on_interrupt on the ProvideCredentials trait, can be used in that case. The following code snippet from LazyCredentialsCache::provide_cached_credentials has been updated like so:

    Before:

    let timeout_future = self.sleeper.sleep(self.load_timeout);
    // --snip--
    let future = Timeout::new(provider.provide_credentials(), timeout_future);
    let result = cache
        .get_or_load(|| {
            async move {
                let credentials = future.await.map_err(|_err| {
                    CredentialsError::provider_timed_out(load_timeout)
                })??;
                // --snip--
            }
        }).await;
    // --snip--

    After:

    let timeout_future = self.sleeper.sleep(self.load_timeout);
    // --snip--
    let future = Timeout::new(provider.provide_credentials(), timeout_future);
    let result = cache
        .get_or_load(|| {
            async move {
               let credentials = match future.await {
                    Ok(creds) => creds?,
                    Err(_err) => match provider.fallback_on_interrupt() { // can provide fallback credentials
                        Some(creds) => creds,
                        None => return Err(CredentialsError::provider_timed_out(load_timeout)),
                    }
                };
                // --snip--
            }
        }).await;
    // --snip--
  • πŸ› (smithy-rs#2271) Fix broken doc link for tokio_stream::Stream that is a re-export of futures_core::Stream.

  • πŸ› (smithy-rs#2261, aws-sdk-rust#720, @nipunn1313) Fix request canonicalization for HTTP requests with repeated headers (for example S3's GetObjectAttributes). Previously requests with repeated headers would fail with a 403 signature mismatch due to this bug.

  • (smithy-rs#2335) Adds jitter to LazyCredentialsCache. This allows credentials with the same expiry to expire at slightly different times, thereby preventing thundering herds.

  • πŸ› (aws-sdk-rust#736) Fix issue where clients using native-tls connector were prevented from making HTTPS requests.

Crate Versions

Click to expand to view crate versions...
Crate Version
aws-config 0.55.0
aws-credential-types 0.55.0
aws-endpoint 0.55.0
aws-http 0.55.0
aws-hyper 0.55.0
aws-sdk-accessanalyzer 0.25.0
aws-sdk-account 0.25.0
aws-sdk-acm 0.25.0
aws-sdk-acmpca 0.25.0
aws-sdk-alexaforbusiness 0.25.0
aws-sdk-amp 0.25.0
aws-sdk-amplify 0.25.0
aws-sdk-amplifybackend 0.25.0
aws-sdk-amplifyuibuilder 0.25.0
aws-sdk-apigateway 0.25.0
aws-sdk-apigatewaymanagement 0.25.0
aws-sdk-apigatewayv2 0.25.0
aws-sdk-appconfig 0.25.0
aws-sdk-appconfigdata 0.25.0
aws-sdk-appflow 0.25.0
aws-sdk-appintegrations 0.25.0
aws-sdk-applicationautoscaling 0.25.0
aws-sdk-applicationcostprofiler 0.25.0
aws-sdk-applicationdiscovery 0.25.0
aws-sdk-applicationinsights 0.25.0
aws-sdk-appmesh 0.25.0
aws-sdk-apprunner 0.25.0
aws-sdk-appstream 0.25.0
aws-sdk-appsync 0.25.0
aws-sdk-arczonalshift 0.3.0
aws-sdk-athena 0.25.0
aws-sdk-auditmanager 0.25.0
aws-sdk-autoscaling 0.25.0
aws-sdk-autoscalingplans 0.25.0
aws-sdk-backup 0.25.0
aws-sdk-backupgateway 0.25.0
aws-sdk-backupstorage 0.8.0
aws-sdk-batch 0.25.0
aws-sdk-billingconductor 0.25.0
aws-sdk-braket 0.25.0
aws-sdk-budgets 0.25.0
aws-sdk-chime 0.25.0
aws-sdk-chimesdkidentity 0.25.0
aws-sdk-chimesdkmediapipelines 0.25.0
aws-sdk-chimesdkmeetings 0.25.0
aws-sdk-chimesdkmessaging 0.25.0
aws-sdk-chimesdkvoice 0.3.0
aws-sdk-cleanrooms 0.2.0
aws-sdk-cloud9 0.25.0
aws-sdk-cloudcontrol 0.25.0
aws-sdk-clouddirectory 0.25.0
aws-sdk-cloudformation 0.25.0
aws-sdk-cloudfront 0.25.0
aws-sdk-cloudhsm 0.25.0
aws-sdk-cloudhsmv2 0.25.0
aws-sdk-cloudsearch 0.25.0
aws-sdk-cloudsearchdomain 0.25.0
aws-sdk-cloudtrail 0.25.0
aws-sdk-cloudwatch 0.25.0
aws-sdk-cloudwatchevents 0.25.0
aws-sdk-cloudwatchlogs 0.25.0
aws-sdk-codeartifact 0.25.0
aws-sdk-codebuild 0.25.0
aws-sdk-codecatalyst 0.3.0
aws-sdk-codecommit 0.25.0
aws-sdk-codedeploy 0.25.0
aws-sdk-codeguruprofiler 0.25.0
aws-sdk-codegurureviewer 0.25.0
aws-sdk-codepipeline 0.25.0
aws-sdk-codestar 0.25.0
aws-sdk-codestarconnections 0.25.0
aws-sdk-codestarnotifications 0.25.0
aws-sdk-cognitoidentity 0.25.0
aws-sdk-cognitoidentityprovider 0.25.0
aws-sdk-cognitosync 0.25.0
aws-sdk-comprehend 0.25.0
aws-sdk-comprehendmedical 0.25.0
aws-sdk-computeoptimizer 0.25.0
aws-sdk-config 0.25.0
aws-sdk-connect 0.25.0
aws-sdk-connectcampaigns 0.25.0
aws-sdk-connectcases 0.6.0
aws-sdk-connectcontactlens 0.25.0
aws-sdk-connectparticipant 0.25.0
aws-sdk-controltower 0.6.0
aws-sdk-costandusagereport 0.25.0
aws-sdk-costexplorer 0.25.0
aws-sdk-customerprofiles 0.25.0
aws-sdk-databasemigration 0.25.0
aws-sdk-databrew 0.25.0
aws-sdk-dataexchange 0.25.0
aws-sdk-datapipeline 0.25.0
aws-sdk-datasync 0.25.0
aws-sdk-dax 0.25.0
aws-sdk-detective 0.25.0
aws-sdk-devicefarm 0.25.0
aws-sdk-devopsguru 0.25.0
aws-sdk-directconnect 0.25.0
aws-sdk-directory 0.25.0
aws-sdk-dlm 0.25.0
aws-sdk-docdb 0.25.0
aws-sdk-docdbelastic 0.3.0
aws-sdk-drs 0.25.0
aws-sdk-dynamodb 0.25.0
aws-sdk-dynamodbstreams 0.25.0
aws-sdk-ebs 0.25.0
aws-sdk-ec2 0.25.0
aws-sdk-ec2instanceconnect 0.25.0
aws-sdk-ecr 0.25.0
aws-sdk-ecrpublic 0.25.0
aws-sdk-ecs 0.25.0
aws-sdk-efs 0.25.0
aws-sdk-eks 0.25.0
aws-sdk-elasticache 0.25.0
aws-sdk-elasticbeanstalk 0.25.0
aws-sdk-elasticinference 0.25.0
aws-sdk-elasticloadbalancing 0.25.0
aws-sdk-elasticloadbalancingv2 0.25.0
aws-sdk-elasticsearch 0.25.0
aws-sdk-elastictranscoder 0.25.0
aws-sdk-emr 0.25.0
aws-sdk-emrcontainers 0.25.0
aws-sdk-emrserverless 0.25.0
aws-sdk-eventbridge 0.25.0
aws-sdk-evidently 0.25.0
aws-sdk-finspace 0.25.0
aws-sdk-finspacedata 0.25.0
aws-sdk-firehose 0.25.0
aws-sdk-fis 0.25.0
aws-sdk-fms 0.25.0
aws-sdk-forecast 0.25.0
aws-sdk-forecastquery 0.25.0
aws-sdk-frauddetector 0.25.0
aws-sdk-fsx 0.25.0
aws-sdk-gamelift 0.25.0
aws-sdk-gamesparks 0.25.0
aws-sdk-glacier 0.25.0
aws-sdk-globalaccelerator 0.25.0
aws-sdk-glue 0.25.0
aws-sdk-grafana 0.25.0
aws-sdk-greengrass 0.25.0
aws-sdk-greengrassv2 0.25.0
aws-sdk-groundstation 0.25.0
aws-sdk-guardduty 0.25.0
aws-sdk-health 0.25.0
aws-sdk-healthlake 0.25.0
aws-sdk-honeycode 0.25.0
aws-sdk-iam 0.25.0
aws-sdk-identitystore 0.25.0
aws-sdk-imagebuilder 0.25.0
aws-sdk-inspector 0.25.0
aws-sdk-inspector2 0.25.0
aws-sdk-iot 0.25.0
aws-sdk-iot1clickdevices 0.25.0
aws-sdk-iot1clickprojects 0.25.0
aws-sdk-iotanalytics 0.25.0
aws-sdk-iotdataplane 0.25.0
aws-sdk-iotdeviceadvisor 0.25.0
aws-sdk-iotevents 0.25.0
aws-sdk-ioteventsdata 0.25.0
aws-sdk-iotfleethub 0.25.0
aws-sdk-iotfleetwise 0.6.0
aws-sdk-iotjobsdataplane 0.25.0
aws-sdk-iotroborunner 0.3.0
aws-sdk-iotsecuretunneling 0.25.0
aws-sdk-iotsitewise 0.25.0
aws-sdk-iotthingsgraph 0.25.0
aws-sdk-iottwinmaker 0.25.0
aws-sdk-iotwireless 0.25.0
aws-sdk-ivs 0.25.0
aws-sdk-ivschat 0.25.0
aws-sdk-kafka 0.25.0
aws-sdk-kafkaconnect 0.25.0
aws-sdk-kendra 0.25.0
aws-sdk-kendraranking 0.3.0
aws-sdk-keyspaces 0.25.0
aws-sdk-kinesis 0.25.0
aws-sdk-kinesisanalytics 0.25.0
aws-sdk-kinesisanalyticsv2 0.25.0
aws-sdk-kinesisvideo 0.25.0
aws-sdk-kinesisvideoarchivedmedia 0.25.0
aws-sdk-kinesisvideomedia 0.25.0
aws-sdk-kinesisvideosignaling 0.25.0
aws-sdk-kinesisvideowebrtcstorage 0.3.0
aws-sdk-kms 0.25.0
aws-sdk-lakeformation 0.25.0
aws-sdk-lambda 0.25.0
aws-sdk-lexmodelbuilding 0.25.0
aws-sdk-lexmodelsv2 0.25.0
aws-sdk-lexruntime 0.25.0
aws-sdk-lexruntimev2 0.25.0
aws-sdk-licensemanager 0.25.0
aws-sdk-licensemanagerlinuxsubscriptions 0.3.0
aws-sdk-licensemanagerusersubscriptions 0.9.0
aws-sdk-lightsail 0.25.0
aws-sdk-location 0.25.0
aws-sdk-lookoutequipment 0.25.0
aws-sdk-lookoutmetrics 0.25.0
aws-sdk-lookoutvision 0.25.0
aws-sdk-m2 0.25.0
aws-sdk-machinelearning 0.25.0
aws-sdk-macie 0.25.0
aws-sdk-macie2 0.25.0
aws-sdk-managedblockchain 0.25.0
aws-sdk-marketplacecatalog 0.25.0
aws-sdk-marketplacecommerceanalytics 0.25.0
aws-sdk-marketplaceentitlement 0.25.0
aws-sdk-marketplacemetering 0.25.0
aws-sdk-mediaconnect 0.25.0
aws-sdk-mediaconvert 0.25.0
aws-sdk-medialive 0.25.0
aws-sdk-mediapackage 0.25.0
aws-sdk-mediapackagevod 0.25.0
aws-sdk-mediastore 0.25.0
aws-sdk-mediastoredata 0.25.0
aws-sdk-mediatailor 0.25.0
aws-sdk-memorydb 0.25.0
aws-sdk-mgn 0.25.0
aws-sdk-migrationhub 0.25.0
aws-sdk-migrationhubconfig 0.25.0
aws-sdk-migrationhuborchestrator 0.6.0
aws-sdk-migrationhubrefactorspaces 0.25.0
aws-sdk-migrationhubstrategy 0.25.0
aws-sdk-mobile 0.25.0
aws-sdk-mq 0.25.0
aws-sdk-mturk 0.25.0
aws-sdk-mwaa 0.25.0
aws-sdk-neptune 0.25.0
aws-sdk-networkfirewall 0.25.0
aws-sdk-networkmanager 0.25.0
aws-sdk-nimble 0.25.0
aws-sdk-oam 0.3.0
aws-sdk-omics 0.3.0
aws-sdk-opensearch 0.25.0
aws-sdk-opensearchserverless 0.3.0
aws-sdk-opsworks 0.25.0
aws-sdk-opsworkscm 0.25.0
aws-sdk-organizations 0.25.0
aws-sdk-outposts 0.25.0
aws-sdk-panorama 0.25.0
aws-sdk-personalize 0.25.0
aws-sdk-personalizeevents 0.25.0
aws-sdk-personalizeruntime 0.25.0
aws-sdk-pi 0.25.0
aws-sdk-pinpoint 0.25.0
aws-sdk-pinpointemail 0.25.0
aws-sdk-pinpointsmsvoice 0.25.0
aws-sdk-pinpointsmsvoicev2 0.25.0
aws-sdk-pipes 0.3.0
aws-sdk-polly 0.25.0
aws-sdk-pricing 0.25.0
aws-sdk-privatenetworks 0.8.0
aws-sdk-proton 0.25.0
aws-sdk-qldb 0.25.0
aws-sdk-qldbsession 0.25.0
aws-sdk-quicksight 0.25.0
aws-sdk-ram 0.25.0
aws-sdk-rbin 0.25.0
aws-sdk-rds 0.25.0
aws-sdk-rdsdata 0.25.0
aws-sdk-redshift 0.25.0
aws-sdk-redshiftdata 0.25.0
aws-sdk-redshiftserverless 0.25.0
aws-sdk-rekognition 0.25.0
aws-sdk-resiliencehub 0.25.0
aws-sdk-resourceexplorer2 0.3.0
aws-sdk-resourcegroups 0.25.0
aws-sdk-resourcegroupstagging 0.25.0
aws-sdk-robomaker 0.25.0
aws-sdk-rolesanywhere 0.10.0
aws-sdk-route53 0.25.0
aws-sdk-route53domains 0.25.0
aws-sdk-route53recoverycluster 0.25.0
aws-sdk-route53recoverycontrolconfig 0.25.0
aws-sdk-route53recoveryreadiness 0.25.0
aws-sdk-route53resolver 0.25.0
aws-sdk-rum 0.25.0
aws-sdk-s3 0.25.0
aws-sdk-s3control 0.25.0
aws-sdk-s3outposts 0.25.0
aws-sdk-sagemaker 0.25.0
aws-sdk-sagemakera2iruntime 0.25.0
aws-sdk-sagemakeredge 0.25.0
aws-sdk-sagemakerfeaturestoreruntime 0.25.0
aws-sdk-sagemakergeospatial 0.3.0
aws-sdk-sagemakermetrics 0.3.0
aws-sdk-sagemakerruntime 0.25.0
aws-sdk-savingsplans 0.25.0
aws-sdk-scheduler 0.3.0
aws-sdk-schemas 0.25.0
aws-sdk-secretsmanager 0.25.0
aws-sdk-securityhub 0.25.0
aws-sdk-securitylake 0.3.0
aws-sdk-serverlessapplicationrepository 0.25.0
aws-sdk-servicecatalog 0.25.0
aws-sdk-servicecatalogappregistry 0.25.0
aws-sdk-servicediscovery 0.25.0
aws-sdk-servicequotas 0.25.0
aws-sdk-ses 0.25.0
aws-sdk-sesv2 0.25.0
aws-sdk-sfn 0.25.0
aws-sdk-shield 0.25.0
aws-sdk-signer 0.25.0
aws-sdk-simspaceweaver 0.3.0
aws-sdk-sms 0.25.0
aws-sdk-snowball 0.25.0
aws-sdk-snowdevicemanagement 0.25.0
aws-sdk-sns 0.25.0
aws-sdk-sqs 0.25.0
aws-sdk-ssm 0.25.0
aws-sdk-ssmcontacts 0.25.0
aws-sdk-ssmincidents 0.25.0
aws-sdk-ssmsap 0.3.0
aws-sdk-sso 0.25.0
aws-sdk-ssoadmin 0.25.0
aws-sdk-ssooidc 0.25.0
aws-sdk-storagegateway 0.25.0
aws-sdk-sts 0.25.0
aws-sdk-support 0.25.0
aws-sdk-supportapp 0.8.0
aws-sdk-swf 0.25.0
aws-sdk-synthetics 0.25.0
aws-sdk-textract 0.25.0
aws-sdk-transcribe 0.25.0
aws-sdk-transcribestreaming 0.25.0
aws-sdk-transfer 0.25.0
aws-sdk-translate 0.25.0
aws-sdk-voiceid 0.25.0
aws-sdk-waf 0.25.0
aws-sdk-wafregional 0.25.0
aws-sdk-wafv2 0.25.0
aws-sdk-wellarchitected 0.25.0
aws-sdk-wisdom 0.25.0
aws-sdk-workdocs 0.25.0
aws-sdk-worklink 0.25.0
aws-sdk-workmail 0.25.0
aws-sdk-workmailmessageflow 0.25.0
aws-sdk-workspaces 0.25.0
aws-sdk-workspacesweb 0.25.0
aws-sdk-xray 0.25.0
aws-sig-auth 0.55.0
aws-sigv4 0.55.0
aws-smithy-async 0.55.0
aws-smithy-checksums 0.55.0
aws-smithy-client 0.55.0
aws-smithy-eventstream 0.55.0
aws-smithy-http 0.55.0
aws-smithy-http-auth 0.55.0
aws-smithy-http-tower 0.55.0
aws-smithy-json 0.55.0
aws-smithy-protocol-test 0.55.0
aws-smithy-query 0.55.0
aws-smithy-types 0.55.0
aws-smithy-types-convert 0.55.0
aws-smithy-xml 0.55.0
aws-types 0.55.0