AWS — триггер настройки для обнаружения только создания каталога, а не файлов

#amazon-web-services #amazon-s3 #triggers #aws-lambda

#amazon-web-services #amazon-s3 #триггеры #aws-lambda

Вопрос:

Я настраиваю лямбда-функцию, которая запускается только при создании каталога в s3, а не файла

Пример: {bucket-name}/a/b /c /d/

a, b, c, d — это каталоги внутри корзины.

Я хочу, чтобы функция lambda запускалась при создании ключа «d» (d — это не файл, это каталог).

На основе моих исследований ,

  1. Вместо упоминания {bucket-name} можно указывать только определенные префиксы/*/
  2. В триггерах нет специального фильтра для проверки создания каталога. Создание файлов и каталогов считается таким же, как операция с помещенным объектом. Я хочу запускать только во время создания каталога на определенной глубине, здесь, в этом примере — я не хочу запускать во время создания ключа каталога / s3 для a, b или c. Мне нужно запускать только во время создания общего каталога (на более глубоком уровне). можно ли это сделать каким-либо образом при настройке триггера лямбда?

Ответ №1:

S3 — это не файловая система, а хранилище объектов. Однако ключи, которые заканчиваются завершающим знаком «/», обычно рассматриваются как папки, поэтому, возможно, это способ проверки.

Поэтому я бы проверил мою лямбда-проверку, чтобы увидеть, имеет ли ключ объекта завершающий символ «/», и рассматривал это как создание папки.

Обратите внимание, что вы можете создавать файловые объекты с завершающим символом «/», вы просто не можете сделать это через консоль, но если у вас есть контроль над созданием ключей, вы сможете избежать этого.

Редактировать: Для устранения комментария о том, что вы хотите, чтобы лямбда-выражение запускалось только при создании «папки», а не для каждого добавленного файла, в настоящее время это не поддерживается. Если вы не имеете дело с миллиардами файлов, я бы не стал слишком беспокоиться о затратах на лямбда. Функция, для выполнения которой требуется 250 МС при 256 МБ оперативной памяти, обойдется вам менее чем в 5 долларов за миллион объектов.

Редактировать, июль 2022: вы можете сделать это, добавив уведомление о событии в корзину и указав «/» для суффикса. Вы получите уведомление только при создании «папки». (И я должен также отметить, что консоль для S3 теперь позволяет создавать «папки»)

Комментарии:

1. Спасибо за ответ, да, у меня может быть логика в функции lambda, которая выполняет эту проверку, это после запуска lambda. мой лямбда-код должен запускаться только при создании папки, я не хочу запускать свой лямбда-код каждый раз, когда создается файл или папка, а затем выбирать только папки, таким образом, я думаю об экономии затрат на запуск лямбды.

2. @keerthi Вы нашли решение для этого? Даже я ищу такую реализацию. Пожалуйста, дайте мне знать

3. @RahulDiggi — Я обновил ответ. Теперь это возможно с помощью уведомлений о событиях.