我目前正在尝试在AWS Lambda函数中使用Python requests
模块。以下是我到目前为止采取的步骤:
我创建了一个新目录,并使用命令pip3 install requests -t .
然后我在目录中编写了一个简单的Python脚本test_requests.py
,如下所示:
import requests
def my_handler(event, context):
r = requests.get("http://google.com")
return r
我使用zip test_requests.zip *
然后我使用以下命令将该函数上传到AWS:aws lambda create-function --function-name test_requests --zip-file fileb://test_requests.zip --handler test_requests.my_handler --runtime python3.6 --region us-east-1 --role xxxMY_ROLE_ARNxxx
最后,我使用此命令调用了该函数:aws lambda invoke --function-name test-requests --payload {} --region us-east-1 lambda_response.txt
当我发出这个命令时,我从Lambda得到了一个未处理的异常。输出文件lambda_response.txt
包含:{"errorMessage": "module 'requests' has no attribute 'get'", "errorType": "AttributeError", "stackTrace": [["/var/task/test_requests.py", 3, "my_handler", "r = requests.get('http://google.com')"]]}
我见过几个关于AWS lambda的问题,并且无法正确导入模块。这些问题似乎都集中在lambda无法找到模块。在这种情况下,似乎lambda已找到请求,但无法访问其所有属性。
答案 0 :(得分:12)
我弄清楚我做错了什么。 zip test.zip *
仅压缩目录结构的顶级。我需要-r
标志才能捕获所有内容。