Фото:Teigan RodgeronUnsplash
Выполнить код Python с лямбдой в качестве внешней функции в Snowflake
Недавно я иSupreeth ChandrashekarСовместно работали над задачей, в которой мы хотели выполнить несколько выводов по некоторым данным, хранящимся в Snowflake. Мы используем внешние функции для запуска лямбда-выражений, а затем получаем выводы от конечных точек AWS Sagemaker (обслуживающих разные модели). В этом блоге мы обсудим, как вызывать лямбды из Snowflake.
Обзор решения
Изображение предоставлено автором
Технологический поток
- Пользователь Snowflake принимает роль в целевой учетной записи
- Используйте эту роль для вызова шлюза API (политика ресурсов шлюза API разрешает только вышеуказанной роли вызывать метод POST).
- Шлюз API передает полезную нагрузку в лямбда
- Lambda обрабатывает данные и возвращает ответ шлюзу API.
- Шлюз API отправляет ответ обратно в Snowflake
Настройки АМС
Роль IAM возьмет на себя снежинка
Просто создайте пустую роль без разрешений. Мы добавим доверительные отношения между учетными записями позже.
Лямбда-функция
Создайте лямбда-функцию, которая будет отвечать шлюзу API. Используйте код ниже. Здесь следует обратить внимание на структуру события и структуру ответа.
Snowflake отправляет события в виде списка в формате JSON, заключенного в ключ с именем data . Ожидается, что объект ответа будет содержать ключ statusCode и ключ данных со значением JSON.
Шлюз API
Создайте шлюз API с методом POST для интеграции прокси-сервера Lambda. Используйте Lambda ARN, который мы создали на предыдущем шаге. Добавьте авторизацию IAM в «запрос метода».
ресурсная стратегия
Добавьте ту же политику ресурсов для API после замены соответствующих полей в следующем JSON.
Наконец, в лямбда-консоли вы должны наблюдать за функцией 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 МБ, поэтому триггеры от снежинки не должны быть слишком большими.
Удачной интеграции! !