AWS python lambda函数:没有名为requests的模块

时间:2017-10-28 15:02:39

标签: python-2.7 amazon-web-services aws-lambda

我是AWS的新手,我遇到了一些问题。这是我的代码:

from __future__ import print_function
from urllib2 import Request, urlopen, URLError
import requests
import boto3
import json

def lambda_handler(event, context):
    url = "https://globalcurrencies.xignite.com/xGlobalCurrencies.json/GetHistoricalRatesRange?Symbol=BTCUSD&PriceType=Mid&StartDate=01/01/2017&EndDate=10/27/2017&PeriodType=Daily&FixingTime=22:00&_token=some_token_xyz"
    response = requests.get(url).json()
    # print json.dumps(response, indent=4) # gives a syntax error
    return response

文件名是lambda_function.py;我已经检查了stackoverflow上的类似问题,有些人提到我必须更改文件命名。但它没有帮助。以下是python方法的命名方式:
enter image description here                                                                              这是我得到的错误: START RequestId: cf24e9be-bbef-11e7-97b4-d9b586307f3e Version: $LATEST Unable to import module 'lambda_function': No module named requests 当尝试打印时,它给我一个语法错误。抱歉格式化。有什么建议吗?

6 个答案:

答案 0 :(得分:15)

请求不是AWS lambda中的标准库。

有两种解决方法:

1-将其从Botocore库堆栈导入为:

\Users\<Name>\AppData\Roaming\Netbeans\

Here有一个列表,列出了要在lambda中导入的所有可用库

2- Create一个包含virtualenv的部署包。

答案 1 :(得分:5)

这是因为它在lambda中运行时缺少请求库 - 可能是它在本地计算机上全局安装。如果您运行:      
pip install requests -t .
在与源代码相同的目录中,它将在该目录中安装请求包,然后您可以将其与lambda_function.py一起上载到lambda。您可能需要对boto3和json执行相同的操作:     
pip install boto3 -t .
    pip install json -t .

答案 2 :(得分:0)

您要使用Layers。您下载了一个python模块,例如 pip install requests -t。,然后只需将所有模块文件夹放入一个名为python的文件夹中,然后将其压缩并上传到aws控制台的lambda层部分即可。将其添加到您的lambda函数中,它将起作用。 dir结构非常重要,因此对于请求,当您解压缩该文件夹时,它应该是RequestLayer / python / requests /“ requests以及该软件包中所有其他文件夹”。 This guy gives a good step by step

答案 3 :(得分:0)

供以后使用Python的读者使用:如果直接在Cloud9中创建Lambda应用程序,则会注意到您的应用程序有一个虚拟环境。要安装请求(或与此相关的任何其他软件包),请执行以下操作:

  1. 右键单击您的应用程序文件夹
  2. 选择“在此处打开终端”
  3. 在终端中,键入source venv/bin/activate以激活您的虚拟环境
  4. 键入pip3 install requests以安装请求

就是这样。现在,您可以按照常规使用带有import requests的请求了。

答案 4 :(得分:0)

如果要包括requests之类的库,则可以使用lambda的图层。

1。创建邮政编码:

这是一个zip,其中包含您希望lambda函数使用的所有库。 首先,创建python文件夹:

$ mkdir python
$ cd python

然后,在其中安装所需的Python库。 您可以使用一个库来完成此操作:

$ pip install --target . requests

或带有库列表(requirements.txt)

$ pip install --target . -r requirements.txt

最后,压缩所有内容:

$ zip -r dependencies.zip .

2。创建一个图层

3。将图层添加到lambda函数

答案 5 :(得分:-1)

你必须在python代码中以这种方式命名你的lambda:

def lambda_function(event, context):

并在lambda控制台处理程序中:

main.lambda_function

对于您的请求错误,在上传到lambda之前,必须在.zip上包含该模块的文件夹。