目标
由于 Python 代码中需要用到第三方的库, 在 Lambda 中可以通过创建自定义层(Layer)的方式来将这些依赖提供给 Lambda 运行环境. 下面演示创建一个包含第三方库 requests 的层, 以及如何在 Lambda 中调用
准备 zip 文件
首先在本地电脑上将相关依赖下载到名为 python 的文件夹中:
mkdir python
cd python
pip install requests -t .
项目的文件夹名为 lambda_layer_demo , 下载完成后的文件夹内容如下
╭─lpwm@pengweil /home/lpwm/lambda_layer_demo ?system?
╰─$ tree -L 2
.
└── python
├── bin
├── certifi
├── certifi-2022.12.7.dist-info
├── charset_normalizer
├── charset_normalizer-2.1.1.dist-info
├── idna
├── idna-3.4.dist-info
├── requests
├── requests-2.28.1.dist-info
├── urllib3
└── urllib3-1.26.13.dist-info
12 directories, 0 files
接下来将 python 文件夹打包成 zip 文件, 注意执行 zip 命令时应当在 python 文件夹的父文件夹 (即项目文件夹) 位置
╭─lpwm@pengweil /home/lpwm/lambda_layer_demo ?system?
╰─$ zip -r requests_layer.zip .
打包后的 zip 文件中会包含一个 python 文件夹: ![在这里插入图片描述](https://img-blog.csdnimg.cn/83cc2f0b5a7b481b821791167d173cec.png)
创建 Lambda Layer
浏览器访问 Lambda 控制台 - Layers - Create layer, 上传准备好的 zip 文件, 选择匹配的 runtime, 完成创建 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1469e7686f554df98238c3a3e900bfad.png)
调用 Layer 作为依赖
一切准备就绪后, 下面我们创建一个测试用的 Lambda Function, 来调用 Layer 中的 pythonping 依赖. ![在这里插入图片描述](https://img-blog.csdnimg.cn/d4d9e7dbaf6d4a9db6213d0e8d20fce9.png)
点击 Lambda 函数编辑界面底部的 Add a layer ![在这里插入图片描述](https://img-blog.csdnimg.cn/daf16d77dc744cfca77d7b882cbde568.png) 选择 Custom layers, 找到我们刚创建好的 pythonping_layer 完成添加 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d261f4482b794cd187f1d487829c5a02.png)
编写 Python 代码
import requests
def lambda_handler(event, context):
result = requests.get('https://checkip.amazonaws.com').text.strip()
return {
'statusCode': 200,
'body': {
'ip': result
}
}
Deploy 后 Test, 工作正常! ![在这里插入图片描述](https://img-blog.csdnimg.cn/f8b2f0a06afc42328b6b39f900ae7bfa.png)
|