Send Post request to an external API using AWS Lambda in python

China☆狼群 提交于 2019-12-19 04:12:42

问题


I want to send a post request to an external API (https://example.com/api/jobs/test) every hour.

The Lambda Function that I used is as follows:

Handler: index.lambda_handler
python: 3.6

index.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

Test Event:

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

Error:

 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  

Any help would be appreciated.


回答1:


You need to install requests module to your project directory and create a lambda deployment package. See this link for details.

In short, you need to create your index.py file on you development system (PC or mac), install Python & pip on that system; them follow the steps in the doc. To create lambda, choose the 'Upload zip' option instead of the 'Edit inline' one




回答2:


You may be able to leverage requests module from the boto library without having to install or package your function.

Consider this import: import botocore.vendored.requests as requests

Note: Vendored requests are being removed from botocore.



来源:https://stackoverflow.com/questions/47077829/send-post-request-to-an-external-api-using-aws-lambda-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!