Matrix
Matrix

Reputation: 2639

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

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.

Upvotes: 14

Views: 58097

Answers (4)

Craig Anderson
Craig Anderson

Reputation: 1

pip install custom package to /tmp/ and add to path

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

Upvotes: 0

anonymous
anonymous

Reputation: 1

You need to install requests module. Type :

pip install requests 

into your terminal, or after activating virtual environment if you are using one.

Upvotes: -1

adamkonrad
adamkonrad

Reputation: 7122

Vendored requests are now removed from botocore.

Consider packaging your Lambda code with requirements.txt using CloudFormation package or SAM CLI packaging functionality.

My older answer from before vendored requests deprecation: 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

Upvotes: 31

agent420
agent420

Reputation: 3511

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

Upvotes: 12

Related Questions