У нас была третья сторона, которая создала сценарий эскиза изображения на основе Python, который мы настроили для запуска события S3 ObjectCreated. Затем мы импортировали коллекцию из почти 5000 изображений после тестирования скрипта, но огромный объем файлов изображений в конечном итоге заполнил тестовое пространство лямбда во время импорта, и только около 12% изображений были созданы для них эскизы.
Нам нужно вручную создать миниатюры для остальных 88%. Хотя у меня есть скрипт на основе php, который я могу запустить из EC2, он несколько медленный. Мне приходит в голову, что я мог бы создавать их «по запросу» и не создавать эскизы для всех файлов, которые не были созданы автоматически во время импорта. К некоторым файлам клиент может никогда больше не получить доступ — существующий лямбда-миниатюрист уже имеет небольшую задержку, которую я учитываю в цикле повторных попыток javascript setTimeout, но перед вызовом этого цикла я мог бы проверить, является ли это недавней загрузкой — например в течение последних 10 секунд — всякий раз, когда эскиз не найден, запускайте лямбду вручную перед запуском цикла повтора.
Но для этого мне нужно иметь возможность запускать лямбда-скрипт с параметрами, аналогичными триггеру событий. Похоже, что их скрипт получает доступ только к имени корзины и ключу из значений события:
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
Будучи незнакомым с лямбда-выражением и все еще немного новым для sdk, я не уверен, как мне сделать лямбда-триггер, который будет включать эти значения для скрипта python.
Я могу использовать либо php sdk, либо javascript sdk. (или даже cli)
Любая помощь приветствуется.
/tmp
. - person Michael - sqlbot   schedule 01.09.2019