code: def _get_resolved_alias_name(self, property_name, original_alias_value, intrinsics_resolver):
          
  
          # Try to resolve.
          resolved_alias_name = intrinsics_resolver.resolve_parameter_refs(original_alias_value)
  
          if not isinstance(resolved_alias_name, string_types):
              # This is still a dictionary which means we are not able to completely resolve intrinsics
              raise InvalidResourceException(self.logical_id,
                                             "'{}' must be a string or a Ref to a template parameter"
                                             .format(property_name))
  
          return resolved_alias_name
docs: Alias names can be supplied as an intrinsic function. This method tries to extract alias name from a reference
          to a parameter. If it cannot completely resolve (ie. if a complex intrinsic function was used), then this
          method raises an exception. If alias name is just a plain string, it will return as is
  
          :param dict or string original_alias_value: Value of Alias property as provided by the customer
          :param samtranslator.intrinsics.resolver.IntrinsicsResolver intrinsics_resolver: Instance of the resolver that
              knows how to resolve parameter references
          :return string: Alias name
          :raises InvalidResourceException: If the value is a complex intrinsic function that cannot be resolved