Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Run AWS Lambda function on local machine

License

NotificationsYou must be signed in to change notification settings

HDE/python-lambda-local

Repository files navigation

Join the chat at https://gitter.im/HDE/python-lambda-localGithub Actions statusPyPI version

Run lambda function on local machine

Prepare development environment

Please use a newly created virtualenv of Python 3.7+.

Installation

Within virtualenv, run the following command.

$ pip install python-lambda-local

This will install the package with namepython-lambda-local in the virtualenv.Now you can use the commandpython-lambda-local to run your AWS Lambda function written in Python on your own machine.

Usage as a shell command

Runpython-lambda-local -h to see the help.

usage: python-lambda-local [-h] [-l LIBRARY_PATH] [-f HANDLER_FUNCTION]                           [-t TIMEOUT] [-a ARN_STRING] [-v VERSION_NAME]                           [-e ENVIRONMENT_VARIABLES] [--version]                           FILE EVENTRun AWS Lambda function written in Python on local machine.positional arguments:  FILE                  lambda function file name  EVENT                 event data file nameoptional arguments:  -h, --help            show this help message and exit  -l LIBRARY_PATH, --library LIBRARY_PATH                        path of 3rd party libraries  -f HANDLER_FUNCTION, --function HANDLER_FUNCTION                        lambda function handler name, default: "handler"  -t TIMEOUT, --timeout TIMEOUT                        seconds until lambda function timeout, default: 3  -a ARN_STRING, --arn-string ARN_STRING                        ARN string for lambda function  -v VERSION_NAME, --version-name VERSION_NAME                        lambda function version name  -e ENVIRONMENT_VARIABLES, --environment-variables ENVIRONMENT_VARIABLES                        path to flat json file with environment variables  --version             print the version of python-lambda-local and exit

Prepare development directory

Project directory structure

Suppose your project directory is like this:

├── event.json├── lib│   ├── rx│   │   ├── abstractobserver.py│   │   ├── ... (package content of rx)...│   │       └── testscheduler.py│   └── Rx-1.6.1.dist-info│       ├── DESCRIPTION.rst│       ├── METADATA│       ├── metadata.json│       ├── pbr.json│       ├── RECORD│       ├── top_level.txt│       ├── WHEEL│       └── zip-safe└── test.py

The handler's code is intest.py and the function name of the handler ishandler.The source depends on 3rd party libraryrx and it is installed in the directorylib.The test event in json format is inevent.json file.

Installingrx library inlib/

pip install --target lib rx==1.6.1

Content oftest.py:

from __future__importprint_functionfromrximportObservabledefhandler(event,context):xs=Observable.from_(range(event['answer']))ys=xs.to_blocking()zs= (x*xforxinysifx%7==0)forxinzs:print(x)

Content ofevent.json:

{"answer":42}

Run the lambda function

Within the project root directory, you can run the lambda function with the following command

python-lambda-local -l lib/ -f handler -t 5 test.py event.json

The output will be like:

[root - INFO - 2018-11-20 17:10:53,352] Event: {'answer': 42}[root - INFO - 2018-11-20 17:10:53,352] START RequestId: 3c8e6db4-886a-43da-a1c7-5e6f715de531 Version: 0491964417841225[root - INFO - 2018-11-20 17:10:53,359] END RequestId: 3c8e6db4-886a-43da-a1c7-5e6f715de531[root - INFO - 2018-11-20 17:10:53,360] REPORT RequestId: 3c8e6db4-886a-43da-a1c7-5e6f715de531Duration: 2.17 ms[root - INFO - 2018-11-20 17:10:53,360] RESULT:None

Usage as a library

API signature

call(func,event,context,environment_variables={})

Call a handler functionfunc with givenevent,context and customenvironment_variables.

Sample

  1. Make sure the 3rd party libraries used in the AWS Lambda function can be imported.
pip install rx==1.6.1
  1. To call the lambda function above with your python code:
fromlambda_local.mainimportcallfromlambda_local.contextimportContextimporttestevent= {"answer":42}context=Context(5)if__name__=='__main__':call(test.handler,event,context)

Packages

No packages published

Contributors8


[8]ページ先頭

©2009-2025 Movatter.jp