跳转到主要内容

在本地机器上运行Python的lambda函数。

项目描述

Join the chat at https://gitter.im/HDE/python-lambda-local Github Actions status PyPI version

在本地机器上运行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={})

使用给定的 eventcontext 和自定义 环境变量 调用一个处理器函数 func

示例

  1. 请确保 AWS Lambda 函数中使用的第三方库可以导入。

pip install rx==1.6.1
  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 查看哈希)

上传时间 源代码

构建分发

python_lambda_local-0.1.13-py3-none-any.whl (9.6 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页