AWS SDK

AWS SDK

rev. 4b3027207f9561924d49b49e22604a1be1cbe804 (ignoring whitespace)

Files changed:

tmp-codegen-diff/aws-sdk/Cargo.lock

@@ -336,336 +447,447 @@
  356    356   
 "tokio",
  357    357   
 "tracing",
  358    358   
 "tracing-subscriber",
  359    359   
 "tracing-test",
  360    360   
 "url",
  361    361   
 "zeroize",
  362    362   
]
  363    363   
  364    364   
[[package]]
  365    365   
name = "aws-credential-types"
  366         -
version = "1.2.9"
         366  +
version = "1.2.8"
  367    367   
dependencies = [
  368    368   
 "async-trait",
  369    369   
 "aws-smithy-async",
  370    370   
 "aws-smithy-runtime-api",
  371    371   
 "aws-smithy-types",
  372    372   
 "tokio",
  373    373   
 "zeroize",
  374    374   
]
  375    375   
  376    376   
[[package]]
  377    377   
name = "aws-lc-fips-sys"
  378    378   
version = "0.13.9"
  379    379   
source = "registry+https://github.com/rust-lang/crates.io-index"
  380    380   
checksum = "ede71ad84efb06d748d9af3bc500b14957a96282a69a6833b1420dcacb411cc3"
  381    381   
dependencies = [
  382    382   
 "bindgen",
  383    383   
 "cc",
  384    384   
 "cmake",
  385    385   
 "dunce",
  386    386   
 "fs_extra",
  387    387   
 "regex",
  388    388   
]
  389    389   
  390    390   
[[package]]
  391    391   
name = "aws-lc-rs"
  392    392   
version = "1.14.1"
  393    393   
source = "registry+https://github.com/rust-lang/crates.io-index"
  394    394   
checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d"
  395    395   
dependencies = [
  396    396   
 "aws-lc-fips-sys",
  397    397   
 "aws-lc-sys",
  398    398   
 "untrusted 0.7.1",
  399    399   
 "zeroize",
  400    400   
]
  401    401   
  402    402   
[[package]]
  403    403   
name = "aws-lc-sys"
  404    404   
version = "0.32.3"
  405    405   
source = "registry+https://github.com/rust-lang/crates.io-index"
  406    406   
checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c"
  407    407   
dependencies = [
  408    408   
 "bindgen",
  409    409   
 "cc",
  410    410   
 "cmake",
  411    411   
 "dunce",
  412    412   
 "fs_extra",
  413    413   
]
  414    414   
  415    415   
[[package]]
  416    416   
name = "aws-runtime"
  417         -
version = "1.5.14"
         417  +
version = "1.5.13"
  418    418   
dependencies = [
  419    419   
 "arbitrary",
  420    420   
 "aws-credential-types",
  421    421   
 "aws-sigv4",
  422    422   
 "aws-smithy-async",
  423    423   
 "aws-smithy-eventstream",
  424    424   
 "aws-smithy-http",
  425    425   
 "aws-smithy-protocol-test",
  426    426   
 "aws-smithy-runtime",
  427    427   
 "aws-smithy-runtime-api",
@@ -1203,1203 +1263,1263 @@
 1223   1223   
 "http-body 1.0.1",
 1224   1224   
 "http-body-util",
 1225   1225   
 "hyper 0.14.32",
 1226   1226   
 "hyper 1.7.0",
 1227   1227   
 "hyper-rustls 0.24.2",
 1228   1228   
 "hyper-rustls 0.27.7",
 1229   1229   
 "hyper-util",
 1230   1230   
 "indexmap",
 1231   1231   
 "pin-project-lite",
 1232   1232   
 "rustls 0.21.12",
 1233         -
 "rustls 0.23.35",
        1233  +
 "rustls 0.23.34",
 1234   1234   
 "rustls-native-certs 0.8.2",
 1235   1235   
 "rustls-pemfile 2.2.0",
 1236   1236   
 "rustls-pki-types",
 1237   1237   
 "s2n-tls",
 1238   1238   
 "s2n-tls-hyper",
 1239   1239   
 "s2n-tls-tokio",
 1240   1240   
 "serde",
 1241   1241   
 "serde_json",
 1242   1242   
 "serial_test",
 1243   1243   
 "tokio",
@@ -1592,1592 +1654,1654 @@
 1612   1612   
 "num-bigint",
 1613   1613   
 "num-rational",
 1614   1614   
 "num-traits",
 1615   1615   
 "separator",
 1616   1616   
 "url",
 1617   1617   
 "uuid",
 1618   1618   
]
 1619   1619   
 1620   1620   
[[package]]
 1621   1621   
name = "cc"
 1622         -
version = "1.2.44"
        1622  +
version = "1.2.43"
 1623   1623   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1624         -
checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3"
        1624  +
checksum = "739eb0f94557554b3ca9a86d2d37bebd49c5e6d0c1d2bda35ba5bdac830befc2"
 1625   1625   
dependencies = [
 1626   1626   
 "find-msvc-tools",
 1627   1627   
 "jobserver",
 1628   1628   
 "libc",
 1629   1629   
 "shlex",
 1630   1630   
]
 1631   1631   
 1632   1632   
[[package]]
 1633   1633   
name = "cexpr"
 1634   1634   
version = "0.6.0"
@@ -1666,1666 +1737,1737 @@
 1686   1686   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1687   1687   
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
 1688   1688   
dependencies = [
 1689   1689   
 "glob",
 1690   1690   
 "libc",
 1691   1691   
 "libloading",
 1692   1692   
]
 1693   1693   
 1694   1694   
[[package]]
 1695   1695   
name = "clap"
 1696         -
version = "4.5.51"
        1696  +
version = "4.5.50"
 1697   1697   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1698         -
checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5"
        1698  +
checksum = "0c2cfd7bf8a6017ddaa4e32ffe7403d547790db06bd171c1c53926faab501623"
 1699   1699   
dependencies = [
 1700   1700   
 "clap_builder",
 1701   1701   
]
 1702   1702   
 1703   1703   
[[package]]
 1704   1704   
name = "clap_builder"
 1705         -
version = "4.5.51"
        1705  +
version = "4.5.50"
 1706   1706   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1707         -
checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a"
        1707  +
checksum = "0a4c05b9e80c5ccd3a7ef080ad7b6ba7d6fc00a985b8b157197075677c82c7a0"
 1708   1708   
dependencies = [
 1709   1709   
 "anstyle",
 1710   1710   
 "clap_lex",
 1711   1711   
]
 1712   1712   
 1713   1713   
[[package]]
 1714   1714   
name = "clap_lex"
 1715   1715   
version = "0.7.6"
 1716   1716   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1717   1717   
checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
@@ -2643,2643 +2703,2703 @@
 2663   2663   
 2664   2664   
[[package]]
 2665   2665   
name = "hyper-rustls"
 2666   2666   
version = "0.27.7"
 2667   2667   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2668   2668   
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
 2669   2669   
dependencies = [
 2670   2670   
 "http 1.3.1",
 2671   2671   
 "hyper 1.7.0",
 2672   2672   
 "hyper-util",
 2673         -
 "rustls 0.23.35",
        2673  +
 "rustls 0.23.34",
 2674   2674   
 "rustls-native-certs 0.8.2",
 2675   2675   
 "rustls-pki-types",
 2676   2676   
 "tokio",
 2677   2677   
 "tokio-rustls 0.26.4",
 2678   2678   
 "tower-service",
 2679   2679   
]
 2680   2680   
 2681   2681   
[[package]]
 2682   2682   
name = "hyper-util"
 2683   2683   
version = "0.1.17"
@@ -3701,3701 +3763,3763 @@
 3721   3721   
checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
 3722   3722   
dependencies = [
 3723   3723   
 "log",
 3724   3724   
 "ring",
 3725   3725   
 "rustls-webpki 0.101.7",
 3726   3726   
 "sct",
 3727   3727   
]
 3728   3728   
 3729   3729   
[[package]]
 3730   3730   
name = "rustls"
 3731         -
version = "0.23.35"
        3731  +
version = "0.23.34"
 3732   3732   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3733         -
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
        3733  +
checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7"
 3734   3734   
dependencies = [
 3735   3735   
 "aws-lc-rs",
 3736   3736   
 "log",
 3737   3737   
 "once_cell",
 3738   3738   
 "ring",
 3739   3739   
 "rustls-pki-types",
 3740   3740   
 "rustls-webpki 0.103.8",
 3741   3741   
 "subtle",
 3742   3742   
 "zeroize",
 3743   3743   
]
@@ -4413,4413 +4505,4505 @@
 4433   4433   
 "rustls 0.21.12",
 4434   4434   
 "tokio",
 4435   4435   
]
 4436   4436   
 4437   4437   
[[package]]
 4438   4438   
name = "tokio-rustls"
 4439   4439   
version = "0.26.4"
 4440   4440   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4441   4441   
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
 4442   4442   
dependencies = [
 4443         -
 "rustls 0.23.35",
        4443  +
 "rustls 0.23.34",
 4444   4444   
 "tokio",
 4445   4445   
]
 4446   4446   
 4447   4447   
[[package]]
 4448   4448   
name = "tokio-stream"
 4449   4449   
version = "0.1.17"
 4450   4450   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4451   4451   
checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
 4452   4452   
dependencies = [
 4453   4453   
 "futures-core",
 4454   4454   
 "pin-project-lite",
 4455   4455   
 "tokio",
 4456   4456   
]
 4457   4457   
 4458   4458   
[[package]]
 4459   4459   
name = "tokio-test"
 4460   4460   
version = "0.4.4"
 4461   4461   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4462   4462   
checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7"
 4463   4463   
dependencies = [
 4464   4464   
 "async-stream",
 4465   4465   
 "bytes",
 4466   4466   
 "futures-core",
 4467   4467   
 "tokio",
 4468   4468   
 "tokio-stream",
 4469   4469   
]
 4470   4470   
 4471   4471   
[[package]]
 4472   4472   
name = "tokio-util"
 4473         -
version = "0.7.17"
        4473  +
version = "0.7.16"
 4474   4474   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4475         -
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
        4475  +
checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
 4476   4476   
dependencies = [
 4477   4477   
 "bytes",
 4478   4478   
 "futures-core",
 4479   4479   
 "futures-sink",
 4480   4480   
 "pin-project-lite",
 4481   4481   
 "tokio",
 4482   4482   
]
 4483   4483   
 4484   4484   
[[package]]
 4485   4485   
name = "tower"
@@ -4603,4603 +4665,4665 @@
 4623   4623   
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
 4624   4624   
 4625   4625   
[[package]]
 4626   4626   
name = "unarray"
 4627   4627   
version = "0.1.4"
 4628   4628   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4629   4629   
checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
 4630   4630   
 4631   4631   
[[package]]
 4632   4632   
name = "unicode-ident"
 4633         -
version = "1.0.22"
        4633  +
version = "1.0.20"
 4634   4634   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4635         -
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
        4635  +
checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06"
 4636   4636   
 4637   4637   
[[package]]
 4638   4638   
name = "unicode-segmentation"
 4639   4639   
version = "1.12.0"
 4640   4640   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4641   4641   
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
 4642   4642   
 4643   4643   
[[package]]
 4644   4644   
name = "untrusted"
 4645   4645   
version = "0.7.1"

tmp-codegen-diff/aws-sdk/sdk/aws-config/Cargo.toml

@@ -39,39 +99,99 @@
   59     59   
path = "../aws-smithy-http"
   60     60   
version = "0.62.5"
   61     61   
   62     62   
[dependencies.aws-smithy-json]
   63     63   
path = "../aws-smithy-json"
   64     64   
version = "0.61.7"
   65     65   
   66     66   
[dependencies.aws-smithy-runtime]
   67     67   
path = "../aws-smithy-runtime"
   68     68   
features = ["client"]
   69         -
version = "1.9.4"
          69  +
version = "1.9.5"
   70     70   
   71     71   
[dependencies.aws-smithy-runtime-api]
   72     72   
path = "../aws-smithy-runtime-api"
   73     73   
features = ["client"]
   74     74   
version = "1.9.2"
   75     75   
   76     76   
[dependencies.aws-smithy-types]
   77     77   
path = "../aws-smithy-types"
   78     78   
version = "1.3.4"
   79     79   
@@ -106,106 +157,157 @@
  126    126   
version = "1.2.6"
  127    127   
  128    128   
[dev-dependencies.aws-smithy-http-client]
  129    129   
path = "../aws-smithy-http-client"
  130    130   
features = ["default-client", "test-util"]
  131    131   
version = "1.1.4"
  132    132   
  133    133   
[dev-dependencies.aws-smithy-runtime]
  134    134   
path = "../aws-smithy-runtime"
  135    135   
features = ["client", "test-util"]
  136         -
version = "1.9.4"
         136  +
version = "1.9.5"
  137    137   
  138    138   
[dev-dependencies.aws-smithy-runtime-api]
  139    139   
path = "../aws-smithy-runtime-api"
  140    140   
features = ["test-util"]
  141    141   
version = "1.9.2"
  142    142   
  143    143   
[dev-dependencies.futures-util]
  144    144   
version = "0.3.29"
  145    145   
default-features = false
  146    146   

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/Cargo.toml

@@ -25,25 +88,92 @@
   45     45   
   46     46   
[dependencies.aws-smithy-eventstream]
   47     47   
path = "../aws-smithy-eventstream"
   48     48   
optional = true
   49     49   
version = "0.60.13"
   50     50   
   51     51   
[dependencies.aws-smithy-http]
   52     52   
path = "../aws-smithy-http"
   53     53   
version = "0.62.5"
   54     54   
          55  +
[dependencies.aws-smithy-observability]
          56  +
path = "../aws-smithy-observability"
          57  +
version = "0.1.5"
          58  +
   55     59   
[dependencies.aws-smithy-runtime]
   56     60   
path = "../aws-smithy-runtime"
   57     61   
features = ["client"]
   58         -
version = "1.9.4"
          62  +
version = "1.9.5"
   59     63   
   60     64   
[dependencies.aws-smithy-runtime-api]
   61     65   
path = "../aws-smithy-runtime-api"
   62     66   
features = ["client"]
   63     67   
version = "1.9.2"
   64     68   
   65     69   
[dependencies.aws-smithy-types]
   66     70   
path = "../aws-smithy-types"
   67     71   
version = "1.3.4"
   68     72   

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/endpoint_discovery.rs

@@ -0,1 +0,115 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
//! Endpoint override detection for business metrics tracking
           7  +
           8  +
use aws_smithy_runtime_api::box_error::BoxError;
           9  +
use aws_smithy_runtime_api::client::interceptors::Intercept;
          10  +
use aws_smithy_types::config_bag::ConfigBag;
          11  +
          12  +
use crate::sdk_feature::AwsSdkFeature;
          13  +
          14  +
/// Interceptor that detects when a custom endpoint URL is being used
          15  +
/// and tracks it for business metrics.
          16  +
#[derive(Debug, Default)]
          17  +
#[non_exhaustive]
          18  +
pub struct EndpointOverrideInterceptor;
          19  +
          20  +
impl EndpointOverrideInterceptor {
          21  +
    /// Creates a new `EndpointOverrideInterceptor`
          22  +
    pub fn new() -> Self {
          23  +
        Self
          24  +
    }
          25  +
}
          26  +
          27  +
impl Intercept for EndpointOverrideInterceptor {
          28  +
    fn name(&self) -> &'static str {
          29  +
        "EndpointOverrideInterceptor"
          30  +
    }
          31  +
          32  +
    fn read_before_execution(
          33  +
        &self,
          34  +
        _context: &aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_>,
          35  +
        cfg: &mut ConfigBag,
          36  +
    ) -> Result<(), BoxError> {
          37  +
        // Check if a custom endpoint URL was configured
          38  +
        // This is stored early in the config bag before endpoint resolution
          39  +
        if let Some(endpoint_url) = cfg.load::<aws_types::endpoint_config::EndpointUrl>() {
          40  +
            let url_str = endpoint_url.0.as_str();
          41  +
          42  +
            // Standard AWS endpoints follow patterns like:
          43  +
            // - *.amazonaws.com
          44  +
            // - *.amazonaws.com.cn (China)
          45  +
            // If the endpoint doesn't match these patterns, it's a custom endpoint
          46  +
            if !url_str.contains(".amazonaws.com") && !url_str.contains(".amazonaws.com.cn") {
          47  +
                cfg.interceptor_state()
          48  +
                    .store_append(AwsSdkFeature::EndpointOverride);
          49  +
            }
          50  +
        }
          51  +
          52  +
        Ok(())
          53  +
    }
          54  +
}
          55  +
          56  +
#[cfg(test)]
          57  +
mod tests {
          58  +
    use super::*;
          59  +
    use aws_smithy_runtime_api::client::interceptors::context::{Input, InterceptorContext};
          60  +
    use aws_smithy_types::config_bag::ConfigBag;
          61  +
          62  +
    #[test]
          63  +
    fn test_detects_custom_endpoint() {
          64  +
        let context = InterceptorContext::new(Input::doesnt_matter());
          65  +
          66  +
        let mut cfg = ConfigBag::base();
          67  +
        cfg.interceptor_state()
          68  +
            .store_put(aws_types::endpoint_config::EndpointUrl(
          69  +
                "https://custom.example.com".to_string(),
          70  +
            ));
          71  +
          72  +
        let interceptor = EndpointOverrideInterceptor::new();
          73  +
        let ctx = Into::into(&context);
          74  +
        interceptor.read_before_execution(&ctx, &mut cfg).unwrap();
          75  +
          76  +
        let features: Vec<_> = cfg.load::<AwsSdkFeature>().collect();
          77  +
        assert_eq!(features.len(), 1);
          78  +
        assert!(features
          79  +
            .iter()
          80  +
            .any(|f| matches!(f, AwsSdkFeature::EndpointOverride)));
          81  +
    }
          82  +
          83  +
    #[test]
          84  +
    fn test_ignores_default_endpoint() {
          85  +
        let context = InterceptorContext::new(Input::doesnt_matter());
          86  +
          87  +
        let mut cfg = ConfigBag::base();
          88  +
        cfg.interceptor_state()
          89  +
            .store_put(aws_types::endpoint_config::EndpointUrl(
          90  +
                "https://service.amazonaws.com".to_string(),
          91  +
            ));
          92  +
          93  +
        let interceptor = EndpointOverrideInterceptor::new();
          94  +
        let ctx = Into::into(&context);
          95  +
        interceptor.read_before_execution(&ctx, &mut cfg).unwrap();
          96  +
          97  +
        let features: Vec<_> = cfg.load::<AwsSdkFeature>().collect();
          98  +
        assert_eq!(features.len(), 0);
          99  +
    }
         100  +
         101  +
    #[test]
         102  +
    fn test_no_endpoint_url_configured() {
         103  +
        let context = InterceptorContext::new(Input::doesnt_matter());
         104  +
         105  +
        let mut cfg = ConfigBag::base();
         106  +
        // No endpoint URL configured
         107  +
         108  +
        let interceptor = EndpointOverrideInterceptor::new();
         109  +
        let ctx = Into::into(&context);
         110  +
        interceptor.read_before_execution(&ctx, &mut cfg).unwrap();
         111  +
         112  +
        let features: Vec<_> = cfg.load::<AwsSdkFeature>().collect();
         113  +
        assert_eq!(features.len(), 0);
         114  +
    }
         115  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/lib.rs

@@ -1,1 +53,59 @@
   19     19   
/// Supporting code for authentication in the AWS SDK.
   20     20   
pub mod auth;
   21     21   
   22     22   
/// AWS-specific content-encoding tools
   23     23   
#[cfg(feature = "http-02x")]
   24     24   
pub mod content_encoding;
   25     25   
   26     26   
/// Supporting code for recursion detection in the AWS SDK.
   27     27   
pub mod recursion_detection;
   28     28   
          29  +
/// Supporting code for endpoint override detection in the AWS SDK.
          30  +
pub mod endpoint_discovery;
          31  +
          32  +
/// Supporting code for observability feature detection in the AWS SDK.
          33  +
pub mod observability_detection;
          34  +
   29     35   
/// Supporting code for user agent headers in the AWS SDK.
   30     36   
pub mod user_agent;
   31     37   
   32     38   
/// Supporting code for retry behavior specific to the AWS SDK.
   33     39   
pub mod retries;
   34     40   
   35     41   
/// Supporting code for invocation ID headers in the AWS SDK.
   36     42   
pub mod invocation_id;
   37     43   
   38     44   
/// Supporting code for request metadata headers in the AWS SDK.

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/observability_detection.rs

@@ -0,1 +0,114 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
//! Observability feature detection for business metrics tracking
           7  +
           8  +
use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
           9  +
use aws_smithy_runtime_api::box_error::BoxError;
          10  +
use aws_smithy_runtime_api::client::interceptors::context::BeforeTransmitInterceptorContextRef;
          11  +
use aws_smithy_runtime_api::client::interceptors::Intercept;
          12  +
use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
          13  +
use aws_smithy_types::config_bag::ConfigBag;
          14  +
          15  +
use crate::sdk_feature::AwsSdkFeature;
          16  +
          17  +
/// Interceptor that detects when observability features are being used
          18  +
/// and tracks them for business metrics.
          19  +
#[derive(Debug, Default)]
          20  +
#[non_exhaustive]
          21  +
pub struct ObservabilityDetectionInterceptor;
          22  +
          23  +
impl ObservabilityDetectionInterceptor {
          24  +
    /// Creates a new `ObservabilityDetectionInterceptor`
          25  +
    pub fn new() -> Self {
          26  +
        Self
          27  +
    }
          28  +
}
          29  +
          30  +
impl Intercept for ObservabilityDetectionInterceptor {
          31  +
    fn name(&self) -> &'static str {
          32  +
        "ObservabilityDetectionInterceptor"
          33  +
    }
          34  +
          35  +
    fn read_after_serialization(
          36  +
        &self,
          37  +
        _context: &BeforeTransmitInterceptorContextRef<'_>,
          38  +
        _runtime_components: &RuntimeComponents,
          39  +
        cfg: &mut ConfigBag,
          40  +
    ) -> Result<(), BoxError> {
          41  +
        // Try to get the global telemetry provider
          42  +
        if let Ok(provider) = aws_smithy_observability::global::get_telemetry_provider() {
          43  +
            // Check if it's not a noop provider
          44  +
            if !provider.is_noop() {
          45  +
                // Track that observability metrics are enabled
          46  +
                cfg.interceptor_state()
          47  +
                    .store_append(AwsSdkFeature::ObservabilityMetrics);
          48  +
          49  +
                // PRAGMATIC APPROACH: Track tracing based on meter provider state
          50  +
                //
          51  +
                // The SDK uses Rust's `tracing` crate globally but doesn't have a
          52  +
                // configurable tracer provider yet. We make the reasonable assumption
          53  +
                // that if a user has configured a meter provider, they've also set up
          54  +
                // tracing as part of their observability stack.
          55  +
                //
          56  +
                // This is a pragmatic workaround until a proper tracer provider is added.
          57  +
                cfg.interceptor_state()
          58  +
                    .store_append(SmithySdkFeature::ObservabilityTracing);
          59  +
          60  +
                // Check if it's using OpenTelemetry
          61  +
                if provider.is_otel() {
          62  +
                    cfg.interceptor_state()
          63  +
                        .store_append(AwsSdkFeature::ObservabilityOtelMetrics);
          64  +
          65  +
                    // If using OpenTelemetry for metrics, likely using it for tracing too
          66  +
                    cfg.interceptor_state()
          67  +
                        .store_append(AwsSdkFeature::ObservabilityOtelTracing);
          68  +
                }
          69  +
            }
          70  +
        }
          71  +
          72  +
        Ok(())
          73  +
    }
          74  +
}
          75  +
          76  +
#[cfg(test)]
          77  +
mod tests {
          78  +
    use super::*;
          79  +
    use aws_smithy_observability::TelemetryProvider;
          80  +
    use aws_smithy_runtime_api::client::interceptors::context::{Input, InterceptorContext};
          81  +
    use aws_smithy_runtime_api::client::orchestrator::HttpRequest;
          82  +
    use aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
          83  +
    use aws_smithy_types::config_bag::ConfigBag;
          84  +
          85  +
    #[test]
          86  +
    fn test_detects_noop_provider() {
          87  +
        let mut context = InterceptorContext::new(Input::doesnt_matter());
          88  +
        context.enter_serialization_phase();
          89  +
        context.set_request(HttpRequest::empty());
          90  +
        let _ = context.take_input();
          91  +
        context.enter_before_transmit_phase();
          92  +
          93  +
        let rc = RuntimeComponentsBuilder::for_tests().build().unwrap();
          94  +
        let mut cfg = ConfigBag::base();
          95  +
          96  +
        // Set a noop provider
          97  +
        aws_smithy_observability::global::set_telemetry_provider(TelemetryProvider::noop())
          98  +
            .unwrap();
          99  +
         100  +
        let interceptor = ObservabilityDetectionInterceptor::new();
         101  +
        let ctx = Into::into(&context);
         102  +
        interceptor
         103  +
            .read_after_serialization(&ctx, &rc, &mut cfg)
         104  +
            .unwrap();
         105  +
         106  +
        // Should not track any features for noop provider
         107  +
        let features: Vec<_> = cfg.load::<AwsSdkFeature>().collect();
         108  +
        assert_eq!(features.len(), 0);
         109  +
    }
         110  +
         111  +
    // Note: We cannot easily test non-noop providers without creating a custom meter provider
         112  +
    // implementation, which would require exposing internal types. The noop test above
         113  +
    // is sufficient to verify the detection logic works correctly.
         114  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/observability_plugin.rs

@@ -0,1 +0,60 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
//! Runtime plugin for detecting observability features
           7  +
           8  +
use aws_smithy_observability::global::get_telemetry_provider;
           9  +
use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
          10  +
use aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
          11  +
use aws_smithy_types::config_bag::{FrozenLayer, Layer};
          12  +
use std::borrow::Cow;
          13  +
          14  +
use crate::sdk_feature::AwsSdkFeature;
          15  +
          16  +
/// Runtime plugin that detects observability features and stores them in the config bag
          17  +
#[derive(Debug, Default)]
          18  +
pub struct ObservabilityRuntimePlugin;
          19  +
          20  +
impl ObservabilityRuntimePlugin {
          21  +
    /// Create a new ObservabilityRuntimePlugin
          22  +
    pub fn new() -> Self {
          23  +
        Self
          24  +
    }
          25  +
}
          26  +
          27  +
impl RuntimePlugin for ObservabilityRuntimePlugin {
          28  +
    fn config(&self) -> Option<FrozenLayer> {
          29  +
        // Try to get the global telemetry provider
          30  +
        if let Ok(telemetry_provider) = get_telemetry_provider() {
          31  +
            // Check if it's a non-noop provider
          32  +
            if !telemetry_provider.is_noop() {
          33  +
                let mut cfg = Layer::new("ObservabilityFeatures");
          34  +
          35  +
                // Store ObservabilityMetrics feature (AWS-level)
          36  +
                cfg.interceptor_state()
          37  +
                    .store_append(AwsSdkFeature::ObservabilityMetrics);
          38  +
          39  +
                // PRAGMATIC ASSUMPTION:
          40  +
                // If someone configured a meter provider, they likely also configured tracing
          41  +
                // (both are part of observability setup). We track ObservabilityTracing based
          42  +
                // on the presence of a non-noop meter provider.
          43  +
                cfg.interceptor_state()
          44  +
                    .store_append(SmithySdkFeature::ObservabilityTracing);
          45  +
          46  +
                // Check if it's OpenTelemetry
          47  +
                if telemetry_provider.is_otel() {
          48  +
                    cfg.interceptor_state()
          49  +
                        .store_append(AwsSdkFeature::ObservabilityOtelTracing);
          50  +
                    cfg.interceptor_state()
          51  +
                        .store_append(AwsSdkFeature::ObservabilityOtelMetrics);
          52  +
                }
          53  +
          54  +
                return Some(cfg.freeze());
          55  +
            }
          56  +
        }
          57  +
          58  +
        None
          59  +
    }
          60  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/sdk_feature.rs

@@ -1,1 +31,39 @@
   17     17   
    /// An operation called with account ID mode set to disabled
   18     18   
    AccountIdModeDisabled,
   19     19   
    /// An operation called with account ID mode set to required
   20     20   
    AccountIdModeRequired,
   21     21   
    /// Indicates that an operation was called by the S3 Transfer Manager
   22     22   
    S3Transfer,
   23     23   
    /// Calling an SSO-OIDC operation as part of the SSO login flow, when using the OAuth2.0 device code grant
   24     24   
    SsoLoginDevice,
   25     25   
    /// Calling an SSO-OIDC operation as part of the SSO login flow, when using the OAuth2.0 authorization code grant
   26     26   
    SsoLoginAuth,
          27  +
    /// An operation called with observability metrics collection enabled
          28  +
    ObservabilityMetrics,
          29  +
    /// An operation called with OpenTelemetry tracing integration enabled
          30  +
    ObservabilityOtelTracing,
          31  +
    /// An operation called with OpenTelemetry metrics integration enabled
          32  +
    ObservabilityOtelMetrics,
          33  +
    /// An operation called using a user provided endpoint URL
          34  +
    EndpointOverride,
   27     35   
}
   28     36   
   29     37   
impl Storable for AwsSdkFeature {
   30     38   
    type Storer = StoreAppend<Self>;
   31     39   
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/user_agent/metrics.rs

@@ -137,137 +254,263 @@
  157    157   
    CredentialsProfileSsoLegacy,
  158    158   
    CredentialsSsoLegacy,
  159    159   
    CredentialsProfileProcess,
  160    160   
    CredentialsProcess,
  161    161   
    CredentialsBoto2ConfigFile,
  162    162   
    CredentialsAwsSdkStore,
  163    163   
    CredentialsHttp,
  164    164   
    CredentialsImds,
  165    165   
    SsoLoginDevice,
  166    166   
    SsoLoginAuth,
  167         -
    BearerServiceEnvVars
         167  +
    BearerServiceEnvVars,
         168  +
    ObservabilityTracing,
         169  +
    ObservabilityMetrics,
         170  +
    ObservabilityOtelTracing,
         171  +
    ObservabilityOtelMetrics
  168    172   
);
  169    173   
  170    174   
pub(crate) trait ProvideBusinessMetric {
  171    175   
    fn provide_business_metric(&self) -> Option<BusinessMetric>;
  172    176   
}
  173    177   
  174    178   
impl ProvideBusinessMetric for SmithySdkFeature {
  175    179   
    fn provide_business_metric(&self) -> Option<BusinessMetric> {
  176    180   
        use SmithySdkFeature::*;
  177    181   
        match self {
  178    182   
            Waiter => Some(BusinessMetric::Waiter),
  179    183   
            Paginator => Some(BusinessMetric::Paginator),
  180    184   
            GzipRequestCompression => Some(BusinessMetric::GzipRequestCompression),
  181    185   
            ProtocolRpcV2Cbor => Some(BusinessMetric::ProtocolRpcV2Cbor),
  182    186   
            RetryModeStandard => Some(BusinessMetric::RetryModeStandard),
  183    187   
            RetryModeAdaptive => Some(BusinessMetric::RetryModeAdaptive),
  184    188   
            FlexibleChecksumsReqCrc32 => Some(BusinessMetric::FlexibleChecksumsReqCrc32),
  185    189   
            FlexibleChecksumsReqCrc32c => Some(BusinessMetric::FlexibleChecksumsReqCrc32c),
  186    190   
            FlexibleChecksumsReqCrc64 => Some(BusinessMetric::FlexibleChecksumsReqCrc64),
  187    191   
            FlexibleChecksumsReqSha1 => Some(BusinessMetric::FlexibleChecksumsReqSha1),
  188    192   
            FlexibleChecksumsReqSha256 => Some(BusinessMetric::FlexibleChecksumsReqSha256),
  189    193   
            FlexibleChecksumsReqWhenSupported => {
  190    194   
                Some(BusinessMetric::FlexibleChecksumsReqWhenSupported)
  191    195   
            }
  192    196   
            FlexibleChecksumsReqWhenRequired => {
  193    197   
                Some(BusinessMetric::FlexibleChecksumsReqWhenRequired)
  194    198   
            }
  195    199   
            FlexibleChecksumsResWhenSupported => {
  196    200   
                Some(BusinessMetric::FlexibleChecksumsResWhenSupported)
  197    201   
            }
  198    202   
            FlexibleChecksumsResWhenRequired => {
  199    203   
                Some(BusinessMetric::FlexibleChecksumsResWhenRequired)
  200    204   
            }
         205  +
            ObservabilityTracing => Some(BusinessMetric::ObservabilityTracing),
  201    206   
            otherwise => {
  202    207   
                // This may occur if a customer upgrades only the `aws-smithy-runtime-api` crate
  203    208   
                // while continuing to use an outdated version of an SDK crate or the `aws-runtime`
  204    209   
                // crate.
  205    210   
                tracing::warn!(
  206    211   
                    "Attempted to provide `BusinessMetric` for `{otherwise:?}`, which is not recognized in the current version of the `aws-runtime` crate. \
  207    212   
                    Consider upgrading to the latest version to ensure that all tracked features are properly reported in your metrics."
  208    213   
                );
  209    214   
                None
  210    215   
            }
  211    216   
        }
  212    217   
    }
  213    218   
}
  214    219   
  215    220   
impl ProvideBusinessMetric for AwsSdkFeature {
  216    221   
    fn provide_business_metric(&self) -> Option<BusinessMetric> {
  217    222   
        use AwsSdkFeature::*;
  218    223   
        match self {
  219    224   
            AccountIdModePreferred => Some(BusinessMetric::AccountIdModePreferred),
  220    225   
            AccountIdModeDisabled => Some(BusinessMetric::AccountIdModeDisabled),
  221    226   
            AccountIdModeRequired => Some(BusinessMetric::AccountIdModeRequired),
  222    227   
            S3Transfer => Some(BusinessMetric::S3Transfer),
  223    228   
            SsoLoginDevice => Some(BusinessMetric::SsoLoginDevice),
  224    229   
            SsoLoginAuth => Some(BusinessMetric::SsoLoginAuth),
         230  +
            ObservabilityMetrics => Some(BusinessMetric::ObservabilityMetrics),
         231  +
            ObservabilityOtelTracing => Some(BusinessMetric::ObservabilityOtelTracing),
         232  +
            ObservabilityOtelMetrics => Some(BusinessMetric::ObservabilityOtelMetrics),
         233  +
            EndpointOverride => Some(BusinessMetric::EndpointOverride),
  225    234   
        }
  226    235   
    }
  227    236   
}
  228    237   
  229    238   
impl ProvideBusinessMetric for AwsCredentialFeature {
  230    239   
    fn provide_business_metric(&self) -> Option<BusinessMetric> {
  231    240   
        use AwsCredentialFeature::*;
  232    241   
        match self {
  233    242   
            ResolvedAccountId => Some(BusinessMetric::ResolvedAccountId),
  234    243   
            CredentialsCode => Some(BusinessMetric::CredentialsCode),
@@ -373,382 +403,505 @@
  393    402   
  394    403   
        let csv = "A10BCE";
  395    404   
        assert_eq!("A10BC", drop_unfinished_metrics_to_fit(csv, 5));
  396    405   
  397    406   
        let csv = "A";
  398    407   
        assert_eq!("A", drop_unfinished_metrics_to_fit(csv, 5));
  399    408   
  400    409   
        let csv = "A,B";
  401    410   
        assert_eq!("A,B", drop_unfinished_metrics_to_fit(csv, 5));
  402    411   
    }
         412  +
         413  +
    #[test]
         414  +
    fn test_aws_sdk_feature_mappings() {
         415  +
        use crate::sdk_feature::AwsSdkFeature;
         416  +
        use crate::user_agent::metrics::ProvideBusinessMetric;
         417  +
         418  +
        // Test ObservabilityMetrics mapping
         419  +
        assert_eq!(
         420  +
            AwsSdkFeature::ObservabilityMetrics.provide_business_metric(),
         421  +
            Some(BusinessMetric::ObservabilityMetrics)
         422  +
        );
         423  +
         424  +
        // Test ObservabilityOtelTracing mapping
         425  +
        assert_eq!(
         426  +
            AwsSdkFeature::ObservabilityOtelTracing.provide_business_metric(),
         427  +
            Some(BusinessMetric::ObservabilityOtelTracing)
         428  +
        );
         429  +
         430  +
        // Test ObservabilityOtelMetrics mapping
         431  +
        assert_eq!(
         432  +
            AwsSdkFeature::ObservabilityOtelMetrics.provide_business_metric(),
         433  +
            Some(BusinessMetric::ObservabilityOtelMetrics)
         434  +
        );
         435  +
         436  +
        // Test SsoLoginDevice mapping
         437  +
        assert_eq!(
         438  +
            AwsSdkFeature::SsoLoginDevice.provide_business_metric(),
         439  +
            Some(BusinessMetric::SsoLoginDevice)
         440  +
        );
         441  +
         442  +
        // Test SsoLoginAuth mapping
         443  +
        assert_eq!(
         444  +
            AwsSdkFeature::SsoLoginAuth.provide_business_metric(),
         445  +
            Some(BusinessMetric::SsoLoginAuth)
         446  +
        );
         447  +
         448  +
        // Test EndpointOverride mapping
         449  +
        assert_eq!(
         450  +
            AwsSdkFeature::EndpointOverride.provide_business_metric(),
         451  +
            Some(BusinessMetric::EndpointOverride)
         452  +
        );
         453  +
    }
         454  +
         455  +
    #[test]
         456  +
    fn test_smithy_sdk_feature_observability_tracing_mapping() {
         457  +
        use crate::user_agent::metrics::ProvideBusinessMetric;
         458  +
        use aws_smithy_runtime::client::sdk_feature::SmithySdkFeature;
         459  +
         460  +
        // Test ObservabilityTracing mapping
         461  +
        assert_eq!(
         462  +
            SmithySdkFeature::ObservabilityTracing.provide_business_metric(),
         463  +
            Some(BusinessMetric::ObservabilityTracing)
         464  +
        );
         465  +
    }
         466  +
         467  +
    #[test]
         468  +
    fn test_metric_id_values() {
         469  +
        // Test that metric IDs match the expected values from FEATURES.md specification
         470  +
         471  +
        // SSO Login metrics
         472  +
        assert_eq!(
         473  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::SsoLoginDevice),
         474  +
            Some(&"1".into())
         475  +
        );
         476  +
        assert_eq!(
         477  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::SsoLoginAuth),
         478  +
            Some(&"2".into())
         479  +
        );
         480  +
         481  +
        // Observability metrics
         482  +
        assert_eq!(
         483  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::ObservabilityTracing),
         484  +
            Some(&"4".into())
         485  +
        );
         486  +
        assert_eq!(
         487  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::ObservabilityMetrics),
         488  +
            Some(&"5".into())
         489  +
        );
         490  +
        assert_eq!(
         491  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::ObservabilityOtelTracing),
         492  +
            Some(&"6".into())
         493  +
        );
         494  +
        assert_eq!(
         495  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::ObservabilityOtelMetrics),
         496  +
            Some(&"7".into())
         497  +
        );
         498  +
         499  +
        // Endpoint Override metric
         500  +
        assert_eq!(
         501  +
            FEATURE_ID_TO_METRIC_VALUE.get(&BusinessMetric::EndpointOverride),
         502  +
            Some(&"N".into())
         503  +
        );
         504  +
    }
  403    505   
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/user_agent/test_data/feature_id_to_metric_value.json

@@ -27,27 +58,62 @@
   47     47   
  "CREDENTIALS_PROFILE_SSO_LEGACY": "t",
   48     48   
  "CREDENTIALS_SSO_LEGACY": "u",
   49     49   
  "CREDENTIALS_PROFILE_PROCESS": "v",
   50     50   
  "CREDENTIALS_PROCESS": "w",
   51     51   
  "CREDENTIALS_BOTO2_CONFIG_FILE": "x",
   52     52   
  "CREDENTIALS_AWS_SDK_STORE": "y",
   53     53   
  "CREDENTIALS_HTTP": "z",
   54     54   
  "CREDENTIALS_IMDS": "0",
   55     55   
  "SSO_LOGIN_DEVICE": "1",
   56     56   
  "SSO_LOGIN_AUTH": "2",
   57         -
  "BEARER_SERVICE_ENV_VARS": "3"
          57  +
  "BEARER_SERVICE_ENV_VARS": "3",
          58  +
  "OBSERVABILITY_TRACING": "4",
          59  +
  "OBSERVABILITY_METRICS": "5",
          60  +
  "OBSERVABILITY_OTEL_TRACING": "6",
          61  +
  "OBSERVABILITY_OTEL_METRICS": "7"
   58     62   
}

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-checksums/Cargo.toml

@@ -1,1 +43,43 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-smithy-checksums"
    4         -
version = "0.63.11"
           4  +
version = "0.63.10"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Zelda Hessler <zhessler@amazon.com>"]
    6      6   
description = "Checksum calculation and verification callbacks"
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/smithy-lang/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]
   15     15   
   16     16   
[dependencies]
   17     17   
bytes = "1.10.0"
   18         -
crc-fast = "~1.6.0"
          18  +
crc-fast = "~1.3.0"
   19     19   
hex = "0.4.3"
   20     20   
http = "0.2.9"
   21     21   
http-body = "0.4.5"
   22     22   
md-5 = "0.10"
   23     23   
pin-project-lite = "0.2.14"
   24     24   
sha1 = "0.10"
   25     25   
sha2 = "0.10"
   26     26   
tracing = "0.1.40"
   27     27   
   28     28   
[dependencies.aws-smithy-http]

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-mocks/Cargo.toml

@@ -14,14 +0,44 @@
   34     34   
features = ["full"]
   35     35   
   36     36   
[dev-dependencies.aws-smithy-async]
   37     37   
path = "../aws-smithy-async"
   38     38   
features = ["rt-tokio"]
   39     39   
version = "1.2.6"
   40     40   
   41     41   
[dev-dependencies.aws-smithy-runtime]
   42     42   
path = "../aws-smithy-runtime"
   43     43   
features = ["client"]
   44         -
version = "1.9.4"
          44  +
version = "1.9.5"

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability-otel/Cargo.toml

@@ -1,1 +48,48 @@
   21     21   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   22     22   
rustdoc-args = ["--cfg", "docsrs"]
   23     23   
   24     24   
[dependencies]
   25     25   
value-bag = "1.10.0"
   26     26   
async-global-executor = "2.4.1"
   27     27   
async-task = "=4.7.1"
   28     28   
   29     29   
[dependencies.aws-smithy-observability]
   30     30   
path = "../aws-smithy-observability"
   31         -
version = "0.1.4"
          31  +
version = "0.1.5"
   32     32   
   33     33   
[dependencies.opentelemetry]
   34     34   
version = "0.26.0"
   35     35   
features = ["metrics"]
   36     36   
[target."cfg(not(target_arch = \"powerpc\"))".dependencies.opentelemetry_sdk]
   37     37   
version = "0.26.0"
   38     38   
features = ["metrics", "testing"]
   39     39   
   40     40   
[dev-dependencies]
   41     41   
stats_alloc = "0.1.10"

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/Cargo.toml

@@ -1,1 +20,20 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-smithy-observability"
    4         -
version = "0.1.4"
           4  +
version = "0.1.5"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>"]
    6      6   
description = "Smithy observability implementation."
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/awslabs/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/src/lib.rs

@@ -1,1 +31,31 @@
   18     18   
// libraries update this with detailed usage docs and examples
   19     19   
   20     20   
mod attributes;
   21     21   
pub use attributes::{AttributeValue, Attributes};
   22     22   
mod context;
   23     23   
pub use context::{Context, ContextManager, Scope};
   24     24   
mod error;
   25     25   
pub use error::{ErrorKind, GlobalTelemetryProviderError, ObservabilityError};
   26     26   
pub mod global;
   27     27   
pub mod meter;
   28         -
mod noop;
          28  +
pub mod noop;
   29     29   
mod provider;
   30     30   
pub use provider::{TelemetryProvider, TelemetryProviderBuilder};
   31     31   
pub mod instruments;