2018年11月29日,AWS推出了Lambda的两个新功能:Custom Runtimes和Lambda Layer。我这里只介绍一下Layer的用法,也是正好用到,发现文档不是很明确,所以分享出来节省大家时间。
我们在写Python的时候经常会需要使用额外的模块,以前的做法是把需要的模块/Library和自己写的脚本一起打包成一个zip文件,然后部署到Lambda上去。如果依赖的模块很多的话,打包成的zip文件就会很大,打包和上传过程也会耗时很长。而Lambda Layer就很好的解决了这个问题,它把模块/Library独立出来,作为一个可以共享层,你的Lambda函数如果需要这个模块,只需要通过简单设置就可以加入进来,这样就避免打包和上传它们了。
接下来我们通过一个实际例子来看一下如何使用Lambda Layer:
这个例子里面我们用到了xlsxwriter这个模块来生成Excel文件。(Python 2.7)
1. 首先我们的Lambda代码如下:
这是一个很简单的代码:创建一个sheet,并且在前面两个单元格里面分别写入'abc'和'edf'。
2.由于xlsxwriter是不在Lambda本身环境中的,所以我们需要把它放到Layer里面去,首先我们要生成一个包含xlsxwriter模块的zip文件:
3. 接下来我们把这个zip文件上传到Lambda的Layer:
如果模块有更新,你也可以来更新Layer的版本,像下图该xlsxwriter当前是第二个版本。
4. 我们创建一个Lambda函数,来使用这个Layer
5. 最后我们把代码贴入到Lambda函数中:
6. 测试一下,成功了:
以上就是一个非常简单的例子。下面是AWS官方文档对于Layer的说明,供大家参考。谢谢