Изменение размера и перемещение изображений с помощью лямбда-функции с одного s3 на другой s3 - PullRequest
0 голосов
/ 02 марта 2020

ЧТО Я ХОЧУ ДЕЛАТЬ

  • У меня есть 3 ведра. Я хочу, чтобы вызвать лямбда-функцию, когда изображение загружено в bucket1.
  • Лямбда-функция изменит размер этого изображения (500x500) и сохранит это изображение с измененным размером в bucket2.
  • основное изображение в bucket1 будет сохранено в bucket3.
  • main тогда изображение из корзины1 будет удалено.

ЧТО Я СДЕЛАЛ НАСТОЛЬКО

  • написал лямбда-функцию, которая будет перемещать изображения по ведро.

  • Сделан S3 триггер лямбда-функции

ГДЕ МОЯ ПРОБЛЕМА

  • Я использую PIL, чтобы изменить размер изображения. Но модуль PIL отсутствует в python STL. Поэтому я заархивировал свой код с помощью пакетов сайта и смог запустить. Но ошибка говорит, что файл не найден. Пример ключа файла *

КОД


import boto3
import os
import sys
import uuid
from PIL import Image
import PIL.Image

s3_client = boto3.client('s3')

def resize_image(image_path, resized_path):
    with Image.open(image_path) as image:
        image.thumbnail((500, 500))
        image.save(resized_path)

def lambda_handler(event, context):
    #
    # giving a key error here event['Records']
    #
    for record in event['Records']: 
        bucket = 'mahabubelahibucket1'
        key = record['s3']['object']['key'] 
        download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
        upload_path = '/tmp/resized-{}'.format(key)

        s3_client.download_file(bucket, key, download_path)
        resize_image(download_path, upload_path)
        s3_client.upload_file(upload_path, 'mahabubelahibucket2', key)

1 Ответ

0 голосов
/ 08 марта 2020

Это мое решение проблемы!

...