Python 3.x 为pymysql导入AWS lambda层
我需要部署一个lambda函数,用python包pymysql执行一个进程,我的python版本是3.6,为此,我将使用lambda层来避免带来整个代码。为了实现这一点,我必须遵循以下步骤:Python 3.x 为pymysql导入AWS lambda层,python-3.x,amazon-web-services,aws-lambda,pymysql,aws-lambda-layers,Python 3.x,Amazon Web Services,Aws Lambda,Pymysql,Aws Lambda Layers,我需要部署一个lambda函数,用python包pymysql执行一个进程,我的python版本是3.6,为此,我将使用lambda层来避免带来整个代码。为了实现这一点,我必须遵循以下步骤: 在本地计算机中创建python virtualenv 安装pakcage pymysql 创建一个单独的文件夹,在其中移动安装在虚拟环境中的pymysql包cp-r/myvirtualenv/lib/python3.6/site-packages/pymysql~/home/user/packagelam
- 在本地计算机中创建python virtualenv
- 安装pakcage pymysql
- 创建一个单独的文件夹,在其中移动安装在虚拟环境中的pymysql包
cp-r/myvirtualenv/lib/python3.6/site-packages/pymysql~/home/user/packagelambda/
- 在路径
中,将此软件包压缩到一个zip文件中,作为AWS lambda layer~/home/user/packagelambda/
zip-r rdsconnection.zip*
- 将此zipfile作为新层上载到aws lambda仪表板
import json
import boto3
import pymysql
import csv
from datetime import datetime
def json_param():
s3 = boto3.resource('s3')
bucketname= "bucket"
file= "file.json"
object= s3.Object(bucketname,file)
body = object.get()['Body'].read().decode('utf8')
param= json.loads(body)
return param["host"], param["user"], param["password"], param["database"]
def db_connection():
host,user,password,database = json_param()
dbconnection = pymysql.connect(host,user,password,database)
dbcursor = dbconnection.cursor()
return dbconnection, dbcursor
另外,lambda函数中的secon脚本默认称为lambda_function.py,内容如下:
import json
from md_connection import db_connection
def lambda_handler(event, context):
dbconnection, dbcursor = db_connection()
print(dbcursor)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
最后,我将在设计器上选择“我的层”选项,并附加以前构建的新层。完成此过程后,我仍然会不断收到错误无法导入模块'lambda_function':每次执行后都没有名为'pymysql'
的模块
我想强调的是,我已尝试通过两种方式执行构建层的过程:
pymysql
pymysql
和pymysql-0.9.3.dist info
创建一个目录
python
将pymysql
及其依赖项复制到该目录中。压缩python
目录并将其上载到图层。zip中的文件夹结构很重要。根目录应该是python
,您的意思是我必须遵循在我的层中上载的zip文件中的结构?示例:rdsconnection.zip包含结构python/pymysql?是。根文件夹应该是python
,在该文件夹下,您可以添加类似python/pymysql
的库,让我试试这个sr