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

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

.. autoapi-nested-parse::

   This module contains AWS CloudFormation Hook



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.amazon.aws.hooks.cloud_formation.CloudFormationHook




.. py:class:: CloudFormationHook(*args, **kwargs)

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

   Interact with AWS CloudFormation.

   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:: get_stack_status(stack_name)

      Get stack status from CloudFormation.


   .. py:method:: create_stack(stack_name, cloudformation_parameters)

      Create stack in CloudFormation.

      :param stack_name: stack_name.
      :param cloudformation_parameters: parameters to be passed to CloudFormation.


   .. py:method:: delete_stack(stack_name, cloudformation_parameters = None)

      Delete stack in CloudFormation.

      :param stack_name: stack_name.
      :param cloudformation_parameters: parameters to be passed to CloudFormation (optional).



