@@ -167,14 +167,7 @@ def set_operation_specific_signer(context, signing_name, **kwargs):
167167 return auth_type
168168
169169 if auth_type == 'v4a' :
170- # If sigv4a is chosen, we must add additional signing config for
171- # global signature.
172- region = _resolve_sigv4a_region (context )
173- signing = {'region' : region , 'signing_name' : signing_name }
174- if 'signing' in context :
175- context ['signing' ].update (signing )
176- else :
177- context ['signing' ] = signing
170+ _set_sigv4a_signing_context (context , signing_name )
178171 signature_version = 'v4a'
179172 else :
180173 signature_version = 'v4'
@@ -201,6 +194,17 @@ def _resolve_sigv4a_region(context):
201194 return region or '*'
202195
203196
197+ def _set_sigv4a_signing_context (context , signing_name ):
198+ # SigV4A signs for a region set rather than a single credential scope
199+ # region, so ensure the request context reflects the configured region set.
200+ region = _resolve_sigv4a_region (context )
201+ signing = {'region' : region , 'signing_name' : signing_name }
202+ if 'signing' in context :
203+ context ['signing' ].update (signing )
204+ else :
205+ context ['signing' ] = signing
206+
207+
204208def decode_console_output (parsed , ** kwargs ):
205209 if 'Output' in parsed :
206210 try :
@@ -996,7 +1000,9 @@ def remove_bedrock_runtime_invoke_model_with_bidirectional_stream(
9961000 del class_attributes ['invoke_model_with_bidirectional_stream' ]
9971001
9981002
999- def remove_connecthealth_start_medical_scribe_listening_session (class_attributes , ** kwargs ):
1003+ def remove_connecthealth_start_medical_scribe_listening_session (
1004+ class_attributes , ** kwargs
1005+ ):
10001006 """Operation requires h2 which is currently unsupported in Python"""
10011007 if 'start_medical_scribe_listening_session' in class_attributes :
10021008 del class_attributes ['start_medical_scribe_listening_session' ]
@@ -1272,6 +1278,9 @@ def _set_auth_scheme_preference_signer(context, signing_name, **kwargs):
12721278 register_feature_id ('BEARER_SERVICE_ENV_VARS' )
12731279 resolved_signature_version = 'bearer'
12741280
1281+ if resolved_signature_version == 'v4a' :
1282+ _set_sigv4a_signing_context (context , signing_name )
1283+
12751284 if resolved_signature_version == signature_version :
12761285 return None
12771286 return resolved_signature_version
0 commit comments