您有正确的想法,假设您使用的是 python,我将创建一个类似于以下内容的层包:
python/
myPackage.py
mysql/
其中 mysql 包含 mysql 包,而 myPackage.py 包含以下一些变体:
import mysql
def ConnectToDB(**kwargs):
return mysql.connector.connect(
host=kwargs.get("YOUR_ENDPOINT"),
user=kwargs.get("YOUR_USER"),
passwd=kwargs.get("YOUR_PASSWORD"),
database=kwargs.get("YOUR_DBNAME")
)
然后使用这个脚本在 lambda 中创建一个层:
#!/bin/bash
#Required variables
LAYER_NAME="YOUR_LAYER_NAME"
LAYER_DESCRIPTION="YOUR_LAYER_DESCRIPTION"
LAYER_RUNTIMES="python3.6 python3.7"
S3_BUCKET="YOUR_S3_BUCKET"
#Zip Package Files
zip -r ${LAYER_NAME}.zip .
echo "Zipped ${LAYER_NAME}"
#Upload Package to Lambda
aws s3 cp ./${LAYER_NAME}.zip s3://${S3_BUCKET}
#Create new layer
aws lambda publish-layer-version --layer-name ${LAYER_NAME} --description "${LAYER_DESCRIPTION}" --content S3Bucket=${S3_BUCKET},S3Key=${LAYER_NAME}.zip --compatible-runtimes ${LAYER_RUNTIMES}
#Cleanup zip files
rm ${LAYER_NAME}.zip
然后,您可以将该层与您的 lambda 函数相关联,并使用以下语法在 lambda 中导入您的包:
from myPackage import ConnectToDB
connectionParams = {
"YOUR_ENDPOINT" : ...,
"YOUR_USER": ...,
"YOUR_PASSWORD": ...,
"YOUR_DBNAME": ...
}
mydb = ConnectToDB(**connectionParams)