Статьи

Создание безсерверного приложения AWS для исследовательского API Refinitiv

Преимущества наличия или переноса наборов данных в облачные решения разнообразны, и одним из них является безсерверное вычисление. Когда у нас есть готовые API и инструменты в облаке, нет никаких причин ограничивать вычисления в вашем приложении или решении. В этой статье мы рассмотрим API, готовый к работе в облаке, от Refinitiv и объединим его со службами AWS, чтобы создать готовое к использованию безсерверное приложение.

Мы будем использовать EDP ​​Research API, который представляет собой совокупную систему доставки Refinitiv, которая предоставляет покупателям их соответствующие исследовательские отчеты о продажах в режиме реального времени. Эта система доставляет асинхронные обновления (оповещения) через сервис простой очереди Amazon (SQS). Мы создадим безсерверное приложение на основе сервисов AWS для приема и обработки сообщений из очереди без подготовки или управления серверами. Amazon предоставляет набор услуг, которые можно использовать для создания безсерверного приложения.

Вам также может понравиться: выход на сервер с Amazon Web Services (AWS) — традиционный подход

Об исследовательском API

Исследовательский API Refinitiv построен на платформе Elektron Data Platform (EDP), которая позволяет легко находить, интегрировать, анализировать, обогащать и потреблять контент, который вам нужен, через единый, согласованный интерфейс.

EDP ​​API обеспечивает упрощенный доступ к исследованиям в реальном времени, а также к индивидуальным историческим выпискам.

Ключевая особенность

  • Одна точка доступа API ко всему контенту, имеющему право на участие, для программного доступа.
  • EDP ​​API поддерживает распространение исследований Linkback и предоставляет URL-адреса для исследований вместо документов для участников, поддерживающих Linkback.
  • Для запросов на доступ к API доступен набор участников, предварительно одобривших их, с течением времени добавляются новые участники.
  • Стандартизированные форматы схемы и метаданных для> 1000 участников.
  • Обогащенные метаданными, предоставленными участниками, с метаданными NLP (Natural Language Processing).
  • Research Alerts — для нового входящего и обновленного контента участника.
  • Запрос-ответ доступен для программных опросов и загрузок доступного контента.
  • Вы и участник контролируете права на исследования.

Обзор API EDP Research

API исследований EDP использует механизм оповещений для доставки обновлений. Сначала приложение должно войти в Elektron Data Platform и получить токен доступа, используемый при любых запросах к Research API. Приложение может использовать API для подписки на исследовательские документы. После этого новые обновления (оповещения) будут помещены в очередь AWS SQS. Приложение отвечает за опрос очереди для получения новых сообщений.

Обзор веб-сервисов Amazon

Приложение в этой статье использует различные веб-сервисы Amazon. Ниже приведены некоторые описания и ресурсы.

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

AWS Lambda позволяет запускать код без подготовки или управления сервером. AWS Lambda поддерживает несколько языков за счет использования сред выполнения. Мы используем среду выполнения Python для выполнения кода нашего приложения на Python в этой статье. Вы также можете использовать AWS Lambda для запуска своего кода в ответ на события, такие как изменения данных в корзине Amazon S3 или таблице Amazon DynamoDB.

Согласно разделу Использование лямбды с Amazon SQS , Amazon SQS также может быть источником событий лямбда-функции AWS, которая вызывает лямбда-функцию с событием, содержащим сообщение очереди, однако SQS, созданный Research API, в настоящее время не поддерживает эту функцию. В этой статье мы реализуем функцию Lambda для опроса очереди SQS вручную.

Хранилище параметров менеджера системы AWS (хранилище параметров SSM)

Хранилище параметров AWS Systems Manager обеспечивает безопасное иерархическое хранилище для управления данными конфигурации и управления секретами. В качестве значений параметров вы можете хранить такие данные, как пароли, строки базы данных и коды лицензий. Значение может быть сохранено в виде простого текста или зашифрованных данных.

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

Amazon Simple Storage Service (Amazon S3)

Amazon S3 — это сервис хранения объектов. Он имеет концепцию «корзины», которая является контейнером для объектов, хранящихся в Amazon S3. Каждый объект содержится в ведре.

Шаговые функции AWS

Шаговые функции AWS — это сервис, который позволяет пользователям координировать несколько сервисов AWS в безсерверном рабочем процессе. Рабочие процессы состоят из последовательности шагов, причем выход одного шага действует как вход в следующий. Он переводит рабочий процесс приложения в диаграмму состояний, которую легко понять и отслеживать.

В этой статье мы используем шаговые функции AWS для интеграции каждого шага лямбда-функций в соответствии с рабочим процессом API исследования, таким как получение токена доступа, подписка на исследование и опрос SQS. Ниже приведена диаграмма состояний, созданная пошаговыми функциями для приложения. Во время выполнения отображаются текущие шаги выполнения, а также регистрируется состояние и результаты каждого шага.

Рабочий процесс приложения

Приложение реализовано для многократного опроса SQS на предмет новых обновлений. Поскольку Lambda была предназначена для небольших простых функций, мне нужно разделить каждый шаг реализации на несколько функций Lambda и интегрировать их с функциями шага AWS.

1. Step Function вызывает лямбда-функцию; « GetEDPToken », чтобы получить имя пользователя EDP, пароль из хранилища параметров AWS Systems Manager ( хранилище параметров SSM), а затем использовать эту информацию для получения токена доступа EDP из службы Elektron Data API. Токен доступа будет сохранен обратно в хранилище параметров. Ниже приведен фрагмент кода лямбда-функции «getEDPToken» для получения значения параметров из хранилища параметров SSM.


питон