diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 0cd7f56b..6958b9de 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -461,6 +461,8 @@ def is_step_function_event(event): The actual event must contain "Execution", "StateMachine", and "State" fields. """ event = event.get("Payload", event) + if not isinstance(event, dict): + return False # JSONPath style if "Execution" in event and "StateMachine" in event and "State" in event: diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 477aeec1..eb21f1e3 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -757,3 +757,7 @@ def test_is_step_function_event_dd_header(self): } } self.assertFalse(is_step_function_event(event)) + + def test_is_step_function_event_payload_not_dict(self): + event = {"Payload": "This is a string, not a dict"} + self.assertFalse(is_step_function_event(event))