:py:mod:`airflow.providers.amazon.aws.hooks.step_function`
==========================================================

.. py:module:: airflow.providers.amazon.aws.hooks.step_function


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.amazon.aws.hooks.step_function.StepFunctionHook




.. py:class:: StepFunctionHook(region_name = None, *args, **kwargs)

   Bases: :py:obj:`airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`

   Interact with an AWS Step Functions State Machine.

   Additional arguments (such as ``aws_conn_id``) may be specified and
   are passed down to the underlying AwsBaseHook.

   .. seealso::
       :class:`~airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook`

   .. py:method:: start_execution(self, state_machine_arn, name = None, state_machine_input = None)

      Start Execution of the State Machine.
      https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions.html#SFN.Client.start_execution

      :param state_machine_arn: AWS Step Function State Machine ARN
      :param name: The name of the execution.
      :param state_machine_input: JSON data input to pass to the State Machine
      :return: Execution ARN
      :rtype: str


   .. py:method:: describe_execution(self, execution_arn)

      Describes a State Machine Execution
      https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions.html#SFN.Client.describe_execution

      :param execution_arn: ARN of the State Machine Execution
      :return: Dict with Execution details
      :rtype: dict



