运行在amazon lambda上的python应用程序的最小值。

dmn-python-lambda的Python项目详细描述


===
蟒蛇-λ
==


…图片::https://img.shields.io/pypi/v/python lambda.svg
:alt:pypi
:目标:https://pypi.python.org/pypi/python lambda/

…图片::https://img.shields.io/pypi/pyversions/python lambda.svg
:alt:python versions
:target:https://pypi.python.org/pypi/python lambda/

python lambda是在aws lambda中开发和部署*无服务器*python代码的工具集。

贡献者
===========
python lambda和'pytube<;https://github.com/nficano/pytube/>;``两者都在继续增长势头,我呼吁贡献者帮助构建新功能,审查拉取请求,修复错误,并保持总体代码质量。如果你感兴趣,请发邮件到nficano[at]gmail.com.


description
==


aws lambda是一个允许你编写python、java和node.js的服务,c或执行响应事件(如http请求或上传到s3的文件)的代码。

开发python lambda服务,为您提供一个工具集来简化烦人的部分。


aws lambda只支持python 2.7/3.6)。
*pip(~8.1.1)
*virtualenv(~15.0.0)
*virtualenvwrapper(~4.7.1)


Getting Started
=必须在AWS帐户上创建名为"lambda_basic_execution"的IAM角色,并附加"lambda asiceexecution"策略。

在计算机上,创建一个新的virtualenv和项目文件夹。

。代码::bash

$mkvirtualenv pylambda
(pylambda)$mkdir pylambda


下一步,通过pypi使用pip下载*python lambda*代码::bash

(pylambda)$pip从"pylambda"目录安装python lambda

,运行以下命令启动项目。

代码::bash

(py lambda)$lambda init

这将创建以下文件:``event.json``、`````````uu init`、``service.py`和``config.yaml`。

让我们从在您选择的文本编辑器中打开``config.yaml``开始。在本教程中,唯一需要的信息是"aws_access_key_id"和"aws_secret_access_key"。您可以通过登录到aws管理控制台来找到它们。

接下来让我们打开"service.py",在这里您将找到以下函数:

。代码::python

def处理程序(事件、上下文):

e=event.get('e')
pi=event.get('pi')
return e+pi



这是处理函数;这是aws lambda将响应事件调用的函数。您会注意到,在示例代码中,"e"和"pi"是"dict"中的值。aws lambda使用"event"参数将事件数据传递给处理程序。

内容将在http响应负载中。

接下来,让我们打开"event.json"文件:

。代码::json

{
"pi":3.14,
"e":2.718
}

代码::bash

(pylambda)$lambda invoke-v

代码::bash

5.858

action.

"event.json"文件应该可以帮助您在本地开发lambda服务。您可以通过将`--event file=<;filename>;.json``参数传递给``lambda invoke``来指定备用的``event.json``文件。


准备将代码部署到lambda时,只需运行:

。代码::bash

(pylambda)$lambda deploy

deploy脚本将评估您的virtualenv并确定您的项目依赖项。它会将这些文件与处理程序函数一起打包成一个zip文件,然后上载到aws lambda。

您现在可以登录到"aws lambda管理控制台"lt;https://console.aws.amazon.com/lambda/>;`验证代码部署是否成功。

<;https://console.aws.amazon.com/lambda/>;``并单击您的函数。单击"API端点"选项卡,然后单击"添加API端点"。

最后,您需要更改函数的返回值以符合为api网关终结点定义的标准,该函数现在应该如下所示:

…代码::python

def处理程序(事件、上下文):

e=event.get('e')
pi=event.get('pi')
返回{
"statuscode":200,
"headers":{"content type":"application/json"},
"body":e+pi
}

代码::bash

$curl--header"内容类型:application/json"\
--request post\
--data'{"pi":3.14,"e":2.718}'\
https://<;api endpoint url>;
5.858000000000005


环境变量
===
lambda函数支持环境变量。为了设置要使用的已部署代码的环境变量,可以在"config.yaml"中配置它们。要在部署时加载环境变量的
值(而不是在配置文件中硬编码),可以使用本地环境值(请参见下面示例代码中的"env3"。

。代码::yaml

环境变量:
env1:foo
env2:baz
env3:${本地环境变量名}

如果您的函数不需要环境变量,只需将此部分保留在配置之外。

您可以使用"upload"命令将包发送到您选择的s3存储桶。
执行此操作之前,您需要在"config.yaml"中设置以下变量:

。代码::yaml

role:basic_s3_upload
bucket_name:"example bucket"
s3_key_prefix:"path/to/file/"


role必须对指定的bucket/key拥有"s3:putobject"权限才能正常上载。一旦设置好,就可以执行"lambda upload"来启动传输。

这可以通过使用为执行"upload"命令而设置的相同变量/aws权限发出"lambda deploy_s3"来完成。


development
===


"python lambda"的开发只在github上进行。补丁、测试等形式的贡献我们非常欢迎和鼓励用户创建和/或提出请求。如果此工具无法按预期运行,请打开一个问题。



执行以下命令:

…代码::bash

git checkout master

进行中的更改,将版本增加到修补程序版本以防止不准确的属性。
bumpversion--无标记修补程序




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List