code: def schedule(
      pipeline_name: str,
      schedule_expression: str,
      role_arn: Optional[str] = None,
      state: Optional[str] = DEFAULT_SCHEDULE_STATE,
      start_date: Optional[datetime] = None,
      sagemaker_session: Optional[Session] = None,
  ) -> str:
      """Creates an EventBridge Schedule that schedules executions of a sagemaker pipeline.
  
      The pipeline created will also have a pipeline parameter `scheduled-time` indicating when the
      pipeline is scheduled to run.
  
      Args:
          pipeline_name (str): The SageMaker Pipeline name that will be scheduled.
          schedule_expression (str): The expression that defines when the schedule runs. It supports
              at expression, rate expression and cron expression. See the
              `CreateSchedule API
              <https://docs.aws.amazon.com/scheduler/latest/APIReference/API_CreateSchedule.html#scheduler-CreateSchedulerequest-ScheduleExpression>`_
              for more details.
          state (str): Specifies whether the schedule is enabled or disabled. Valid values are
              ENABLED and DISABLED. See the `State request parameter
              <https://docs.aws.amazon.com/scheduler/latest/APIReference/API_CreateSchedule.html#scheduler-CreateSchedule-request-State>`_
              for more details. If not specified, it will default to ENABLED.
          start_date (Optional[datetime]): The date, in UTC, after which the schedule can begin
              invoking its target. Depending on the schedule’s recurrence expression, invocations
              might occur on, or after, the StartDate you specify.
          role_arn (Optional[str]): The Amazon Resource Name (ARN) of the IAM role that EventBridge
              Scheduler will assume for this target when the schedule is invoked.
          sagemaker_session (Optional[Session]): Session object which manages interactions
              with Amazon SageMaker APIs and any other AWS services needed. If not specified, the
              function creates one using the default AWS configuration chain.
      Returns:
          str: The EventBridge Schedule ARN.
      """
  
      _sagemaker_session = sagemaker_session or Session()
      _validate_pipeline_lineage_resources(
          pipeline_name, _sagemaker_session
      )
      _start_date = start_date or datetime.now(tz=pytz.utc)
      _role_arn = role_arn or get_execution_role(_sagemaker_session)
      event_bridge_scheduler_helper = EventBridgeSchedulerHelper(
          _sagemaker_session,
          _sagemaker_session.boto_session.client("scheduler"),
      )
      describe_pipeline_response = (
          _sagemaker_session.sagemaker_client.describe_pipeline(
              PipelineName=pipeline_name
          )
      )
      pipeline_arn = describe_pipeline_response["PipelineArn"]
      tags_propagate_to_lineage_resources = (
          _get_tags_from_pipeline_to_propagate_to_lineage_resources(
              pipeline_arn, _sagemaker_session
          )
      )
  
      logger.info(
          "Creating/Updating EventBridge Schedule for pipeline %s.",
          pipeline_name,
      )
      event_bridge_schedule_arn = (
          event_bridge_scheduler_helper.upsert_schedule(
              schedule_name=pipeline_name,
              pipeline_arn=pipeline_arn,
              schedule_expression=schedule_expression,
              state=state,
              start_date=_start_date,
              role=_role_arn,
          )
      )
      logger.info(
          "Created/Updated EventBridge Schedule for pipeline %s.",
          pipeline_name,
      )
      lineage_handler = FeatureProcessorLineageHandler(
          pipeline_name=pipeline_name,
          pipeline_arn=describe_pipeline_response["PipelineArn"],
          pipeline=describe_pipeline_response,
          sagemaker_session=_sagemaker_session,
      )
      lineage_handler.create_schedule_lineage(
          pipeline_name=pipeline_name,
          schedule_arn=event_bridge_schedule_arn["ScheduleArn"],
          schedule_expression=schedule_expression,
          state=state,
          start_date=_start_date,
          tags=tags_propagate_to_lineage_resources,
      )
      return event_bridge_schedule_arn["ScheduleArn"]
  
imports: from __future__ import absolute_import
  import logging
  import json
  import re
  from datetime import datetime
  from typing import Callable, List, Optional, Dict, Sequence, Union, Any, Tuple
  import pytz
  from botocore.exceptions import ClientError
  from sagemaker.feature_store.feature_processor._config_uploader import ConfigUploader
  from sagemaker.feature_store.feature_processor._enums import FeatureProcessorMode
  from sagemaker.feature_store.feature_processor._event_bridge_rule_helper import EventBridgeRuleHelper
  from sagemaker.feature_store.feature_processor._feature_processor_pipeline_events import FeatureProcessorPipelineEvents
  from sagemaker.feature_store.feature_processor.lineage._feature_processor_lineage_name_helper import _get_feature_group_lineage_context_name, _get_feature_group_pipeline_lineage_context_name, _get_feature_group_pipeline_version_lineage_context_name, _get_feature_processor_pipeline_lineage_context_name, _get_feature_processor_pipeline_version_lineage_context_name
  from sagemaker.lineage import context
  from sagemaker.lineage._utils import get_resource_name_from_arn
  from sagemaker.remote_function.runtime_environment.runtime_environment_manager import RuntimeEnvironmentManager
  from sagemaker.remote_function.spark_config import SparkConfig
  from sagemaker.vpc_utils import SUBNETS_KEY, SECURITY_GROUP_IDS_KEY
  from sagemaker.feature_store.feature_processor._constants import EXECUTION_TIME_PIPELINE_PARAMETER, EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT, RESOURCE_NOT_FOUND_EXCEPTION, SPARK_JAR_FILES_PATH, SPARK_PY_FILES_PATH, SPARK_FILES_PATH, FEATURE_PROCESSOR_TAG_KEY, FEATURE_PROCESSOR_TAG_VALUE, PIPELINE_CONTEXT_TYPE, DEFAULT_SCHEDULE_STATE, SCHEDULED_TIME_PIPELINE_PARAMETER, PIPELINE_CONTEXT_NAME_TAG_KEY, PIPELINE_VERSION_CONTEXT_NAME_TAG_KEY, PIPELINE_NAME_MAXIMUM_LENGTH, RESOURCE_NOT_FOUND, FEATURE_GROUP_ARN_REGEX_PATTERN, TO_PIPELINE_RESERVED_TAG_KEYS, DEFAULT_TRIGGER_STATE, EVENTBRIDGE_RULE_ARN_REGEX_PATTERN
  from sagemaker.feature_store.feature_processor._feature_processor_config import FeatureProcessorConfig
  from sagemaker.s3 import s3_path_join
  from sagemaker import Session, get_execution_role
  from sagemaker.feature_store.feature_processor._event_bridge_scheduler_helper import EventBridgeSchedulerHelper
  from sagemaker.workflow.pipeline import Pipeline
  from sagemaker.workflow.retry import StepRetryPolicy, StepExceptionTypeEnum, SageMakerJobStepRetryPolicy, SageMakerJobExceptionTypeEnum
  from sagemaker.workflow.steps import TrainingStep
  from sagemaker.estimator import Estimator
  from sagemaker.feature_store.feature_processor.lineage._feature_processor_lineage import FeatureProcessorLineageHandler, TransformationCode
  from sagemaker.remote_function.job import _JobSettings, JOBS_CONTAINER_ENTRYPOINT, SPARK_APP_SCRIPT_PATH
  from sagemaker.feature_store.feature_processor._data_source import CSVDataSource, FeatureGroupDataSource, ParquetDataSource
label_desc: Use image node_id 2 for calling a global function with example usage: schedule(pipeline_name, schedule_expression, role_arn, state, start_date, sagemaker_session) and returns: event_bridge_schedule_arn