在 python 中使用 AWS Lambda 将 Post 请求发送到外部 API

问题描述 投票:0回答:4

我想每小时向外部 API (https://example.com/api/jobs/test) 发送一个发布请求。

我使用的Lambda函数如下:

Handler: index.lambda_handler
python: 3.6

索引.py

import requests
def lambda_handler(event, context):
  url="https://example.com/api/jobs/test"
  response = requests.post(url)
  print(response.text) #TEXT/HTML
  print(response.status_code, response.reason) #HTTP

测试活动:

 {
 "url": "https://example.com/api/jobs/test"
}

错误:

 START RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d Version: $LATEST
 Unable to import module 'index': No module named 'requests'

 END RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d
 REPORT RequestId: 370eecb5-bfda-11e7-a2ed-373c1a03c17d Duration: 0.65 ms   Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 21 MB  

如有任何帮助,我们将不胜感激。

python http-post aws-lambda
4个回答
31
投票

供应的

requests
现已从
botocore
中删除。

考虑使用 CloudFormation 包或 SAM CLI 打包功能通过

requirements.txt
打包您的 Lambda 代码。

我之前的旧答案

requests
弃用: 您可以利用
requests
库中的
boto
模块,而无需安装或打包您的函数。

考虑这个导入:

import botocore.vendored.requests as requests


11
投票

您需要将

requests
模块安装到您的项目目录并创建 lambda 部署包。有关详细信息,请参阅链接。

简而言之,您需要在开发系统(PC或Mac)上创建index.py文件,并在该系统上安装Python和pip;他们按照文档中的步骤操作。要创建 lambda,请选择“上传 zip”选项,而不是“编辑内联”选项


0
投票

pip 安装自定义包到 /tmp/ 并添加到路径

subprocess.call('pip install requests -t /tmp/ --no-cache-dir'.split(), stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) sys.path.insert(1, '/tmp/') 导入请求


-1
投票

您需要安装请求模块。类型:

pip install requests 

进入您的终端,或者如果您使用的是激活虚拟环境,则在激活虚拟环境后。

© www.soinside.com 2019 - 2024. All rights reserved.