Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install pymysql on AWS lambda

I've looked here and here as I've been trying to work out how to get pymysql running on AWS lambda. The examples I've looked at so far are extremely complex, and with the GitHub tutorial I got as far as IAM before I started running into permissions errors I didn't know how to solve.

Literally, all I want to be able to do is call import pymysql within the prebuilt AWS lambda console template.

It seems like a simple problem, but I'm having a hard time finding a clear, step-by-step work through of how to get new dependencies to work for my lambda function. Ideally the example would not by via AWS CLI, since apparently there is a console option and this seems like it would take some of the headache out of the process.

Cheers,

Aaron

like image 234
aaron Avatar asked Nov 10 '16 23:11

aaron


2 Answers

I was facing similar problem with Redis python library. I follow the same documentation instructions which you mentioned in your second link.

here is example snippet for your reference :

Create new directory MyPythonLambda and put MyPythonLambda.py in the same.

Assume MyPythonLambda/MyPythonLambda.py is main lambda containing handler.

 cd MyPythonLambda/
 pip install redis -t .
 zip -r MyPythonLambda.zip *

Upload/import zip in lambda creation from S3 or your local file system.

I think you need to create zip file in similar way containing your python mysql library.

like image 146
PankajChandankar Avatar answered Oct 03 '22 20:10

PankajChandankar


TheYoungSoul has a fantastic YouTube example of how to do this step-by-step. Once I followed these instructions this was pretty easy to do.

Steps:

  1. Write a locally testable version of the routine I want to implement on lambda and call this function main.py. main.py has the function lambda_handler inside of it, which has the basic structure def lambda_handler(event, context): ...

  2. Use the script create_deployment.py, available on his repo, in conjunction with requirements.txt to create your deployment zip file. Note that if you're on a Mac and this errors out on the first try may need to do this.

  3. Once you have a locally testable example running, create your lambda function on AWS and instead of writing function from scratch select the console menu option to upload a .zip file.

  4. Make sure to create a custom role that has access to RDS resources and be sure to place the DB that you want to connect with in the same VPC group. When setting up your function, specify that you want your lambda function to have VPC access.

like image 42
aaron Avatar answered Oct 03 '22 21:10

aaron