code: def push(self, name, definition, role_arn, log_execution_history):
      try:
          response = self._client.create_state_machine(
              name=name,
              definition=definition,
              roleArn=role_arn,
              loggingConfiguration=self._default_logging_configuration(
                  log_execution_history
              ),
          )
          state_machine_arn = response["stateMachineArn"]
      except self._client.exceptions.StateMachineAlreadyExists as e:
          # State Machine already exists, update it instead of creating it.
          state_machine_arn = e.response["Error"]["Message"].split("'")[
              1
          ]
          self._client.update_state_machine(
              stateMachineArn=state_machine_arn,
              definition=definition,
              roleArn=role_arn,
              loggingConfiguration=self._default_logging_configuration(
                  log_execution_history
              ),
          )
      return state_machine_arn
  
file_path: metaflow/metaflow/plugins/aws/step_functions/step_functions_client.py
imports: from metaflow.metaflow_config import AWS_SANDBOX_ENABLED, AWS_SANDBOX_REGION, SFN_EXECUTION_LOG_GROUP_ARN
label_desc: Use image node_id 3 for calling the StepFunctionsClient obj's underlying member method code with example usage: obj.push(name, definition, role_arn, log_execution_history) and returns: state_machine_arn