77
88from .boto3_proxy import SessionProxy , _get_boto_session
99from .cipher import Cipher , KmsCipher
10- from .exceptions import InternalFailure , InvalidRequest , _HandlerError
10+ from .exceptions import (
11+ AccessDenied ,
12+ InternalFailure ,
13+ InvalidRequest ,
14+ _EncryptionError ,
15+ _HandlerError ,
16+ )
1117from .interface import (
1218 BaseHookHandlerRequest ,
1319 HandlerErrorCode ,
@@ -180,6 +186,9 @@ def _parse_request(
180186 # credentials are used when rescheduling, so can't zero them out (for now)
181187 invocation_point = HookInvocationPoint [event .actionInvocationPoint ]
182188 callback_context = event .requestContext .callbackContext or {}
189+ except _EncryptionError as e :
190+ LOG .exception ("Failed to decrypt credentials" )
191+ raise AccessDenied (f"{ e } ({ type (e ).__name__ } )" ) from e
183192 except Exception as e :
184193 LOG .exception ("Invalid request" )
185194 raise InvalidRequest (f"{ e } ({ type (e ).__name__ } )" ) from e
@@ -228,7 +237,6 @@ def print_or_log(message: str) -> None:
228237 print (message )
229238 traceback .print_exc ()
230239
231- event : Optional [HookInvocationRequest ] = None
232240 try :
233241 sessions , invocation_point , callback , event = self ._parse_request (
234242 event_data
@@ -276,12 +284,12 @@ def print_or_log(message: str) -> None:
276284 # use the raw event_data as a last-ditch attempt to call back if the
277285 # request is invalid
278286 return self ._create_progress_response (
279- progress , event
287+ progress , event_data
280288 )._serialize () # pylint: disable=protected-access
281289
282290 @staticmethod
283291 def _create_progress_response (
284- progress_event : ProgressEvent , request : Optional [HookInvocationRequest ]
292+ progress_event : ProgressEvent , request : Optional [MutableMapping [ str , Any ] ]
285293 ) -> HookProgressEvent :
286294 response = HookProgressEvent (Hook ._get_hook_status (progress_event .status ))
287295 response .result = progress_event .result
@@ -291,7 +299,7 @@ def _create_progress_response(
291299 response .callbackDelaySeconds = progress_event .callbackDelaySeconds
292300 response .errorCode = progress_event .errorCode
293301 if request :
294- response .clientRequestToken = request .clientRequestToken
302+ response .clientRequestToken = request .get ( " clientRequestToken" )
295303 return response
296304
297305 @staticmethod
0 commit comments