真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

這節(jié)來學(xué)習(xí)一個經(jīng)典的案例,這個案例我在三個不同的培訓(xùn)視頻里面都看見過,不知道最初的原創(chuàng)者是誰 :)

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供南縣網(wǎng)站建設(shè)、南縣做網(wǎng)站、南縣網(wǎng)站設(shè)計、南縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、南縣企業(yè)網(wǎng)站模板建站服務(wù),十載南縣做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

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

  1. 通過S3來觸發(fā)Lambda
  2. 對于AWS默認不包括的Python模塊,我們需要手動上傳zip文件或者通過S3來導(dǎo)入

這個例子的流程簡單的說就是創(chuàng)建2個S3的bucket,在其中一個上傳照片,他會自動壓縮尺寸并保存在另外一個bucket里面。 下面來看看如何實現(xiàn)。

首先創(chuàng)建2個bucket,一個source, 一個destination

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

然后創(chuàng)建對應(yīng)的role

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

然后創(chuàng)建一個Lambda function,選擇上面配置的role

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

添加一個觸發(fā)器,這里我們指定S3的source bucket

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

接下來,是配置對應(yīng)的函數(shù)

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)

注意!!!這個函數(shù)里面我們調(diào)用了Pillow這個圖片的模塊,但是這個模塊默認在aws的運行環(huán)境里面是沒有的,因此我們需要手動上傳。

首先從 https://pypi.org/project/Pillow/#files 上面下載對應(yīng)的linux whl 文件,whl文件其實是一個壓縮包,Windows 下面我們可以用 wheel unpack 解壓。如果在Linux環(huán)境下,可以直接用unzip打開。

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

然后把這個PIL文件夾和我們的python文件一起zip

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

然后上傳到Lambda的控制臺
Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖片

注意py文件和入口函數(shù)的名字要和handler匹配
Lambda,AWS和Python的自動化管理操作 - 自動Resize S3上傳的圖片

也別忘記了配置環(huán)境變量

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

我們可以通過測試模板來查看對應(yīng)的事件的json格式

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

最后來看看運行效果

上傳幾個圖片

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

自動壓縮保存在另外一個bucket里面

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

實驗成功


當前文章:Lambda,AWS和Python的自動化管理操作-自動ResizeS3上傳的圖片
分享URL:http://weahome.cn/article/geddhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部