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

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

.. autoapi-nested-parse::

   This module contains AWS SQS hook



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.amazon.aws.hooks.sqs.SqsHook
   airflow.providers.amazon.aws.hooks.sqs.SQSHook




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

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

   Interact with Amazon Simple Queue Service.

   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:: create_queue(self, queue_name, attributes = None)

      Create queue using connection object

      :param queue_name: name of the queue.
      :param attributes: additional attributes for the queue (default: None)
          For details of the attributes parameter see :py:meth:`SQS.create_queue`

      :return: dict with the information about the queue
          For details of the returned value see :py:meth:`SQS.create_queue`
      :rtype: dict


   .. py:method:: send_message(self, queue_url, message_body, delay_seconds = 0, message_attributes = None)

      Send message to the queue

      :param queue_url: queue url
      :param message_body: the contents of the message
      :param delay_seconds: seconds to delay the message
      :param message_attributes: additional attributes for the message (default: None)
          For details of the attributes parameter see :py:meth:`botocore.client.SQS.send_message`

      :return: dict with the information about the message sent
          For details of the returned value see :py:meth:`botocore.client.SQS.send_message`
      :rtype: dict



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

   Bases: :py:obj:`SqsHook`

   This hook is deprecated.
   Please use :class:`airflow.providers.amazon.aws.hooks.sqs.SqsHook`.


