在本地机器上运行Python的lambda函数。
项目描述
在本地机器上运行lambda函数
准备开发环境
请使用Python 3.7+新建的虚拟环境。
安装
在虚拟环境中,运行以下命令。
$ pip install python-lambda-local
这将安装名为python-lambda-local的软件包到虚拟环境中。现在您可以使用命令python-lambda-local在您的机器上运行用Python编写的AWS Lambda函数。
作为shell命令的使用
运行python-lambda-local -h 查看帮助。
usage: python-lambda-local [-h] [-l LIBRARY_PATH] [-f HANDLER_FUNCTION] [-t TIMEOUT] [-a ARN_STRING] [-v VERSION_NAME] [-e ENVIRONMENT_VARIABLES] [--version] FILE EVENT Run AWS Lambda function written in Python on local machine. positional arguments: FILE lambda function file name EVENT event data file name optional 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
准备开发目录
项目目录结构
假设您的项目目录如下
├── 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
处理器的代码位于 test.py 文件中,处理器函数的名称为 handler。源代码依赖于第三方库 rx,并安装在 lib 目录中。测试事件以 JSON 格式存储在 event.json 文件中。
test.py 的内容
from __future__ import print_function
from rx import Observable
def handler(event, context):
xs = Observable.from_(range(event['answer']))
ys = xs.to_blocking()
zs = (x*x for x in ys if x % 7 == 0)
for x in zs:
print(x)
event.json 的内容
{
"answer": 42
}
运行 lambda 函数
在项目根目录中,可以使用以下命令运行 lambda 函数:
python-lambda-local -l lib/ -f handler -t 5 test.py event.json
输出将类似于:
[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: 0 49 196 441 784 1225 [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-5e6f715de531 Duration: 2.17 ms [root - INFO - 2018-11-20 17:10:53,360] RESULT: None
作为库使用
API 签名
call(func, event, context, environment_variables={})
使用给定的 event、context 和自定义 环境变量 调用一个处理器函数 func。
示例
请确保 AWS Lambda 函数中使用的第三方库可以导入。
pip install rx==1.6.1
要使用您的 Python 代码调用上面的 lambda 函数
from lambda_local.main import call
from lambda_local.context import Context
import test
event = {
"answer": 42
}
context = Context(5)
call(test.handler, event, context)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
python-lambda-local-0.1.13.tar.gz (9.8 kB 查看哈希)