У меня есть ощущение, что ответом на мой вопрос будет правильный термин Google, который мне не хватает, но начнем.
Мне нужно активировать все объекты в ведре s3
без загрузки. Причина в том, что у меня есть лямбда, которая срабатывает на PutObject
, и я хочу снова обработать все эти файлы. Есть огромные изображения, и повторная загрузка не кажется хорошей идеей.
Я пытаюсь сделать это на nodejs
, но любой удобный язык поможет, и я переведу.
Спасибо
Событие Amazon S3 может запускать функцию AWS Lambda при создании/удалении/реплицировании объекта.
Однако невозможно «запустить объект» — объект необходимо создать/удалить/реплицировать, чтобы вызвать событие Amazon S3.
В качестве альтернативы вы можете создать небольшую программу, которая перечисляет объекты в корзине, а затем напрямую вызывает функцию AWS Lambda, передавая сведения об объекте в сообщении event
, чтобы оно выглядело так, как будто оно пришло из Amazon S3. В функции «тест» Lambda есть образец события S3 — вы можете скопировать этот шаблон, и ваша программа вставит соответствующее ведро и ключ объекта. Затем ваша лямбда-функция обработает ее точно так же, как если бы ее активировало событие S3.
В дополнение к тому, что описано выше, вы можете использовать Пакетные операции AWS S3. Мы использовали это для шифрования существующих объектов в корзине S3, которые ранее не были зашифрованы.
Это было самое простое готовое решение, доступное в самой консоли S3.
Вы также можете перебрать все объекты в ведре и добавить тег. Затем настройте триггерное событие, включив в него изменения тегов. Пример кода в bash после того, как я протестирую его.
Что именно вы подразумеваете под «мне нужно вызвать все объекты в ведре s3»?