Metadata-Version: 2.1
Name: python-lambda-4dn
Version: 1.0.1
Summary: FORKED for 4dn-dcic. Use to package and deploy lambda functions.
Home-page: https://github.com/4dn-dcic/python-lambda
Author: 4DN Team at Harvard Medical School
Author-email: william_ronchetti@hms.harvard.edu
License: ISCL
Description: ========
        python-λ
        ========
        
        
        .. image:: https://img.shields.io/pypi/v/python-lambda.svg
          :alt: Pypi
          :target: https://pypi.python.org/pypi/python-lambda/
        
        .. image:: https://travis-ci.org/4dn-dcic/python-lambda.svg?branch=master
          :alt: Build Status
          :target: https://travis-ci.org/4dn-dcic/python-lambda
        
        .. image:: https://coveralls.io/repos/github/4dn-dcic/python-lambda/badge.svg?branch=master
          :alt: Coverage
          :target: https://coveralls.io/github/4dn-dcic/python-lambda?branch=master
        
        Python-lambda is a toolset for developing and deploying *serverless* Python code in AWS Lambda.
        
        Important
        =======================
        This is a FORK of the original Python-lambda package by Nick Ficano.
        It will NOT be updated regularly and is frozen per our projects needs.
        
        Description
        ===========
        
        AWS Lambda is a service that allows you to write Python, Java, or Node.js code that gets executed in response to events like http requests or files uploaded to S3.
        
        Working with Lambda is relatively easy, but the process of bundling and deploying your code is not as simple as it could be.
        
        The *Python-Lambda* library takes away the guess work of developing your Python-Lambda services by providing you a toolset to streamline the annoying parts.
        
        Requirements
        ============
        
        * Python 3.6
        * Pip (Any should work)
        * Virtualenv (>=15.0.0)
        * Virtualenvwrapper (>=4.7.1)
        
        Getting Started
        ===============
        
        Using this library is intended to be as straightforward as possible. Code for a very simple lambda used in the tests is reproduced below.
        
        .. code:: python
        
          config = {
              'function_name': 'my_test_function',
              'function_module': 'service',
              'function_handler': 'handler',
              'handler': 'service.handler',
              'region': 'us-east-1',
              'runtime': 'python3.6',
              'role': 'helloworld',
              'description': 'Test lambda'
          }
        
        
          def handler(event, context):
              return 'Hello! My input event is %s' % event
        
        This code illustrates the two things required to create a lambda. The first is ``config``, which specifies metadata for AWS. One important thing to note in here is the ``role`` field. This must be a IAM role with Lambda permissions - the one in this example is ours. The second is the ``handler`` function. This is the actual code that is executed.
        
        Given this code in ``example_function.py`` you would deploy this function like so:
        
        .. code:: python
        
          from aws_lambda import deploy_function
          import example_function
          deploy_function(example_function,
                          function_name_suffix='<suffix>',
                          package_objects=['list', 'of', 'local', 'modules'],
                          requirements_fpath='path/to/requirements',
                          extra_config={'optional_arguments_for': 'boto3'})
        
        And that's it! You've deployed a simple lambda function. You can navigate to the AWS console to create a test event to trigger it or you can invoke it directly using Boto3.
        
        Advanced Usage
        ==============
        
        Many of the options specified in the above code block when it came to actually deploying the function are not used. These become more useful as you want to make more complicated lambda functions. The ideal way to incorporate dependencies into lambda functions is by providing a ``requirements.txt`` file. We rely on ``pip`` to install these packages and have found it to be very reliable. While it is also possible to specify local modules as well through ``package_objects``, doing so is not recommended because those modules must be specified at the top level of the repository in order to work out of the box. There is a comment on this topic in ``example_function_package.py`` with code on how to handle it.
        
        Tests
        ========
        
        Tests can be found in the ``test_aws_lambda.py``. Using the tests as a guide to develop your lambdas is probably a good idea. You can also see how to invoke the lambdas directly from Python (and interpret the response).
        
Keywords: python-lambda
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/x-rst
