Некоторые клиенты используют пакет Oracle UTL_HTTP для разработки программ на PL/SQL, которые облегчают взаимодействие с веб-серверами (HTTP) и вызов сторонних API. Однако при переходе на Amazon Aurora PostgreSQL-Compatible Edition или Amazon RDS for PostgreSQL пользователи должны провести кастомную конвертацию своего SQL-кода, так как в PostgreSQL отсутствует прямой эквивалент функциональности UTL_HTTP. Пакет UTL_HTTP в Oracle позволяет выполнять HTTP-вызовы непосредственно из PL/SQL, что требует адаптации в среде PostgreSQL.
Обзор решения
Это решение подчеркивает интеграцию AWS Lambda с Amazon Aurora PostgreSQL. Методология также применима к Amazon RDS for PostgreSQL. AWS Lambda — это серверлесс-вычислительная служба, которая позволяет выполнять код без необходимости управления серверами. Она автоматически масштабируется и выполняет код в ответ на различные события или триггеры, включая HTTP-запросы.
Пользователи могут отправлять HTTP-запросы для вызова Лямбда-функции из базы данных Aurora PostgreSQL, используя модуль Python Requests. Эта элегантная HTTP-библиотека упрощает процесс отправки запросов HTTP/1.1.
Высокоуровневые шаги решения изложены ниже:
- Создайте новую схему с именем
utl_http_utility
в базе данных Amazon Aurora PostgreSQL. - Определите объекты Request и Response как пользовательские типы данных в Aurora PostgreSQL для представления HTTP-запросов и ответов.
- Реализуйте пользовательские обертки функций PL/pgSQL в базе данных Aurora PostgreSQL для различных операций HTTP, таких как инициирование запроса, установка аутентификации, настройка заголовков и обработка ответов. Эти функции непрерывно строят JSON-объект, инкапсулирующий все параметры HTTP, включая содержимое ответа, URL, параметры, пользовательские заголовки и полезную нагрузку.
- Установите расширения
aws_lambda
иaws_commons
в базе данных Aurora PostgreSQL для облегчения интеграции с Лямбда-функциями, улучшая обработку API-запросов и ответов. - Создайте обертку функции
get_response
в базе данных Aurora PostgreSQL. Эта функция принимает JSON-объект запроса в качестве входных данных и вызывает Лямбда-функцию, которая реализована на Python с использованием модуля Requests для отправки HTTP-запросов к желаемой конечной точке API.
Лямбда-функция выполняет вызовы API веб-службы и возвращает ответы, обеспечивая реальное время (синхронную) передачу данных обратно в базу данных Aurora.
Архитектура проиллюстрирована на прилагаемой диаграмме. Компоненты этой архитектуры включают:
- Базу данных Aurora PostgreSQL с установленными расширениями
aws_lambda
и пользовательскими функциями-обертками. - Лямбда-функцию, которая обрабатывает HTTP-запросы из базы данных, вызывает API и передает ответы.
- Роль AWS Identity and Access Management (IAM) для вызова Лямбда-функций из базы данных Aurora PostgreSQL.
Эта архитектура обеспечивает гибкость и масштабируемость при интеграции HTTP-запросов в среде PostgreSQL, предоставляя пользователям мощный инструмент для взаимодействия с внешними API и веб-сервисами.