code: def function_name(self):
          
          if self._function_identifier:
              return self._function_identifier
  
          # Function Identifier is *not* provided. If there is only one function in the template,
          # default to it.
  
          all_functions = [f for f in self._function_provider.get_all()]
          if len(all_functions) == 1:
              return all_functions[0].name
  
          # Get all the available function names to print helpful exception message
          all_function_names = [f.name for f in all_functions]
  
          # There are more functions in the template, and function identifier is not provided, hence raise.
          raise InvokeContextException("You must provide a function identifier (function's Logical ID in the template). "
                                       "Possible options in your template: {}".format(all_function_names))
docs: Returns name of the function to invoke. If no function identifier is provided, this method will return name of
          the only function from the template
  
          :return string: Name of the function
          :raises InvokeContextException: If function identifier is not provided