Skip to content

Commit 62dca85

Browse files
authored
lazy-load signing region and scope from the ConfigBag (#2763)
## Motivation and Context RuntimePlugins **should not** consider other sources of configuration, instead, if needed, they should demonstrate these behaviors in RuntimePlugins. ## Description - Set region/signing service to `None` during initialization - Load region/signing service from the ConfigBag during signing along with loading them from EndpointConfig ## Testing - CI ---- _By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice._
1 parent 8c4d186 commit 62dca85

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

aws/rust-runtime/aws-runtime/src/auth/sigv4.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,12 +255,18 @@ impl SigV4HttpRequestSigner {
255255
.get::<SigV4OperationSigningConfig>()
256256
.ok_or(SigV4SigningError::MissingOperationSigningConfig)?;
257257

258+
let signing_region = config_bag.get::<SigningRegion>();
259+
let signing_service = config_bag.get::<SigningService>();
260+
258261
let EndpointAuthSchemeConfig {
259262
signing_region_override,
260263
signing_service_override,
261264
} = Self::extract_endpoint_auth_scheme_config(auth_scheme_endpoint_config)?;
262265

263-
match (signing_region_override, signing_service_override) {
266+
match (
267+
signing_region_override.or_else(|| signing_region.cloned()),
268+
signing_service_override.or_else(|| signing_service.cloned()),
269+
) {
264270
(None, None) => Ok(Cow::Borrowed(operation_config)),
265271
(region, service) => {
266272
let mut operation_config = operation_config.clone();

aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SigV4AuthDecorator.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ private class AuthOperationCustomization(private val codegenContext: ClientCodeg
131131
val signingOptional = section.operationShape.hasTrait<OptionalAuthTrait>()
132132
rustTemplate(
133133
"""
134-
let signing_region = cfg.get::<#{SigningRegion}>().cloned();
135-
let signing_service = cfg.get::<#{SigningService}>().cloned();
136134
let mut signing_options = #{SigningOptions}::default();
137135
signing_options.double_uri_encode = $doubleUriEncode;
138136
signing_options.content_sha256_header = $contentSha256Header;
@@ -141,8 +139,8 @@ private class AuthOperationCustomization(private val codegenContext: ClientCodeg
141139
signing_options.payload_override = #{payload_override};
142140
143141
${section.configBagName}.put(#{SigV4OperationSigningConfig} {
144-
region: signing_region,
145-
service: signing_service,
142+
region: None,
143+
service: None,
146144
signing_options,
147145
});
148146
// TODO(enableNewSmithyRuntime): Make auth options additive in the config bag so that multiple codegen decorators can register them

0 commit comments

Comments
 (0)