cod*_*leb 48 python amazon-web-services python-2.7 aws-lambda
我需要在python脚本中进行休息调用,每天运行一次.我无法使用AWS Lambdas将"requests"包打包到我的python-package中.我收到错误:"无法导入模块'lambda_function':没有名为lambda_function的模块"
我把它分解为hello_world预定义脚本.我可以把它打包成拉链并上传.一切正常.一旦我将"导入请求"放入文件中,我就会收到此错误.
这是我已经做过的事情:
一切的命名如下:
我想在最后运行的文件如下所示:
import requests
import json
def lambda_handler(event, context):
url = 'xxx.elasticbeanstalk.com/users/login'
headers = {"content-type": "application/json", "Authorization": "Basic Zxxxxxxxxx3NjxxZxxxxzcw==" }
response = requests.put(url, headers=headers, verify=False)
return 'hello lambda_handler'
Run Code Online (Sandbox Code Playgroud)
我很高兴能得到任何帮助.我已经在这个问题上使用了多个小时.
Sin*_*Liu 176
要使用请求模块,您只需requests从中导入即可botocore.vendored.例如:
from botocore.vendored import requests
def lambda_handler(event, context):
response = requests.get("https://example.com/")
print response.json()
Run Code Online (Sandbox Code Playgroud)
您可以看到这个要点,以了解可以直接在AWS lambda中导入的更多模块
小智 27
如果您在 AWS Lambda 上使用 Python,并且需要使用requests,则最好使用urllib3,AWS Lambda 目前支持它,您可以直接导入它,查看 urllib3 站点上的示例。
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'http://httpbin.org/robots.txt')
r.data
# b'User-agent: *\nDisallow: /deny\n'
r.status
# 200
Run Code Online (Sandbox Code Playgroud)
cod*_*leb 15
我终于解决了这个问题:我的zip文件中的结构被破坏了.重要的是python脚本和打包的依赖项(作为文件夹)位于zip文件的根目录中.这解决了我的问题.
如果您在经过数小时的尝试和失败后发现如此简单的错误,这有点令人沮丧.
Ram*_*mis 13
大多数评论在某种程度上是正确的,但对于 AWS 初学者来说信息不足。这是我的长简历,访问请求功能需要做什么:
% mkdir lambda-function
Run Code Online (Sandbox Code Playgroud)
% cd lambda-function
Run Code Online (Sandbox Code Playgroud)
% vi lambda_function.py
Run Code Online (Sandbox Code Playgroud)
import requests
def lambda_handler(event, context):
response = requests.get("https://www.test.com/")
print(response.text)
return response.text
Run Code Online (Sandbox Code Playgroud)
% pip install --target ./package requests
Run Code Online (Sandbox Code Playgroud)
% cd package
Run Code Online (Sandbox Code Playgroud)
zip -r ../deployment-package.zip .
Run Code Online (Sandbox Code Playgroud)
% cd ..
Run Code Online (Sandbox Code Playgroud)
% zip -g deployment-package.zip lambda_function.py
Run Code Online (Sandbox Code Playgroud)
我相信你已经lambda_function.py在Lambda控制台上了.您需要首先创建Lambda函数部署包,然后使用控制台上载包.
project-dir在您的系统上(本地)lambda_function.py中project-dir,内容复制lambda_function.py从拉姆达控制台并粘贴在project-dir/lambda_function.pypip install requests -t /path/to/project-dirproject-dir目录的内容,这是您的部署包(Zip目录内容,而不是目录)转到Lambda控制台,选择代码条目类型的上传zip文件并上传部署包.导入请求应该没有任何错误.
使用此命令下载文件夹包
pip install requests -t .
Run Code Online (Sandbox Code Playgroud)
在您的本地机器上运行此命令,然后压缩您的工作目录,然后上传到 aws。
蟒蛇 3.8 视窗 10
lambda 正在寻找特定的文件夹结构,我们将在以下步骤中以这种方式重新创建 ( https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-创建):

现在您可以像这样导入请求:
import json
import requests
def lambda_handler(event, context):
# TODO implement
response = requests.get('your_URL')
return {
'statusCode': 200,
'body': json.dumps(response.json())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47749 次 |
| 最近记录: |