ЧТО Я ХОЧУ ДЕЛАТЬ
- У меня есть 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)