Да, это совершенно верно, что лямбда не может быть вызвана объектами, уже присутствующими в вашем контейнере s3, но вызывать лямбду вручную для каждого объекта - совершенно глупая идея.
С помощью некоторых хитроумных приемов вы можете легко выполнять свои задачи на этих изображениях:
Трудный путь состоит в том, чтобы создать локальную программу, которая точно выполняет ту же функцию, что и ваша лямбда-функция, но добавила еще две вещи: сначала вам нужно перебрать каждый объект в вашей корзине, затем выполнить код и затем сохраните его по пути назначения s3 после изменения размера. То есть, для всех изображений, уже сохраненных в вашей корзине s3, вместо использования лямбды вы изменяете размеры изображений локально на вашем компьютере и сохраняете их обратно в место назначения s3.
Самый простой способ - сначала убедиться, что вы настроили тип события уведомления s3 как Объект создан (Все) как триггер для вашей лямбды.
Затем, после этого, переместите все свои уже сохраненные изображения в новое временное ведро , а затем переместите эти изображения обратно в оригинальное ведро , вот как ваша лямбда будет срабатывать для каждого изображения автоматически. Вы можете легко выполнить задачу перемещения, используя SDK, предоставленные AWS. Например, для перемещения файлов с использованием boto3 в python вы можете сослаться на эту ссылку на пример перемещения в python, используя boto3
- Вместо использования перемещения, т. Е. вырезания и вставки , вы также можете использовать команды копирования и вставки .