天天看點

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

這節來學習一個經典的案例,這個案例我在三個不同的教育訓練視訊裡面都看見過,不知道最初的原創者是誰 :)

和前面的幾個例子比較起來,思路其實是大同小異的,唯一的差別在于兩點:

通過s3來觸發lambda

對于aws預設不包括的python子產品,我們需要手動上傳zip檔案或者通過s3來導入

這個例子的流程簡單的說就是建立2個s3的bucket,在其中一個上傳照片,他會自動壓縮尺寸并儲存在另外一個bucket裡面。 下面來看看如何實作。

首先建立2個bucket,一個source, 一個destination

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

然後建立對應的role

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

然後建立一個lambda function,選擇上面配置的role

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

添加一個觸發器,這裡我們指定s3的source bucket

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

接下來,是配置對應的函數

注意!!!這個函數裡面我們調用了pillow這個圖檔的子產品,但是這個子產品預設在aws的運作環境裡面是沒有的,是以我們需要手動上傳。

首先從 https://pypi.org/project/pillow/#files 上面下載下傳對應的linux whl 檔案,whl檔案其實是一個壓縮包,windows 下面我們可以用 wheel unpack 解壓。如果在linux環境下,可以直接用unzip打開。

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

然後把這個pil檔案夾和我們的python檔案一起zip

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

然後上傳到lambda的控制台

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

注意py檔案和入口函數的名字要和handler比對

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

也别忘記了配置環境變量

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

我們可以通過測試模闆來檢視對應的事件的json格式

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

最後來看看運作效果

上傳幾個圖檔

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

自動壓縮儲存在另外一個bucket裡面

Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖檔

實驗成功