AWS SDK

AWS SDK

rev. 26d6199e0dbda1634806aa361b2bfd7cac99b916 (ignoring whitespace)

Files changed:

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

@@ -1,1 +117,117 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsQuery"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-query]
   39     39   
path = "../aws-smithy-query"
   40     40   
version = "0.60.8"
   41     41   
   42     42   
[dependencies.aws-smithy-runtime]
   43     43   
path = "../aws-smithy-runtime"
   44     44   
features = ["client"]
   45     45   
version = "1.9.4"
   46     46   
   47     47   
[dependencies.aws-smithy-runtime-api]
   48     48   
path = "../aws-smithy-runtime-api"
   49     49   
features = ["client", "http-02x"]
   50     50   
version = "1.9.1"
   51     51   
   52     52   
[dependencies.aws-smithy-types]
   53     53   
path = "../aws-smithy-types"
   54     54   
version = "1.3.3"
   55     55   
   56     56   
[dependencies.aws-smithy-xml]
   57     57   
path = "../aws-smithy-xml"
   58     58   
version = "0.60.11"
   59     59   
   60     60   
[dependencies.aws-types]
   61     61   
path = "../aws-types"
   62     62   
version = "1.3.9"
   63     63   
   64     64   
[dependencies.fastrand]
   65     65   
version = "2.0.0"
   66     66   
   67     67   
[dependencies.http]
   68     68   
version = "0.2.9"
   69     69   
   70     70   
[dependencies.regex-lite]
   71     71   
version = "0.1.5"
   72     72   
   73     73   
[dependencies.tracing]
   74     74   
version = "0.1"
   75     75   
[dev-dependencies.aws-config]
   76     76   
path = "../aws-config"
   77     77   
version = "1.8.9"
   78     78   
   79     79   
[dev-dependencies.aws-credential-types]
   80     80   
path = "../aws-credential-types"
   81     81   
features = ["test-util"]
   82         -
version = "1.2.8"
          82  +
version = "1.2.9"
   83     83   
   84     84   
[dev-dependencies.aws-runtime]
   85     85   
path = "../aws-runtime"
   86     86   
features = ["test-util"]
   87         -
version = "1.5.12"
          87  +
version = "1.5.13"
   88     88   
   89     89   
[dev-dependencies.aws-smithy-async]
   90     90   
path = "../aws-smithy-async"
   91     91   
features = ["test-util"]
   92     92   
version = "1.2.6"
   93     93   
   94     94   
[dev-dependencies.aws-smithy-http-client]
   95     95   
path = "../aws-smithy-http-client"
   96     96   
features = ["test-util", "wire-mock"]
   97     97   
version = "1.1.4"

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

@@ -1,1 +112,112 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsJson1_1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tracing]
   69     69   
version = "0.1"
   70     70   
[dev-dependencies.aws-config]
   71     71   
path = "../aws-config"
   72     72   
version = "1.8.9"
   73     73   
   74     74   
[dev-dependencies.aws-credential-types]
   75     75   
path = "../aws-credential-types"
   76     76   
features = ["test-util"]
   77         -
version = "1.2.8"
          77  +
version = "1.2.9"
   78     78   
   79     79   
[dev-dependencies.aws-runtime]
   80     80   
path = "../aws-runtime"
   81     81   
features = ["test-util"]
   82         -
version = "1.5.12"
          82  +
version = "1.5.13"
   83     83   
   84     84   
[dev-dependencies.aws-smithy-async]
   85     85   
path = "../aws-smithy-async"
   86     86   
features = ["test-util"]
   87     87   
version = "1.2.6"
   88     88   
   89     89   
[dev-dependencies.aws-smithy-http-client]
   90     90   
path = "../aws-smithy-http-client"
   91     91   
features = ["test-util", "wire-mock"]
   92     92   
version = "1.1.4"

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

@@ -1,1 +118,118 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24     24   
features = ["event-stream"]
   25         -
version = "1.5.12"
          25  +
version = "1.5.13"
   26     26   
   27     27   
[dependencies.aws-smithy-async]
   28     28   
path = "../aws-smithy-async"
   29     29   
version = "1.2.6"
   30     30   
   31     31   
[dependencies.aws-smithy-eventstream]
   32     32   
path = "../aws-smithy-eventstream"
   33     33   
version = "0.60.12"
   34     34   
   35     35   
[dependencies.aws-smithy-http]
   36     36   
path = "../aws-smithy-http"
   37     37   
features = ["event-stream"]
   38     38   
version = "0.62.5"
   39     39   
   40     40   
[dependencies.aws-smithy-json]
   41     41   
path = "../aws-smithy-json"
   42     42   
version = "0.61.6"
   43     43   
   44     44   
[dependencies.aws-smithy-runtime]
   45     45   
path = "../aws-smithy-runtime"
   46     46   
features = ["client"]
   47     47   
version = "1.9.4"
   48     48   
   49     49   
[dependencies.aws-smithy-runtime-api]
   50     50   
path = "../aws-smithy-runtime-api"
   51     51   
features = ["client", "http-02x"]
   52     52   
version = "1.9.1"
   53     53   
   54     54   
[dependencies.aws-smithy-types]
   55     55   
path = "../aws-smithy-types"
   56     56   
version = "1.3.3"
   57     57   
   58     58   
[dependencies.aws-types]
   59     59   
path = "../aws-types"
   60     60   
version = "1.3.9"
   61     61   
   62     62   
[dependencies.bytes]
   63     63   
version = "1.4.0"
   64     64   
   65     65   
[dependencies.fastrand]
   66     66   
version = "2.0.0"
   67     67   
   68     68   
[dependencies.http]
   69     69   
version = "0.2.9"
   70     70   
   71     71   
[dependencies.regex-lite]
   72     72   
version = "0.1.5"
   73     73   
   74     74   
[dependencies.tracing]
   75     75   
version = "0.1"
   76     76   
[dev-dependencies.aws-config]
   77     77   
path = "../aws-config"
   78     78   
version = "1.8.9"
   79     79   
   80     80   
[dev-dependencies.aws-credential-types]
   81     81   
path = "../aws-credential-types"
   82     82   
features = ["test-util"]
   83         -
version = "1.2.8"
          83  +
version = "1.2.9"
   84     84   
   85     85   
[dev-dependencies.aws-runtime]
   86     86   
path = "../aws-runtime"
   87     87   
features = ["test-util"]
   88         -
version = "1.5.12"
          88  +
version = "1.5.13"
   89     89   
   90     90   
[dev-dependencies.aws-smithy-async]
   91     91   
path = "../aws-smithy-async"
   92     92   
features = ["test-util"]
   93     93   
version = "1.2.6"
   94     94   
   95     95   
[dev-dependencies.aws-smithy-eventstream]
   96     96   
path = "../aws-smithy-eventstream"
   97     97   
features = ["test-util"]
   98     98   
version = "0.60.12"

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

@@ -1,1 +54,54 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-sigv4]
   27     27   
path = "../aws-sigv4"
   28     28   
version = "1.3.5"
   29     29   
   30     30   
[dependencies.aws-smithy-async]
   31     31   
path = "../aws-smithy-async"
   32     32   
version = "1.2.6"
   33     33   
   34     34   
[dependencies.aws-smithy-http]
@@ -60,60 +125,125 @@
   80     80   
   81     81   
[dependencies.tracing]
   82     82   
version = "0.1"
   83     83   
[dev-dependencies.aws-config]
   84     84   
path = "../aws-config"
   85     85   
version = "1.8.9"
   86     86   
   87     87   
[dev-dependencies.aws-credential-types]
   88     88   
path = "../aws-credential-types"
   89     89   
features = ["test-util"]
   90         -
version = "1.2.8"
          90  +
version = "1.2.9"
   91     91   
   92     92   
[dev-dependencies.aws-runtime]
   93     93   
path = "../aws-runtime"
   94     94   
features = ["test-util"]
   95         -
version = "1.5.12"
          95  +
version = "1.5.13"
   96     96   
   97     97   
[dev-dependencies.aws-smithy-async]
   98     98   
path = "../aws-smithy-async"
   99     99   
features = ["test-util"]
  100    100   
version = "1.2.6"
  101    101   
  102    102   
[dev-dependencies.aws-smithy-http-client]
  103    103   
path = "../aws-smithy-http-client"
  104    104   
features = ["test-util", "wire-mock"]
  105    105   
version = "1.1.4"

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

@@ -1,1 +112,112 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsJson1_0"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tracing]
   69     69   
version = "0.1"
   70     70   
[dev-dependencies.aws-config]
   71     71   
path = "../aws-config"
   72     72   
version = "1.8.9"
   73     73   
   74     74   
[dev-dependencies.aws-credential-types]
   75     75   
path = "../aws-credential-types"
   76     76   
features = ["test-util"]
   77         -
version = "1.2.8"
          77  +
version = "1.2.9"
   78     78   
   79     79   
[dev-dependencies.aws-runtime]
   80     80   
path = "../aws-runtime"
   81     81   
features = ["test-util"]
   82         -
version = "1.5.12"
          82  +
version = "1.5.13"
   83     83   
   84     84   
[dev-dependencies.aws-smithy-async]
   85     85   
path = "../aws-smithy-async"
   86     86   
features = ["test-util"]
   87     87   
version = "1.2.6"
   88     88   
   89     89   
[dev-dependencies.aws-smithy-http-client]
   90     90   
path = "../aws-smithy-http-client"
   91     91   
features = ["test-util", "wire-mock"]
   92     92   
version = "1.1.4"

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

@@ -1,1 +103,103 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restXml"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-smithy-xml]
   53     53   
path = "../aws-smithy-xml"
   54     54   
version = "0.60.11"
   55     55   
   56     56   
[dependencies.aws-types]
   57     57   
path = "../aws-types"
   58     58   
version = "1.3.9"
   59     59   
   60     60   
[dependencies.fastrand]
   61     61   
version = "2.0.0"
   62     62   
   63     63   
[dependencies.http]
   64     64   
version = "0.2.9"
   65     65   
   66     66   
[dependencies.regex-lite]
   67     67   
version = "0.1.5"
   68     68   
   69     69   
[dependencies.tracing]
   70     70   
version = "0.1"
   71     71   
[dev-dependencies.aws-config]
   72     72   
path = "../aws-config"
   73     73   
version = "1.8.9"
   74     74   
   75     75   
[dev-dependencies.aws-credential-types]
   76     76   
path = "../aws-credential-types"
   77     77   
features = ["test-util"]
   78         -
version = "1.2.8"
          78  +
version = "1.2.9"
   79     79   
   80     80   
[dev-dependencies.aws-smithy-http-client]
   81     81   
path = "../aws-smithy-http-client"
   82     82   
features = ["test-util"]
   83     83   
version = "1.1.4"
   84     84   
   85     85   
[dev-dependencies.pretty_assertions]
   86     86   
version = "1.3.0"
   87     87   
   88     88   
[dev-dependencies.tokio]

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

@@ -1,1 +55,55 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restXml"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24     24   
features = ["event-stream", "http-02x"]
   25         -
version = "1.5.12"
          25  +
version = "1.5.13"
   26     26   
   27     27   
[dependencies.aws-sigv4]
   28     28   
path = "../aws-sigv4"
   29     29   
version = "1.3.5"
   30     30   
   31     31   
[dependencies.aws-smithy-async]
   32     32   
path = "../aws-smithy-async"
   33     33   
version = "1.2.6"
   34     34   
   35     35   
[dependencies.aws-smithy-checksums]
@@ -99,99 +164,164 @@
  119    119   
version = "1.12.0"
  120    120   
  121    121   
[dev-dependencies.aws-config]
  122    122   
path = "../aws-config"
  123    123   
features = ["behavior-version-latest"]
  124    124   
version = "1.8.9"
  125    125   
  126    126   
[dev-dependencies.aws-credential-types]
  127    127   
path = "../aws-credential-types"
  128    128   
features = ["test-util"]
  129         -
version = "1.2.8"
         129  +
version = "1.2.9"
  130    130   
  131    131   
[dev-dependencies.aws-runtime]
  132    132   
path = "../aws-runtime"
  133    133   
features = ["test-util"]
  134         -
version = "1.5.12"
         134  +
version = "1.5.13"
  135    135   
  136    136   
[dev-dependencies.aws-smithy-async]
  137    137   
path = "../aws-smithy-async"
  138    138   
features = ["test-util"]
  139    139   
version = "1.2.6"
  140    140   
  141    141   
[dev-dependencies.aws-smithy-eventstream]
  142    142   
path = "../aws-smithy-eventstream"
  143    143   
features = ["test-util"]
  144    144   
version = "0.60.12"

tmp-codegen-diff/aws-sdk/sdk/s3/src/s3_express.rs

@@ -347,347 +467,470 @@
  367    367   
            expect_identity(3000, &sut, key3, || async move { panic!("new identity should not be loaded") }).await;
  368    368   
        }
  369    369   
    }
  370    370   
}
  371    371   
/// Supporting code for S3 Express identity provider
  372    372   
pub(crate) mod identity_provider {
  373    373   
    use std::time::{Duration, SystemTime};
  374    374   
  375    375   
    use crate::s3_express::identity_cache::S3ExpressIdentityCache;
  376    376   
    use crate::types::SessionCredentials;
         377  +
    use aws_credential_types::credential_feature::AwsCredentialFeature;
  377    378   
    use aws_credential_types::provider::error::CredentialsError;
  378    379   
    use aws_credential_types::Credentials;
  379    380   
    use aws_smithy_async::time::{SharedTimeSource, TimeSource};
  380    381   
    use aws_smithy_runtime_api::box_error::BoxError;
  381    382   
    use aws_smithy_runtime_api::client::endpoint::EndpointResolverParams;
  382    383   
    use aws_smithy_runtime_api::client::identity::{Identity, IdentityCacheLocation, IdentityFuture, ResolveCachedIdentity, ResolveIdentity};
  383    384   
    use aws_smithy_runtime_api::client::interceptors::SharedInterceptor;
  384    385   
    use aws_smithy_runtime_api::client::runtime_components::{GetIdentityResolver, RuntimeComponents};
  385    386   
    use aws_smithy_runtime_api::shared::IntoShared;
  386    387   
    use aws_smithy_types::config_bag::ConfigBag;
  387    388   
  388    389   
    use super::identity_cache::{DEFAULT_BUFFER_TIME, DEFAULT_MAX_CACHE_CAPACITY};
  389    390   
  390    391   
    #[derive(Debug)]
  391    392   
    pub(crate) struct DefaultS3ExpressIdentityProvider {
  392    393   
        behavior_version: crate::config::BehaviorVersion,
  393    394   
        cache: S3ExpressIdentityCache,
  394    395   
    }
  395    396   
  396    397   
    impl TryFrom<SessionCredentials> for Credentials {
  397    398   
        type Error = BoxError;
  398    399   
  399    400   
        fn try_from(session_creds: SessionCredentials) -> Result<Self, Self::Error> {
  400    401   
            Ok(Credentials::new(
  401    402   
                session_creds.access_key_id,
  402    403   
                session_creds.secret_access_key,
  403    404   
                Some(session_creds.session_token),
  404    405   
                Some(
  405    406   
                    SystemTime::try_from(session_creds.expiration)
  406    407   
                        .map_err(|_| CredentialsError::unhandled("credential expiration time cannot be represented by a SystemTime"))?,
  407    408   
                ),
  408    409   
                "s3express",
  409    410   
            ))
  410    411   
        }
  411    412   
    }
  412    413   
  413    414   
    impl DefaultS3ExpressIdentityProvider {
  414    415   
        pub(crate) fn builder() -> Builder {
  415    416   
            Builder::default()
  416    417   
        }
  417    418   
  418    419   
        async fn identity<'a>(&'a self, runtime_components: &'a RuntimeComponents, config_bag: &'a ConfigBag) -> Result<Identity, BoxError> {
  419    420   
            let bucket_name = self.bucket_name(config_bag)?;
  420    421   
  421    422   
            let sigv4_identity_resolver = runtime_components
  422    423   
                .identity_resolver(aws_runtime::auth::sigv4::SCHEME_ID)
  423    424   
                .ok_or("identity resolver for sigv4 should be set for S3")?;
  424    425   
            let aws_identity = runtime_components
  425    426   
                .identity_cache()
  426    427   
                .resolve_cached_identity(sigv4_identity_resolver, runtime_components, config_bag)
  427    428   
                .await?;
  428    429   
  429    430   
            let credentials = aws_identity
  430    431   
                .data::<Credentials>()
  431    432   
                .ok_or("wrong identity type for SigV4. Expected AWS credentials but got `{identity:?}")?;
  432    433   
  433    434   
            let key = self.cache.key(bucket_name, credentials);
  434    435   
            self.cache
  435    436   
                .get_or_load(key, || async move {
  436    437   
                    let creds = self.express_session_credentials(bucket_name, runtime_components, config_bag).await?;
  437         -
                    let data = Credentials::try_from(creds)?;
         438  +
                    let mut data = Credentials::try_from(creds)?;
         439  +
                    data.get_property_mut_or_default::<Vec<AwsCredentialFeature>>()
         440  +
                        .push(AwsCredentialFeature::S3ExpressBucket);
  438    441   
                    Ok((Identity::new(data.clone(), data.expiry()), data.expiry().unwrap()))
  439    442   
                })
  440    443   
                .await
  441    444   
        }
  442    445   
  443    446   
        fn bucket_name<'a>(&'a self, config_bag: &'a ConfigBag) -> Result<&'a str, BoxError> {
  444    447   
            let params = config_bag.load::<EndpointResolverParams>().expect("endpoint resolver params must be set");
  445    448   
            let params = params
  446    449   
                .get::<crate::config::endpoint::Params>()
  447    450   
                .expect("`Params` should be wrapped in `EndpointResolverParams`");
@@ -497,500 +556,916 @@
  517    520   
  518    521   
    impl ResolveIdentity for DefaultS3ExpressIdentityProvider {
  519    522   
        fn resolve_identity<'a>(&'a self, runtime_components: &'a RuntimeComponents, config_bag: &'a ConfigBag) -> IdentityFuture<'a> {
  520    523   
            IdentityFuture::new(async move { self.identity(runtime_components, config_bag).await })
  521    524   
        }
  522    525   
  523    526   
        fn cache_location(&self) -> IdentityCacheLocation {
  524    527   
            IdentityCacheLocation::IdentityResolver
  525    528   
        }
  526    529   
    }
         530  +
         531  +
    #[cfg(test)]
         532  +
    mod tests {
         533  +
        use super::*;
         534  +
        use aws_credential_types::credential_feature::AwsCredentialFeature;
         535  +
        use aws_credential_types::Credentials;
         536  +
         537  +
        // Helper function to create test runtime components with SigV4 identity resolver
         538  +
        fn create_test_runtime_components(
         539  +
            base_credentials: Credentials,
         540  +
            http_client: impl aws_smithy_runtime_api::client::http::HttpClient + 'static,
         541  +
        ) -> aws_smithy_runtime_api::client::runtime_components::RuntimeComponents {
         542  +
            use aws_credential_types::provider::SharedCredentialsProvider;
         543  +
            use aws_smithy_runtime::client::retries::strategy::NeverRetryStrategy;
         544  +
            use aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolver;
         545  +
            use aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
         546  +
            use aws_smithy_runtime_api::client::identity::SharedIdentityResolver;
         547  +
            use aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
         548  +
         549  +
            let sigv4_resolver = SharedIdentityResolver::new(SharedCredentialsProvider::new(base_credentials));
         550  +
         551  +
            // Create a simple auth scheme option resolver for testing
         552  +
            let auth_option_resolver = StaticAuthSchemeOptionResolver::new(vec![aws_runtime::auth::sigv4::SCHEME_ID]);
         553  +
         554  +
            // Create a test endpoint resolver
         555  +
            #[derive(Debug)]
         556  +
            struct TestEndpointResolver;
         557  +
            impl aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for TestEndpointResolver {
         558  +
                fn resolve_endpoint<'a>(
         559  +
                    &'a self,
         560  +
                    _params: &'a aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
         561  +
                ) -> aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
         562  +
                    aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Ok(aws_smithy_types::endpoint::Endpoint::builder()
         563  +
                        .url("https://test-bucket--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com")
         564  +
                        .build()))
         565  +
                }
         566  +
            }
         567  +
         568  +
            RuntimeComponentsBuilder::for_tests()
         569  +
                .with_identity_resolver(aws_runtime::auth::sigv4::SCHEME_ID, sigv4_resolver)
         570  +
                .with_http_client(Some(http_client))
         571  +
                .with_time_source(Some(aws_smithy_async::time::SystemTimeSource::new()))
         572  +
                .with_retry_strategy(Some(NeverRetryStrategy::new()))
         573  +
                .with_auth_scheme_option_resolver(Some(auth_option_resolver))
         574  +
                .with_endpoint_resolver(Some(SharedEndpointResolver::new(TestEndpointResolver)))
         575  +
                .build()
         576  +
                .unwrap()
         577  +
        }
         578  +
         579  +
        // Helper function to create config bag with S3 Express bucket endpoint parameters
         580  +
        fn create_test_config_bag(bucket_name: &str) -> aws_smithy_types::config_bag::ConfigBag {
         581  +
            use aws_runtime::auth::SigV4OperationSigningConfig;
         582  +
            use aws_smithy_runtime_api::client::endpoint::EndpointResolverParams;
         583  +
            use aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
         584  +
            use aws_smithy_types::config_bag::{ConfigBag, Layer};
         585  +
            use aws_smithy_types::endpoint::Endpoint;
         586  +
            use aws_types::region::{Region, SigningRegion};
         587  +
            use aws_types::SigningName;
         588  +
         589  +
            let mut config_bag = ConfigBag::base();
         590  +
            let mut layer = Layer::new("test");
         591  +
         592  +
            let endpoint_params = EndpointResolverParams::new(crate::config::endpoint::Params::builder().bucket(bucket_name).build().unwrap());
         593  +
            layer.store_put(endpoint_params);
         594  +
         595  +
            // Add a test endpoint
         596  +
            let endpoint = Endpoint::builder()
         597  +
                .url(format!("https://{}.s3express-usw2-az1.us-west-2.amazonaws.com", bucket_name))
         598  +
                .build();
         599  +
            layer.store_put(endpoint);
         600  +
         601  +
            // Add stalled stream protection config
         602  +
            layer.store_put(StalledStreamProtectionConfig::disabled());
         603  +
         604  +
            // Add region for the S3 client config
         605  +
            layer.store_put(crate::config::Region::new("us-west-2"));
         606  +
         607  +
            // Add SigV4 operation signing config
         608  +
            let signing_config = SigV4OperationSigningConfig {
         609  +
                region: Some(SigningRegion::from(Region::new("us-west-2"))),
         610  +
                name: Some(SigningName::from_static("s3")),
         611  +
                ..Default::default()
         612  +
            };
         613  +
            layer.store_put(signing_config);
         614  +
         615  +
            config_bag.push_layer(layer);
         616  +
         617  +
            config_bag
         618  +
        }
         619  +
         620  +
        // Helper function to create mocked HTTP client for create_session responses
         621  +
        fn create_mock_http_client(_bucket_name: &str) -> impl aws_smithy_runtime_api::client::http::HttpClient {
         622  +
            use aws_smithy_runtime_api::client::http::{HttpClient, HttpConnector, HttpConnectorFuture, SharedHttpConnector};
         623  +
            use aws_smithy_runtime_api::client::orchestrator::{HttpRequest, HttpResponse};
         624  +
            use aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
         625  +
            use aws_smithy_types::body::SdkBody;
         626  +
         627  +
            #[derive(Debug)]
         628  +
            struct TestHttpClient;
         629  +
         630  +
            impl HttpClient for TestHttpClient {
         631  +
                fn http_connector(
         632  +
                    &self,
         633  +
                    _settings: &aws_smithy_runtime_api::client::http::HttpConnectorSettings,
         634  +
                    _components: &RuntimeComponents,
         635  +
                ) -> SharedHttpConnector {
         636  +
                    #[derive(Debug)]
         637  +
                    struct TestConnector;
         638  +
         639  +
                    impl HttpConnector for TestConnector {
         640  +
                        fn call(&self, _request: HttpRequest) -> HttpConnectorFuture {
         641  +
                            let response = http::Response::builder()
         642  +
                                .status(200)
         643  +
                                .body(SdkBody::from(
         644  +
                                    r#"<?xml version="1.0" encoding="UTF-8"?>
         645  +
                                    <CreateSessionResult>
         646  +
                                        <Credentials>
         647  +
                                            <AccessKeyId>session_access_key</AccessKeyId>
         648  +
                                            <SecretAccessKey>session_secret_key</SecretAccessKey>
         649  +
                                            <SessionToken>session_token</SessionToken>
         650  +
                                            <Expiration>2025-01-01T00:00:00Z</Expiration>
         651  +
                                        </Credentials>
         652  +
                                    </CreateSessionResult>"#,
         653  +
                                ))
         654  +
                                .unwrap();
         655  +
         656  +
                            HttpConnectorFuture::ready(Ok(HttpResponse::try_from(response).unwrap()))
         657  +
                        }
         658  +
                    }
         659  +
         660  +
                    SharedHttpConnector::new(TestConnector)
         661  +
                }
         662  +
            }
         663  +
         664  +
            TestHttpClient
         665  +
        }
         666  +
         667  +
        #[test]
         668  +
        fn test_session_credentials_conversion() {
         669  +
            let session_creds = SessionCredentials::builder()
         670  +
                .access_key_id("test_access_key")
         671  +
                .secret_access_key("test_secret_key")
         672  +
                .session_token("test_session_token")
         673  +
                .expiration(aws_smithy_types::DateTime::from_secs(1000))
         674  +
                .build()
         675  +
                .expect("valid session credentials");
         676  +
         677  +
            let credentials = Credentials::try_from(session_creds).expect("conversion should succeed");
         678  +
         679  +
            assert_eq!(credentials.access_key_id(), "test_access_key");
         680  +
            assert_eq!(credentials.secret_access_key(), "test_secret_key");
         681  +
            assert_eq!(credentials.session_token(), Some("test_session_token"));
         682  +
        }
         683  +
         684  +
        #[tokio::test]
         685  +
        async fn test_identity_provider_embeds_s3express_feature() {
         686  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
         687  +
         688  +
            // Use helper functions to set up test components
         689  +
            let base_credentials = Credentials::for_tests();
         690  +
            let http_client = create_mock_http_client(bucket_name);
         691  +
            let runtime_components = create_test_runtime_components(base_credentials, http_client);
         692  +
            let config_bag = create_test_config_bag(bucket_name);
         693  +
         694  +
            // Create the identity provider
         695  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
         696  +
                .behavior_version(crate::config::BehaviorVersion::latest())
         697  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
         698  +
                .build();
         699  +
         700  +
            // Call identity() and verify the S3ExpressBucket feature is present
         701  +
            let identity = provider
         702  +
                .identity(&runtime_components, &config_bag)
         703  +
                .await
         704  +
                .expect("identity() should succeed");
         705  +
         706  +
            let credentials = identity.data::<Credentials>().expect("Identity should contain Credentials");
         707  +
         708  +
            let features = credentials
         709  +
                .get_property::<Vec<AwsCredentialFeature>>()
         710  +
                .expect("Credentials should have features");
         711  +
         712  +
            assert!(
         713  +
                features.contains(&AwsCredentialFeature::S3ExpressBucket),
         714  +
                "S3ExpressBucket feature should be present in credentials returned by identity()"
         715  +
            );
         716  +
        }
         717  +
         718  +
        #[tokio::test]
         719  +
        async fn test_default_provider_resolves_identity() {
         720  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
         721  +
         722  +
            // Use helper functions to set up test components
         723  +
            let base_credentials = Credentials::for_tests();
         724  +
            let http_client = create_mock_http_client(bucket_name);
         725  +
            let runtime_components = create_test_runtime_components(base_credentials, http_client);
         726  +
            let config_bag = create_test_config_bag(bucket_name);
         727  +
         728  +
            // Use builder pattern to construct DefaultS3ExpressIdentityProvider
         729  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
         730  +
                .behavior_version(crate::config::BehaviorVersion::latest())
         731  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
         732  +
                .build();
         733  +
         734  +
            // Call identity() method and verify it succeeds
         735  +
            let identity = provider
         736  +
                .identity(&runtime_components, &config_bag)
         737  +
                .await
         738  +
                .expect("identity() should succeed");
         739  +
         740  +
            // Verify the identity contains credentials
         741  +
            assert!(identity.data::<Credentials>().is_some(), "Identity should contain Credentials");
         742  +
        }
         743  +
         744  +
        #[tokio::test]
         745  +
        async fn test_error_missing_sigv4_identity_resolver() {
         746  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
         747  +
         748  +
            // Create runtime components WITHOUT SigV4 identity resolver
         749  +
            use aws_smithy_runtime::client::retries::strategy::NeverRetryStrategy;
         750  +
            use aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolver;
         751  +
            use aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
         752  +
            use aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder;
         753  +
         754  +
            #[derive(Debug)]
         755  +
            struct TestEndpointResolver;
         756  +
            impl aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for TestEndpointResolver {
         757  +
                fn resolve_endpoint<'a>(
         758  +
                    &'a self,
         759  +
                    _params: &'a aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
         760  +
                ) -> aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
         761  +
                    aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Ok(aws_smithy_types::endpoint::Endpoint::builder()
         762  +
                        .url("https://test-bucket--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com")
         763  +
                        .build()))
         764  +
                }
         765  +
            }
         766  +
         767  +
            let http_client = create_mock_http_client(bucket_name);
         768  +
            let auth_option_resolver = StaticAuthSchemeOptionResolver::new(vec![aws_runtime::auth::sigv4::SCHEME_ID]);
         769  +
         770  +
            // Build runtime components without SigV4 identity resolver
         771  +
            let runtime_components = RuntimeComponentsBuilder::for_tests()
         772  +
                .with_http_client(Some(http_client))
         773  +
                .with_time_source(Some(aws_smithy_async::time::SystemTimeSource::new()))
         774  +
                .with_retry_strategy(Some(NeverRetryStrategy::new()))
         775  +
                .with_auth_scheme_option_resolver(Some(auth_option_resolver))
         776  +
                .with_endpoint_resolver(Some(SharedEndpointResolver::new(TestEndpointResolver)))
         777  +
                .build()
         778  +
                .unwrap();
         779  +
         780  +
            let config_bag = create_test_config_bag(bucket_name);
         781  +
         782  +
            // Create provider
         783  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
         784  +
                .behavior_version(crate::config::BehaviorVersion::latest())
         785  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
         786  +
                .build();
         787  +
         788  +
            // Call identity() and verify it fails with appropriate error message
         789  +
            let result = provider.identity(&runtime_components, &config_bag).await;
         790  +
         791  +
            assert!(result.is_err(), "identity() should fail when SigV4 identity resolver is missing");
         792  +
            let error_message = result.unwrap_err().to_string();
         793  +
            assert!(
         794  +
                error_message.contains("identity resolver for sigv4 should be set for S3"),
         795  +
                "Error message should indicate missing SigV4 identity resolver, got: {}",
         796  +
                error_message
         797  +
            );
         798  +
        }
         799  +
         800  +
        #[tokio::test]
         801  +
        #[should_panic(expected = "endpoint resolver params must be set")]
         802  +
        async fn test_error_missing_endpoint_parameters() {
         803  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
         804  +
         805  +
            // Create runtime components with SigV4 identity resolver
         806  +
            let base_credentials = Credentials::for_tests();
         807  +
            let http_client = create_mock_http_client(bucket_name);
         808  +
            let runtime_components = create_test_runtime_components(base_credentials, http_client);
         809  +
         810  +
            // Create config bag WITHOUT endpoint parameters
         811  +
            use aws_smithy_types::config_bag::ConfigBag;
         812  +
            let config_bag = ConfigBag::base();
         813  +
         814  +
            // Create provider
         815  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
         816  +
                .behavior_version(crate::config::BehaviorVersion::latest())
         817  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
         818  +
                .build();
         819  +
         820  +
            // Call identity() - this should panic with the expected message
         821  +
            let _ = provider.identity(&runtime_components, &config_bag).await;
         822  +
        }
         823  +
         824  +
        #[tokio::test]
         825  +
        async fn test_error_missing_bucket_name_in_endpoint_params() {
         826  +
            let bucket_name = "test-bucket--usw2-az1--x-s3";
         827  +
         828  +
            // Create runtime components with SigV4 identity resolver
         829  +
            let base_credentials = Credentials::for_tests();
         830  +
            let http_client = create_mock_http_client(bucket_name);
         831  +
            let runtime_components = create_test_runtime_components(base_credentials, http_client);
         832  +
         833  +
            // Create config bag with endpoint parameters but WITHOUT bucket name
         834  +
            use aws_runtime::auth::SigV4OperationSigningConfig;
         835  +
            use aws_smithy_runtime_api::client::endpoint::EndpointResolverParams;
         836  +
            use aws_smithy_runtime_api::client::stalled_stream_protection::StalledStreamProtectionConfig;
         837  +
            use aws_smithy_types::config_bag::{ConfigBag, Layer};
         838  +
            use aws_smithy_types::endpoint::Endpoint;
         839  +
            use aws_types::region::{Region, SigningRegion};
         840  +
            use aws_types::SigningName;
         841  +
         842  +
            let mut config_bag = ConfigBag::base();
         843  +
            let mut layer = Layer::new("test");
         844  +
         845  +
            // Create endpoint params without bucket name
         846  +
            let endpoint_params = EndpointResolverParams::new(
         847  +
                crate::config::endpoint::Params::builder()
         848  +
                    // Intentionally NOT setting bucket name
         849  +
                    .build()
         850  +
                    .unwrap(),
         851  +
            );
         852  +
            layer.store_put(endpoint_params);
         853  +
         854  +
            // Add other required config
         855  +
            let endpoint = Endpoint::builder().url("https://s3.us-west-2.amazonaws.com").build();
         856  +
            layer.store_put(endpoint);
         857  +
            layer.store_put(StalledStreamProtectionConfig::disabled());
         858  +
            layer.store_put(crate::config::Region::new("us-west-2"));
         859  +
         860  +
            let signing_config = SigV4OperationSigningConfig {
         861  +
                region: Some(SigningRegion::from(Region::new("us-west-2"))),
         862  +
                name: Some(SigningName::from_static("s3")),
         863  +
                ..Default::default()
         864  +
            };
         865  +
            layer.store_put(signing_config);
         866  +
         867  +
            config_bag.push_layer(layer);
         868  +
         869  +
            // Create provider
         870  +
            let provider = DefaultS3ExpressIdentityProvider::builder()
         871  +
                .behavior_version(crate::config::BehaviorVersion::latest())
         872  +
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
         873  +
                .build();
         874  +
         875  +
            // Call identity() and verify it fails with appropriate error message
         876  +
            let result = provider.identity(&runtime_components, &config_bag).await;
         877  +
         878  +
            assert!(result.is_err(), "identity() should fail when bucket name is missing from endpoint params");
         879  +
            let error_message = result.unwrap_err().to_string();
         880  +
            assert!(
         881  +
                error_message.contains("A bucket was not set in endpoint params"),
         882  +
                "Error message should indicate missing bucket name, got: {}",
         883  +
                error_message
         884  +
            );
         885  +
        }
         886  +
    }
  527    887   
}
  528    888   
  529    889   
/// Supporting code for S3 Express runtime plugin
  530    890   
pub(crate) mod runtime_plugin {
  531    891   
    use std::borrow::Cow;
  532    892   
  533    893   
    use aws_runtime::auth::SigV4SessionTokenNameOverride;
  534    894   
    use aws_sigv4::http_request::{SignatureLocation, SigningSettings};
  535    895   
    use aws_smithy_runtime_api::{
  536    896   
        box_error::BoxError,
@@ -624,984 +771,1136 @@
  644   1004   
    mod tests {
  645   1005   
        use super::*;
  646   1006   
        use aws_credential_types::Credentials;
  647   1007   
        use aws_smithy_runtime_api::client::identity::ResolveIdentity;
  648   1008   
  649   1009   
        #[test]
  650   1010   
        fn disable_option_set_from_service_client_should_take_the_highest_precedence() {
  651   1011   
            // Disable option is set from service client.
  652   1012   
            let disable_s3_express_session_token = crate::config::DisableS3ExpressSessionAuth(true);
  653   1013   
  654         -
            // An environment variable says the session auth is _not_ disabled, but it will be
  655         -
            // overruled by what is in `layer`.
        1014  +
            // An environment variable says the session auth is _not_ disabled,
        1015  +
            // but it will be overruled by what is in `layer`.
  656   1016   
            let actual = config(
  657   1017   
                Some(disable_s3_express_session_token),
  658   1018   
                Env::from_slice(&[(super::env::S3_DISABLE_EXPRESS_SESSION_AUTH, "false")]),
  659   1019   
            );
  660   1020   
  661         -
            // A config layer from this runtime plugin should not provide a new `DisableS3ExpressSessionAuth`
  662         -
            // if the disable option is set from service client.
        1021  +
            // A config layer from this runtime plugin should not provide
        1022  +
            // a new `DisableS3ExpressSessionAuth` if the disable option is set from service client.
  663   1023   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().is_none());
  664   1024   
        }
  665   1025   
  666   1026   
        #[test]
  667   1027   
        fn disable_option_set_from_env_should_take_the_second_highest_precedence() {
  668         -
            // An environment variable says session auth is disabled
        1028  +
            // Disable option is set from environment variable.
  669   1029   
            let actual = config(None, Env::from_slice(&[(super::env::S3_DISABLE_EXPRESS_SESSION_AUTH, "true")]));
  670   1030   
        1031  +
            // The config layer should provide `DisableS3ExpressSessionAuth` from the environment variable.
  671   1032   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().unwrap().0);
  672   1033   
        }
  673   1034   
  674   1035   
        #[should_panic]
  675   1036   
        #[test]
  676   1037   
        fn disable_option_set_from_profile_file_should_take_the_lowest_precedence() {
  677         -
            // TODO(aws-sdk-rust#1073): Implement a test that mimics only setting
  678         -
            //  `s3_disable_express_session_auth` in a profile file
  679         -
            todo!()
        1038  +
            todo!("TODO(aws-sdk-rust#1073): Implement profile file test")
  680   1039   
        }
  681   1040   
  682   1041   
        #[test]
  683   1042   
        fn disable_option_should_be_unspecified_if_unset() {
        1043  +
            // Disable option is not set anywhere.
  684   1044   
            let actual = config(None, Env::from_slice(&[]));
  685   1045   
        1046  +
            // The config layer should not provide `DisableS3ExpressSessionAuth` when it's not configured.
  686   1047   
            assert!(actual.load::<crate::config::DisableS3ExpressSessionAuth>().is_none());
  687   1048   
        }
  688   1049   
  689   1050   
        #[test]
  690   1051   
        fn s3_express_runtime_plugin_should_set_default_identity_resolver() {
        1052  +
            // Config has SigV4 credentials provider, so S3 Express identity resolver should be set.
  691   1053   
            let config = crate::Config::builder()
  692   1054   
                .behavior_version_latest()
  693   1055   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  694   1056   
                .credentials_provider(Credentials::for_tests())
  695   1057   
                .build();
  696   1058   
  697   1059   
            let actual = runtime_components_builder(config);
        1060  +
            // The runtime plugin should provide a default S3 Express identity resolver.
  698   1061   
            assert!(actual.identity_resolver(&crate::s3_express::auth::SCHEME_ID).is_some());
  699   1062   
        }
  700   1063   
  701   1064   
        #[test]
  702   1065   
        fn s3_express_plugin_should_not_set_default_identity_resolver_without_sigv4_counterpart() {
        1066  +
            // Config does not have SigV4 credentials provider.
  703   1067   
            let config = crate::Config::builder()
  704   1068   
                .behavior_version_latest()
  705   1069   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  706   1070   
                .build();
  707   1071   
  708   1072   
            let actual = runtime_components_builder(config);
        1073  +
            // The runtime plugin should not provide S3 Express identity resolver without SigV4 credentials.
  709   1074   
            assert!(actual.identity_resolver(&crate::s3_express::auth::SCHEME_ID).is_none());
  710   1075   
        }
  711   1076   
  712   1077   
        #[tokio::test]
  713   1078   
        async fn s3_express_plugin_should_not_set_default_identity_resolver_if_user_provided() {
        1079  +
            // User provides a custom S3 Express credentials provider.
  714   1080   
            let expected_access_key_id = "expected acccess key ID";
  715   1081   
            let config = crate::Config::builder()
  716   1082   
                .behavior_version_latest()
  717   1083   
                .credentials_provider(Credentials::for_tests())
  718   1084   
                .express_credentials_provider(Credentials::new(
  719   1085   
                    expected_access_key_id,
  720   1086   
                    "secret",
  721   1087   
                    None,
  722   1088   
                    None,
  723   1089   
                    "test express credentials provider",
  724   1090   
                ))
  725   1091   
                .time_source(aws_smithy_async::time::SystemTimeSource::new())
  726   1092   
                .build();
  727   1093   
  728         -
            // `RuntimeComponentsBuilder` from `S3ExpressRuntimePlugin` should not provide an S3Express identity resolver.
        1094  +
            // The runtime plugin should not override the user-provided identity resolver.
  729   1095   
            let runtime_components_builder = runtime_components_builder(config.clone());
  730   1096   
            assert!(runtime_components_builder
  731   1097   
                .identity_resolver(&crate::s3_express::auth::SCHEME_ID)
  732   1098   
                .is_none());
  733   1099   
  734         -
            // Get the S3Express identity resolver from the service config.
        1100  +
            // The user-provided identity resolver should be used.
  735   1101   
            let express_identity_resolver = config.runtime_components.identity_resolver(&crate::s3_express::auth::SCHEME_ID).unwrap();
  736   1102   
            let creds = express_identity_resolver
  737   1103   
                .resolve_identity(&RuntimeComponentsBuilder::for_tests().build().unwrap(), &ConfigBag::base())
  738   1104   
                .await
  739   1105   
                .unwrap();
  740   1106   
  741         -
            // Verify credentials are the one generated by the S3Express identity resolver user provided.
  742   1107   
            assert_eq!(expected_access_key_id, creds.data::<Credentials>().unwrap().access_key_id());
  743   1108   
        }
  744   1109   
    }
  745   1110   
}
  746   1111   
  747   1112   
pub(crate) mod checksum {
  748   1113   
    use crate::http_request_checksum::DefaultRequestChecksumOverride;
  749   1114   
    use aws_smithy_checksums::ChecksumAlgorithm;
  750   1115   
    use aws_smithy_types::config_bag::ConfigBag;
  751   1116   

tmp-codegen-diff/aws-sdk/sdk/s3/tests/express.rs

@@ -1,1 +86,92 @@
    1      1   
/*
    2      2   
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    3      3   
 * SPDX-License-Identifier: Apache-2.0
    4      4   
 */
    5      5   
    6      6   
use std::time::{Duration, SystemTime};
    7      7   
    8      8   
use aws_config::timeout::TimeoutConfig;
    9      9   
use aws_config::Region;
          10  +
use aws_runtime::user_agent::test_util::assert_ua_does_not_contain_metric_values;
   10     11   
use aws_sdk_s3::config::endpoint::{EndpointFuture, Params, ResolveEndpoint};
   11     12   
use aws_sdk_s3::config::{Builder, Credentials};
   12     13   
use aws_sdk_s3::presigning::PresigningConfig;
   13     14   
use aws_sdk_s3::primitives::SdkBody;
   14     15   
use aws_sdk_s3::types::ChecksumAlgorithm;
   15     16   
use aws_sdk_s3::{Client, Config};
   16     17   
use aws_smithy_http_client::test_util::dvr::ReplayingClient;
   17     18   
use aws_smithy_http_client::test_util::{capture_request, ReplayEvent, StaticReplayClient};
   18     19   
use aws_smithy_runtime::test_util::capture_test_logs::capture_test_logs;
   19     20   
use aws_smithy_types::endpoint::Endpoint;
   20     21   
use http_1x::Uri;
   21     22   
   22     23   
async fn test_client<F>(update_builder: F) -> Client
   23     24   
where
   24     25   
    F: Fn(Builder) -> Builder,
   25     26   
{
   26     27   
    let sdk_config = aws_config::from_env().region("us-west-2").load().await;
   27     28   
    let config = Config::from(&sdk_config).to_builder().with_test_defaults();
   28     29   
    aws_sdk_s3::Client::from_conf(update_builder(config).build())
   29     30   
}
   30     31   
   31     32   
#[tokio::test]
   32     33   
async fn create_session_request_should_not_include_x_amz_s3session_token() {
   33     34   
    let (http_client, request) = capture_request(None);
   34     35   
    // There was a bug where a regular SigV4 session token was overwritten by an express session token
   35     36   
    // even for CreateSession API request.
   36     37   
    // To exercise that code path, it is important to include credentials with a session token below.
   37     38   
    let conf = Config::builder()
   38     39   
        .http_client(http_client)
   39     40   
        .region(Region::new("us-west-2"))
   40     41   
        .credentials_provider(::aws_credential_types::Credentials::for_tests_with_session_token())
   41     42   
        .build();
   42     43   
    let client = Client::from_conf(conf);
   43     44   
   44     45   
    let _ = client
   45     46   
        .list_objects_v2()
   46     47   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
   47     48   
        .send()
   48     49   
        .await;
   49     50   
   50     51   
    let req = request.expect_request();
   51     52   
    assert!(
   52     53   
        req.headers().get("x-amz-create-session-mode").is_none(),
   53     54   
        "`x-amz-create-session-mode` should not appear in headers of the first request when an express bucket is specified"
   54     55   
    );
   55     56   
    assert!(req.headers().get("x-amz-security-token").is_some());
   56     57   
    assert!(req.headers().get("x-amz-s3session-token").is_none());
          58  +
          59  +
    // The first request uses regular SigV4 credentials (for CreateSession), not S3 Express credentials,
          60  +
    // so metric "J" should NOT be present yet. It will appear on subsequent requests that use S3 Express credentials.
          61  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
          62  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
   57     63   
}
   58     64   
   59     65   
#[tokio::test]
   60     66   
async fn mixed_auths() {
   61     67   
    let _logs = capture_test_logs();
   62     68   
   63     69   
    let http_client = ReplayingClient::from_file("tests/data/express/mixed-auths.json").unwrap();
   64     70   
    let client = test_client(|b| b.http_client(http_client.clone())).await;
   65     71   
   66     72   
    // A call to an S3 Express bucket where we should see two request/response pairs,
@@ -246,252 +364,373 @@
  266    272   
        .await;
  267    273   
  268    274   
    let checksum_headers: Vec<_> = http_client
  269    275   
        .actual_requests()
  270    276   
        .last()
  271    277   
        .unwrap()
  272    278   
        .headers()
  273    279   
        .iter()
  274    280   
        .filter(|(key, _)| key.starts_with("x-amz-checksum"))
  275    281   
        .collect();
  276         -
  277    282   
    assert_eq!(1, checksum_headers.len());
  278    283   
    assert_eq!("x-amz-checksum-crc32", checksum_headers[0].0);
         284  +
  279    285   
    http_client.assert_requests_match(&[""]);
  280    286   
}
  281    287   
  282    288   
#[tokio::test]
  283    289   
async fn default_checksum_should_be_none() {
  284    290   
    let http_client = StaticReplayClient::new(vec![
  285    291   
        ReplayEvent::new(create_session_request(), create_session_response()),
  286    292   
        ReplayEvent::new(
  287    293   
            operation_request_with_checksum("test?x-id=PutObject", None),
  288    294   
            response_ok(),
  289    295   
        ),
  290    296   
    ]);
  291    297   
    let client = test_client(|b| b.http_client(http_client.clone())).await;
  292    298   
  293    299   
    let _ = client
  294    300   
        .put_object()
  295    301   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
  296    302   
        .key("test")
  297    303   
        .body(SdkBody::empty().into())
  298    304   
        .send()
  299    305   
        .await;
  300    306   
  301    307   
    http_client.assert_requests_match(&[""]);
  302    308   
  303    309   
    let mut all_checksums = ChecksumAlgorithm::values()
  304    310   
        .iter()
  305    311   
        .map(|checksum| format!("amz-checksum-{}", checksum.to_lowercase()))
  306    312   
        .chain(std::iter::once("content-md5".to_string()));
  307         -
  308    313   
    assert!(!all_checksums.any(|checksum| http_client
  309    314   
        .actual_requests()
  310    315   
        .any(|req| req.headers().iter().any(|(key, _)| key == checksum))));
  311    316   
}
  312    317   
  313    318   
#[tokio::test]
  314    319   
async fn disable_s3_express_session_auth_at_service_client_level() {
  315    320   
    let (http_client, request) = capture_request(None);
  316    321   
    let conf = Config::builder()
  317    322   
        .http_client(http_client)
  318    323   
        .region(Region::new("us-west-2"))
  319    324   
        .with_test_defaults()
  320    325   
        .disable_s3_express_session_auth(true)
  321    326   
        .build();
  322    327   
    let client = Client::from_conf(conf);
  323    328   
  324    329   
    let _ = client
  325    330   
        .list_objects_v2()
  326    331   
        .bucket("s3express-test-bucket--usw2-az1--x-s3")
  327    332   
        .send()
  328    333   
        .await;
  329    334   
  330    335   
    let req = request.expect_request();
  331    336   
    assert!(
  332    337   
        req.headers().get("x-amz-create-session-mode").is_none(),
  333    338   
        "x-amz-create-session-mode should not appear in headers when S3 Express session auth is disabled"
  334    339   
    );
         340  +
         341  +
    // Verify that the User-Agent does NOT contain the S3ExpressBucket metric "J" when session auth is disabled
         342  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
         343  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
  335    344   
}
  336    345   
  337    346   
#[tokio::test]
  338    347   
async fn disable_s3_express_session_auth_at_operation_level() {
  339    348   
    let (http_client, request) = capture_request(None);
  340    349   
    let conf = Config::builder()
  341    350   
        .http_client(http_client)
  342    351   
        .region(Region::new("us-west-2"))
  343    352   
        .with_test_defaults()
  344    353   
        .build();
@@ -391,400 +450,463 @@
  411    420   
        .send()
  412    421   
        .await;
  413    422   
  414    423   
    let req = rx.expect_request();
  415    424   
    let actual_session_token = req
  416    425   
        .headers()
  417    426   
        .get("x-amz-security-token")
  418    427   
        .expect("x-amz-security-token should be present");
  419    428   
    assert_eq!(expected_session_token, actual_session_token);
  420    429   
    assert!(req.headers().get("x-amz-s3session-token").is_none());
         430  +
         431  +
    // Verify that the User-Agent does NOT contain the S3ExpressBucket metric "J" for regular buckets
         432  +
    let user_agent = req.headers().get("x-amz-user-agent").unwrap();
         433  +
    assert_ua_does_not_contain_metric_values(user_agent, &["J"]);
  421    434   
}
  422    435   
  423    436   
#[tokio::test]
  424    437   
async fn s3_express_auth_flow_should_not_be_reached_with_no_auth_schemes() {
  425    438   
    #[derive(Debug)]
  426    439   
    struct TestResolver {
  427    440   
        url: String,
  428    441   
    }
  429    442   
    impl ResolveEndpoint for TestResolver {
  430    443   
        fn resolve_endpoint(&self, _params: &Params) -> EndpointFuture<'_> {

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

@@ -1,1 +119,119 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restXml"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-smithy-xml]
   53     53   
path = "../aws-smithy-xml"
   54     54   
version = "0.60.11"
   55     55   
   56     56   
[dependencies.aws-types]
   57     57   
path = "../aws-types"
   58     58   
version = "1.3.9"
   59     59   
   60     60   
[dependencies.fastrand]
   61     61   
version = "2.0.0"
   62     62   
   63     63   
[dependencies.http]
   64     64   
version = "0.2.9"
   65     65   
   66     66   
[dependencies.md-5]
   67     67   
version = "0.10.0"
   68     68   
   69     69   
[dependencies.regex-lite]
   70     70   
version = "0.1.5"
   71     71   
   72     72   
[dependencies.tracing]
   73     73   
version = "0.1"
   74     74   
   75     75   
[dependencies.url]
   76     76   
version = "2.3.1"
   77     77   
[dev-dependencies.aws-config]
   78     78   
path = "../aws-config"
   79     79   
version = "1.8.9"
   80     80   
   81     81   
[dev-dependencies.aws-credential-types]
   82     82   
path = "../aws-credential-types"
   83     83   
features = ["test-util"]
   84         -
version = "1.2.8"
          84  +
version = "1.2.9"
   85     85   
   86     86   
[dev-dependencies.aws-runtime]
   87     87   
path = "../aws-runtime"
   88     88   
features = ["test-util"]
   89         -
version = "1.5.12"
          89  +
version = "1.5.13"
   90     90   
   91     91   
[dev-dependencies.aws-smithy-async]
   92     92   
path = "../aws-smithy-async"
   93     93   
features = ["test-util"]
   94     94   
version = "1.2.6"
   95     95   
   96     96   
[dev-dependencies.aws-smithy-http-client]
   97     97   
path = "../aws-smithy-http-client"
   98     98   
features = ["test-util", "wire-mock"]
   99     99   
version = "1.1.4"

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

@@ -1,1 +86,86 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tracing]
   69     69   
version = "0.1"
   70     70   
[dev-dependencies.aws-credential-types]
   71     71   
path = "../aws-credential-types"
   72     72   
features = ["test-util"]
   73         -
version = "1.2.8"
          73  +
version = "1.2.9"
   74     74   
   75     75   
[dev-dependencies.tokio]
   76     76   
version = "1.23.1"
   77     77   
features = ["macros", "test-util", "rt-multi-thread"]
   78     78   
   79     79   
[features]
   80     80   
behavior-version-latest = []
   81     81   
rustls = ["aws-smithy-runtime/tls-rustls"]
   82     82   
default-https-client = ["aws-smithy-runtime/default-https-client"]
   83     83   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]

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

@@ -1,1 +86,86 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tracing]
   69     69   
version = "0.1"
   70     70   
[dev-dependencies.aws-credential-types]
   71     71   
path = "../aws-credential-types"
   72     72   
features = ["test-util"]
   73         -
version = "1.2.8"
          73  +
version = "1.2.9"
   74     74   
   75     75   
[dev-dependencies.tokio]
   76     76   
version = "1.23.1"
   77     77   
features = ["macros", "test-util", "rt-multi-thread"]
   78     78   
   79     79   
[features]
   80     80   
behavior-version-latest = []
   81     81   
rustls = ["aws-smithy-runtime/tls-rustls"]
   82     82   
default-https-client = ["aws-smithy-runtime/default-https-client"]
   83     83   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]

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

@@ -1,1 +113,113 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsQuery"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-query]
   39     39   
path = "../aws-smithy-query"
   40     40   
version = "0.60.8"
   41     41   
   42     42   
[dependencies.aws-smithy-runtime]
   43     43   
path = "../aws-smithy-runtime"
   44     44   
features = ["client"]
   45     45   
version = "1.9.4"
   46     46   
   47     47   
[dependencies.aws-smithy-runtime-api]
   48     48   
path = "../aws-smithy-runtime-api"
   49     49   
features = ["client", "http-02x"]
   50     50   
version = "1.9.1"
   51     51   
   52     52   
[dependencies.aws-smithy-types]
   53     53   
path = "../aws-smithy-types"
   54     54   
version = "1.3.3"
   55     55   
   56     56   
[dependencies.aws-smithy-xml]
   57     57   
path = "../aws-smithy-xml"
   58     58   
version = "0.60.11"
   59     59   
   60     60   
[dependencies.aws-types]
   61     61   
path = "../aws-types"
   62     62   
version = "1.3.9"
   63     63   
   64     64   
[dependencies.fastrand]
   65     65   
version = "2.0.0"
   66     66   
   67     67   
[dependencies.http]
   68     68   
version = "0.2.9"
   69     69   
   70     70   
[dependencies.regex-lite]
   71     71   
version = "0.1.5"
   72     72   
   73     73   
[dependencies.tracing]
   74     74   
version = "0.1"
   75     75   
[dev-dependencies.aws-credential-types]
   76     76   
path = "../aws-credential-types"
   77     77   
features = ["test-util"]
   78         -
version = "1.2.8"
          78  +
version = "1.2.9"
   79     79   
   80     80   
[dev-dependencies.aws-runtime]
   81     81   
path = "../aws-runtime"
   82     82   
features = ["test-util"]
   83         -
version = "1.5.12"
          83  +
version = "1.5.13"
   84     84   
   85     85   
[dev-dependencies.aws-smithy-async]
   86     86   
path = "../aws-smithy-async"
   87     87   
features = ["test-util"]
   88     88   
version = "1.2.6"
   89     89   
   90     90   
[dev-dependencies.aws-smithy-http-client]
   91     91   
path = "../aws-smithy-http-client"
   92     92   
features = ["test-util", "wire-mock"]
   93     93   
version = "1.1.4"

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

@@ -1,1 +116,116 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsJson1_0"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tokio]
   69     69   
version = "1.23.1"
   70     70   
features = ["sync"]
   71     71   
   72     72   
[dependencies.tracing]
   73     73   
version = "0.1"
   74     74   
[dev-dependencies.aws-config]
   75     75   
path = "../aws-config"
   76     76   
version = "1.8.9"
   77     77   
   78     78   
[dev-dependencies.aws-credential-types]
   79     79   
path = "../aws-credential-types"
   80     80   
features = ["test-util"]
   81         -
version = "1.2.8"
          81  +
version = "1.2.9"
   82     82   
   83     83   
[dev-dependencies.aws-runtime]
   84     84   
path = "../aws-runtime"
   85     85   
features = ["test-util"]
   86         -
version = "1.5.12"
          86  +
version = "1.5.13"
   87     87   
   88     88   
[dev-dependencies.aws-smithy-async]
   89     89   
path = "../aws-smithy-async"
   90     90   
features = ["test-util"]
   91     91   
version = "1.2.6"
   92     92   
   93     93   
[dev-dependencies.aws-smithy-http-client]
   94     94   
path = "../aws-smithy-http-client"
   95     95   
features = ["test-util", "wire-mock"]
   96     96   
version = "1.1.4"

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

@@ -1,1 +99,99 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#awsJson1_0"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24         -
version = "1.5.12"
          24  +
version = "1.5.13"
   25     25   
   26     26   
[dependencies.aws-smithy-async]
   27     27   
path = "../aws-smithy-async"
   28     28   
version = "1.2.6"
   29     29   
   30     30   
[dependencies.aws-smithy-http]
   31     31   
path = "../aws-smithy-http"
   32     32   
version = "0.62.5"
   33     33   
   34     34   
[dependencies.aws-smithy-json]
   35     35   
path = "../aws-smithy-json"
   36     36   
version = "0.61.6"
   37     37   
   38     38   
[dependencies.aws-smithy-runtime]
   39     39   
path = "../aws-smithy-runtime"
   40     40   
features = ["client"]
   41     41   
version = "1.9.4"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime-api]
   44     44   
path = "../aws-smithy-runtime-api"
   45     45   
features = ["client", "http-02x"]
   46     46   
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-types]
   49     49   
path = "../aws-smithy-types"
   50     50   
version = "1.3.3"
   51     51   
   52     52   
[dependencies.aws-types]
   53     53   
path = "../aws-types"
   54     54   
version = "1.3.9"
   55     55   
   56     56   
[dependencies.bytes]
   57     57   
version = "1.4.0"
   58     58   
   59     59   
[dependencies.fastrand]
   60     60   
version = "2.0.0"
   61     61   
   62     62   
[dependencies.http]
   63     63   
version = "0.2.9"
   64     64   
   65     65   
[dependencies.regex-lite]
   66     66   
version = "0.1.5"
   67     67   
   68     68   
[dependencies.tokio]
   69     69   
version = "1.23.1"
   70     70   
features = ["sync"]
   71     71   
   72     72   
[dependencies.tracing]
   73     73   
version = "0.1"
   74     74   
[dev-dependencies.aws-config]
   75     75   
path = "../aws-config"
   76     76   
version = "1.8.9"
   77     77   
   78     78   
[dev-dependencies.aws-credential-types]
   79     79   
path = "../aws-credential-types"
   80     80   
features = ["test-util"]
   81         -
version = "1.2.8"
          81  +
version = "1.2.9"
   82     82   
   83     83   
[dev-dependencies.aws-smithy-async]
   84     84   
path = "../aws-smithy-async"
   85     85   
features = ["test-util"]
   86     86   
version = "1.2.6"
   87     87   
   88     88   
[dev-dependencies.tokio]
   89     89   
version = "1.23.1"
   90     90   
features = ["macros", "test-util", "rt-multi-thread"]
   91     91   

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

@@ -1,1 +55,55 @@
   10     10   
rust-version = "1.86.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.8"
          20  +
version = "1.2.9"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24     24   
features = ["event-stream"]
   25         -
version = "1.5.12"
          25  +
version = "1.5.13"
   26     26   
   27     27   
[dependencies.aws-sigv4]
   28     28   
path = "../aws-sigv4"
   29     29   
version = "1.3.5"
   30     30   
   31     31   
[dependencies.aws-smithy-async]
   32     32   
path = "../aws-smithy-async"
   33     33   
version = "1.2.6"
   34     34   
   35     35   
[dependencies.aws-smithy-eventstream]
@@ -65,65 +130,130 @@
   85     85   
[dev-dependencies.async-stream]
   86     86   
version = "0.3.0"
   87     87   
   88     88   
[dev-dependencies.aws-config]
   89     89   
path = "../aws-config"
   90     90   
version = "1.8.9"
   91     91   
   92     92   
[dev-dependencies.aws-credential-types]
   93     93   
path = "../aws-credential-types"
   94     94   
features = ["test-util"]
   95         -
version = "1.2.8"
          95  +
version = "1.2.9"
   96     96   
   97     97   
[dev-dependencies.aws-runtime]
   98     98   
path = "../aws-runtime"
   99     99   
features = ["test-util"]
  100         -
version = "1.5.12"
         100  +
version = "1.5.13"
  101    101   
  102    102   
[dev-dependencies.aws-smithy-async]
  103    103   
path = "../aws-smithy-async"
  104    104   
features = ["test-util"]
  105    105   
version = "1.2.6"
  106    106   
  107    107   
[dev-dependencies.aws-smithy-eventstream]
  108    108   
path = "../aws-smithy-eventstream"
  109    109   
features = ["test-util"]
  110    110   
version = "0.60.12"