:py:mod:`tests.system.providers.amazon.aws.example_lambda`
==========================================================

.. py:module:: tests.system.providers.amazon.aws.example_lambda


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


Functions
~~~~~~~~~

.. autoapisummary::

   tests.system.providers.amazon.aws.example_lambda.create_zip
   tests.system.providers.amazon.aws.example_lambda.create_lambda
   tests.system.providers.amazon.aws.example_lambda.await_lambda
   tests.system.providers.amazon.aws.example_lambda.delete_lambda
   tests.system.providers.amazon.aws.example_lambda.delete_logs



Attributes
~~~~~~~~~~

.. autoapisummary::

   tests.system.providers.amazon.aws.example_lambda.DAG_ID
   tests.system.providers.amazon.aws.example_lambda.ROLE_ARN_KEY
   tests.system.providers.amazon.aws.example_lambda.sys_test_context_task
   tests.system.providers.amazon.aws.example_lambda.CODE_CONTENT
   tests.system.providers.amazon.aws.example_lambda.test_context
   tests.system.providers.amazon.aws.example_lambda.test_run


.. py:data:: DAG_ID
   :annotation: = example_lambda

   

.. py:data:: ROLE_ARN_KEY
   :annotation: = ROLE_ARN

   

.. py:data:: sys_test_context_task
   

   

.. py:data:: CODE_CONTENT
   :annotation: = Multiline-String

    .. raw:: html

        <details><summary>Show Value</summary>

    .. code-block:: text
        :linenos:

        
        def test(*args):
            print('Hello')


    .. raw:: html

        </details>

   

.. py:function:: create_zip(content)


.. py:function:: create_lambda(function_name, role_arn)


.. py:function:: await_lambda(function_name)


.. py:function:: delete_lambda(function_name)


.. py:function:: delete_logs(function_name)


.. py:data:: test_context
   

   

.. py:data:: test_run
   

   

