Я написал простую лямбда-функцию (в python 3.7), которая запускается один раз в день, которая обновляет мой каталог данных Glue при создании новых разделов. Это работает следующим образом:
- Создание объекта в указанном c S3 месте запускает функцию асинхронно
- Из события lambda извлекает ключ (например: s3: // my -bucket / path / to / object /)
- Через AWS SDK lambda запрашивает клей, если раздел уже существует
- Если нет, создает новый раздел. Если да, завершает процесс.
Кроме того, у функции есть 3 оператора печати:
- один в самом начале, говорящий о начале выполнения
- один посередине, который говорит, существует ли раздел
- один в конце при успешном выполнении.
Эта функция имеет среднее время выполнения 460 мс на вызов, с выделенной ОЗУ 128 МБ, и она не может иметь более 12 одновременных выполнений (так как 12 - это максимальное количество новых разделов, которые могут создаваться ежедневно). В то же время нет других лямбда-функций, которые могут украсть возможности параллелизма. Кроме того, просто чтобы быть уверенным, я установил лимит времени ожидания в 10 секунд.
Он работал безупречно в течение нескольких недель, за исключением этого утра, 2 из казней истекли после достижения 10-секундного лимита, что очень странно, учитывая, что оно в 20 раз больше, чем среднее значение. длительность.
Что меня больше всего удивляет, так это то, что в одном случае в CloudWatch вошел только 1-й оператор печати, а в другом - даже не тот, как если бы функция вызывалась, но фактически не запускалась процесс.
Я не мог понять, что, возможно, вызвало это. Любая идея или предложение высоко ценится.