2017-10-28 56 views
1

我對AWS很新,我遇到了一些問題。這是我的代碼:AWS python lambda函數:沒有模塊命名請求

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 而當試圖打印它給我一個語法錯誤。對不起格式。有什麼建議麼?

+3

'requests'不在標準庫中。您需要了解如何在該平臺上提供依賴關係;例如,通常使用'requirements.txt'文件來指定它們。看看例如http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html – jonrsharpe

+0

@jonrsharpe我在我的機器上安裝了虛擬環境。我應該上傳一切嗎'pip install -r requirements.txt'? – inson

回答

0

你必須命名您的拉姆達這種方式在Python代碼:

def lambda_function(event, context): 

和拉姆達控制檯處理程序:

main.lambda_function 

您的請求錯誤,必須在該模塊的文件夾.zip上傳到lambda之前。

+0

不,還有一個錯誤:'無法導入模塊'主':沒有模塊命名請求' – inson

+0

你有.zip文件夾裏面有請求庫嗎?上傳到lambda之前?那就是問題 –

0

這是因爲它在lambda中運行時缺少請求庫 - 它可能是它在本地機器上全局安裝的。如果您運行:
pip install requests -t .
與您的源代碼位於相同的目錄中,它將在該目錄中安裝requests包,然後您可以將它與lambda_function.py一起上傳到lambda。您可能需要爲boto3和JSON做同樣的:
pip install boto3 -t .
pip install json -t .

+0

我在我的機器上使用虛擬環境。我如何從requirements.txt上載和檢索依賴關係? – inson

0

「請求」模塊是不是在你試圖安裝你的「拉鍊」的文件。你必須通過'pip install module_name(例如請求)-t。'將所有模塊放入zip文件中。