AWS Лямбда-триггер на новом разделе, добавляемом в S3 - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть контейнер S3 A, для которого определен каталог клея, который считывает дату с ключа foo/bar/ и разбивается на date.

пример: s3://A/foo/bar/baz/date=2020-01-30

Данные поступают случайным образом в это ведро.

Мне нужно добавить отсутствующие разделы в таблицу Glue, как и когда новые разделы загружаются в это ведро.

Я могу сделать это с помощью lambda, которая будет запускать MSCK REPAIR TABLE

Как мне запустить эту лямбду, когда новый раздел date был загружен на s3?

1 Ответ

1 голос
/ 25 апреля 2020

В Amazon S3 отсутствует концепция . Имя файла (Key) объекта включает полный путь к объекту.

Таким образом, невозможно узнать, что раздел был «создан».

Однако ... Amazon S3 распознает «создание» каталога, когда создается объект нулевой длины с именем каталога. Это заставляет каталог «появляться» в консоли управления Amazon S3. Если система, которая создает раздел, также создает этот объект нулевой длины, то это можно использовать для распознавания создания раздела.

Для этого AWS Лямбда-функция должна будет посмотреть на созданный объект (переданный через поле event из события Amazon S3) и определить, является ли он объектом нулевой длины. Если это так, это может вызвать MSCK REPAIR TABLE.

. Вам необходимо изучить существующую структуру каталогов, чтобы увидеть, создает ли текущий процесс эти файлы нулевой длины. (Честно говоря, вероятно, это не так.)

Единственным оставшимся методом будет использование базы данных для отслеживания существующих разделов . Затем функция Lambda может обратиться к базе данных, чтобы увидеть, создается ли объект в «новом разделе». Если это так, он должен обновить базу данных, а затем вызвать MSCK REPAIR TABLE. База данных может быть такой же простой, как запись в AWS Хранилище параметров системного менеджера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...