91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-21 21:53:33 來源:網絡 閱讀:783 作者:beanxyz 欄目:云計算

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

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

  1. 通過S3來觸發Lambda
  2. 對于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上傳的圖片

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

import os
import tempfile

import boto3
from PIL import Image

s3 = boto3.client('s3')
DEST_BUCKET = os.environ['DEST_BUCKET']
SIZE = 128, 128

def lambda_handler(event, context):

    for record in event['Records']:
        source_bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        thumb = 'thumb-' + key
        with tempfile.TemporaryDirectory() as tmpdir:
            download_path = os.path.join(tmpdir, key)
            upload_path = os.path.join(tmpdir, thumb)
            s3.download_file(source_bucket, key, download_path)
            generate_thumbnail(download_path, upload_path)
            s3.upload_file(upload_path, DEST_BUCKET, thumb)

        print('Thumbnail image saved at {}/{}'.format(DEST_BUCKET, thumb))

def generate_thumbnail(source_path, dest_path):
    print('Generating thumbnail from:', source_path)
    with Image.open(source_path) as image:
        image.thumbnail(SIZE)
        image.save(dest_path)

注意!!!這個函數里面我們調用了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上傳的圖片

實驗成功

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尉氏县| 卓尼县| 攀枝花市| 浮山县| 沈丘县| 武汉市| 宜川县| 昭苏县| 岗巴县| 老河口市| 新民市| 华阴市| 道孚县| 台江县| 海安县| 扶风县| 沙田区| 庐江县| 双流县| 夏河县| 涞水县| 托克托县| 东明县| 麻栗坡县| 若羌县| 尚志市| 合肥市| 利津县| 青田县| 泗洪县| 行唐县| 滦平县| 剑河县| 林州市| 五台县| 延安市| 潮安县| 盐城市| 韩城市| 望奎县| 柞水县|