Выполнение нескольких оценок данных, хранящихся в Snowflake, — вызов Lambda

задняя часть

Фото:Teigan RodgeronUnsplash

Выполнить код Python с лямбдой в качестве внешней функции в Snowflake

Недавно я иSupreeth ChandrashekarСовместно работали над задачей, в которой мы хотели выполнить несколько выводов по некоторым данным, хранящимся в Snowflake. Мы используем внешние функции для запуска лямбда-выражений, а затем получаем выводы от конечных точек AWS Sagemaker (обслуживающих разные модели). В этом блоге мы обсудим, как вызывать лямбды из Snowflake.

Обзор решения

Изображение предоставлено автором

Технологический поток

  1. Пользователь Snowflake принимает роль в целевой учетной записи
  2. Используйте эту роль для вызова шлюза API (политика ресурсов шлюза API разрешает только вышеуказанной роли вызывать метод POST).
  3. Шлюз API передает полезную нагрузку в лямбда
  4. Lambda обрабатывает данные и возвращает ответ шлюзу API.
  5. Шлюз API отправляет ответ обратно в Snowflake

Настройки АМС

Роль IAM возьмет на себя снежинка

Просто создайте пустую роль без разрешений. Мы добавим доверительные отношения между учетными записями позже.

Лямбда-функция

Создайте лямбда-функцию, которая будет отвечать шлюзу API. Используйте код ниже. Здесь следует обратить внимание на структуру события и структуру ответа.

medium.com/Media/033Афан…

Snowflake отправляет события в виде списка в формате JSON, заключенного в ключ с именем data . Ожидается, что объект ответа будет содержать ключ statusCode и ключ данных со значением JSON.

Шлюз API

Создайте шлюз API с методом POST для интеграции прокси-сервера Lambda. Используйте Lambda ARN, который мы создали на предыдущем шаге. Добавьте авторизацию IAM в «запрос метода».

ресурсная стратегия

Добавьте ту же политику ресурсов для API после замены соответствующих полей в следующем JSON.

medium.com/Media/9test92…

Наконец, в лямбда-консоли вы должны наблюдать за функцией Lambda, запускаемой API.

Настройки снежинки

API-интеграция

Создаем API-интеграцию в Snowflake. Эта интеграция создаст пользователя и позволит этому пользователю взять на себя роль, которую мы создали на шаге 1 настройки AWS. Кроме того, он документирует конечную точку выполнения API, которую мы создали в API Gateway.

внешняя функция

Мы создаем внешнюю функцию, используя интеграцию, созданную на предыдущем шаге. Используйте следующий код для создания интеграции и внешних функций.

medium.com/Media/959 отправляет 3…

После создания интеграции. Опишите ситуацию с интеграцией. Вы получите результаты, аналогичные приведенным ниже.

Изображение предоставлено автором

Обратите внимание на вывод, описывающий команду интеграцииAPI_AWS_IAM_USER_ARNи API_AWS_EXTERNAL_ID. Замените его в приведенной ниже политике и добавьте в качестве политики доверия к «Принять роль», созданной в начале.

Чтобы проверить сквозную функциональность, запустите функцию в снежинке, и вы должны увидеть ответ от лямбды.

Добавление возможности выполнения кода Python в Snowflake обеспечивает большую интеграцию между Snowflake и облачными системами. Мы можем подключить эти функции и запускать внешние процессы изнутри снежинки.

Примечание. Для лямбды существует ограничение полезной нагрузки в 6 МБ, поэтому триггеры от снежинки не должны быть слишком большими.

Удачной интеграции! !