Skip to content

Commit

Permalink
Merge pull request #4837 from remotion-dev/python-lambda-error-handling
Browse files Browse the repository at this point in the history
  • Loading branch information
JonnyBurger authored Feb 3, 2025
2 parents 8c0e5e0 + 7efa1cb commit dd7e4fc
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions packages/lambda-python/remotion_lambda/remotionclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,30 @@ def _parse_stream(self, stream):
def _invoke_lambda(self, function_name, payload):

client = self._create_lambda_client()
response = client.invoke(
FunctionName=function_name, Payload=payload, )
result = response['Payload'].read().decode('utf-8')
decoded_result = self._parse_stream(result)[-1]
try:
response = client.invoke(
FunctionName=function_name, Payload=payload)
result = response['Payload'].read().decode('utf-8')
decoded_result = self._parse_stream(result)[-1]
except client.exceptions.ResourceNotFoundException as e:
raise ValueError(
f"The function {function_name} does not exist.") from e
except client.exceptions.InvalidRequestContentException as e:
raise ValueError("The request content is invalid.") from e
except client.exceptions.RequestTooLargeException as e:
raise ValueError("The request payload is too large.") from e
except client.exceptions.ServiceException as e:
raise ValueError(
f"An internal service error occurred: {str(e)}") from e
except Exception as e:
raise ValueError(f"An unexpected error occurred: {str(e)}") from e

if 'errorMessage' in decoded_result:
raise ValueError(decoded_result['errorMessage'])

if 'type' in decoded_result and decoded_result['type'] == 'error':
raise ValueError(decoded_result['message'])
if (not 'type' in decoded_result or decoded_result['type'] != 'success'):
if 'type' not in decoded_result or decoded_result['type'] != 'success':
raise ValueError(result)

return decoded_result
Expand Down

0 comments on commit dd7e4fc

Please sign in to comment.