如何为Alexa的AWS lambda函数添加python库?

Vin*_*hah 35 python pip amazon-web-services aws-lambda alexa-skills-kit

我按照教程使用Python创建了一个Alexa应用程序:

Python Alexa教程

我能够成功地遵循所有步骤并使应用程序工作.我现在想要修改python代码并使用外部库,例如import requests 我使用pip安装的任何其他库.如何设置我的lambda函数以包含我在本机上本地安装的任何pip包?

dor*_*ian 16

官方文档是相当不错的.简而言之,您需要创建一个目录的zip文件,其中包含lambda函数的代码和您在顶级使用的所有外部库.

您可以通过停用virtualenv来模拟它,将所有必需的库复制到工作目录中(sys.path如果在命令行上调用脚本,则始终存在),并检查脚本是否仍然有效.

  • "官方文件非常好.在那里不得不与你意见不一致.单独链接到的页面的标题和第一句对我来说是否完全不清楚它们是否与将包导入我的AWS实例有关.(它是关于包装我创造的东西吗?谁知道!) (4认同)
  • 我想到了!我意识到我没有改变我的处理程序的名称.如果你从内联代码转到zip文件,它应该是filename.lambda_handler.谢谢! (3认同)
  • 没有责怪信使,但这是AWS的一部分.从pip/conda要求到lambda部署应该有更加结构化的方式. (2认同)

San*_*dhe 16

由于它是在亚马逊官方文档的链接描述这里 是为您的安装文件夹中所需的软件包,你有你的Python代码拉姆达后只创建的所有文件夹内容的拉链一样简单.

正如Vineeth在他的评论中指出的那样,从内联代码编辑器转换到zip文件上载方法的第一步是在配置设置下更改lambda函数处理程序名称,以包含保存lambda处理程序的python脚本文件名.

lambda_handler => {your-python-script-file-name} .lambda_handler.

配置LAMBDA功能

其他解决方案如python-lambdalambda-uploader有助于简化上传过程,最重要的是LOCAL TESTING.这将节省大量的开发时间.


小智 8

为了解决这个特殊问题,我们使用一个名为juniper 的库。简而言之,您所需要做的就是创建一个非常简单的清单文件,如下所示:

functions:
  # Name the zip file you want juni to create
  router:
    # Where are your dependencies located?
    requirements: ./src/requirements.txt.
    # Your source code.
    include:
    - ./src/lambda_function.py
Run Code Online (Sandbox Code Playgroud)

从此清单文件中,调用juni build将为您创建 zip 文件工件。该文件将包含您在requirements.txt 中指定的所有依赖项。

该命令将创建该文件./dist/router.zip。我们将该文件与 sam 模板结合使用。但是,您随后可以使用该 zip 并将其上传到控制台,或通过 awscli。


d3m*_*ing 7

您可能希望研究使用zappa等框架来处理打包和部署lambda函数.

您可以将其与flask-ask结合使用,以便更轻松地制作Alexa技能.甚至还有这样的视频教程(从扎帕自述)在这里