2018年11月29日剧腻,AWS推出了Lambda的兩個(gè)新功能:Custom Runtimes和Lambda Layer彬伦。我這里只介紹一下Layer的用法澜共,也是正好用到板驳,發(fā)現(xiàn)文檔不是很明確色瘩,所以分享出來(lái)節(jié)省大家時(shí)間伪窖。
我們?cè)趯慞ython的時(shí)候經(jīng)常會(huì)需要使用額外的模塊,以前的做法是把需要的模塊/Library和自己寫的腳本一起打包成一個(gè)zip文件居兆,然后部署到Lambda上去覆山。如果依賴的模塊很多的話,打包成的zip文件就會(huì)很大史辙,打包和上傳過(guò)程也會(huì)耗時(shí)很長(zhǎng)汹买。而Lambda Layer就很好的解決了這個(gè)問(wèn)題,它把模塊/Library獨(dú)立出來(lái)聊倔,作為一個(gè)可以共享層晦毙,你的Lambda函數(shù)如果需要這個(gè)模塊,只需要通過(guò)簡(jiǎn)單設(shè)置就可以加入進(jìn)來(lái)耙蔑,這樣就避免打包和上傳它們了见妒。
接下來(lái)我們通過(guò)一個(gè)實(shí)際例子來(lái)看一下如何使用Lambda Layer:
這個(gè)例子里面我們用到了xlsxwriter這個(gè)模塊來(lái)生成Excel文件。(Python 2.7)
1. 首先我們的Lambda代碼如下:
這是一個(gè)很簡(jiǎn)單的代碼:創(chuàng)建一個(gè)sheet甸陌,并且在前面兩個(gè)單元格里面分別寫入'abc'和'edf'须揣。
2.由于xlsxwriter是不在Lambda本身環(huán)境中的盐股,所以我們需要把它放到Layer里面去,首先我們要生成一個(gè)包含xlsxwriter模塊的zip文件:
3. 接下來(lái)我們把這個(gè)zip文件上傳到Lambda的Layer:
如果模塊有更新耻卡,你也可以來(lái)更新Layer的版本疯汁,像下圖該xlsxwriter當(dāng)前是第二個(gè)版本。
4. 我們創(chuàng)建一個(gè)Lambda函數(shù)卵酪,來(lái)使用這個(gè)Layer
5. 最后我們把代碼貼入到Lambda函數(shù)中:
6. 測(cè)試一下幌蚊,成功了:
以上就是一個(gè)非常簡(jiǎn)單的例子。下面是AWS官方文檔對(duì)于Layer的說(shuō)明溃卡,供大家參考溢豆。謝謝