Как использовать Aws Временные учетные данные в Nifi - PullRequest
1 голос
/ 23 марта 2019

Мне нужно использовать временные учетные данные aws AccessKey, SecretKey и Token в процессе nifi для доступа к объектам S3. AccessKey, SecretKey и Token будут предоставлены вызовом Api. Как использовать эти временные учетные данные в объекте nifi ListS3 и т. Д.?

Один из найденных вариантов - использование AWSCredentialsProviderControllerService, так как это Могу ли я обновить значения службы контроллера на основе вызова API?

AwsCrentialsProviderControllerService

Какие-либо другие варианты, которые я могу использовать в этом сценарии?

Спасибо! Ani

1 Ответ

3 голосов
/ 24 марта 2019

Да, мы можем использовать AWSCredentialsProvider сервис контроллера и API-интерфейс NiFi REST для создания этого, хотя это может быть немного сложно.Тем не менее, давайте сделаем набросок здесь.

Что бы вы ни делали на NiFi - обновление конфигурации службы процессора / контроллера, остановка / запуск служб / процессоров - все это вызывает вызовы API в бэкэнде.NiFi Framework делает вызов за кулисами.И поскольку у нас также есть HTTP-процессоры, такие как InvokeHTTP, мы могли бы создать эту штуку.Я мог бы придумать что-то вроде следующего:

  1. Создать службу контроллера AWSCredentialsProvider и оставить конфигурации пустыми, что фактически переводит компонент в недопустимое состояние.Запишите его уникальный идентификатор (UUID).Давайте назовем это cp-id.Мы будем использовать его позже.
  2. Создайте свой поток с вашей логикой, которая включает ListS3 -> <OTHER_PROCESSORS>.Сконфигурируйте процессор ListS3 с помощью AWSCredentialsProvider, который мы создали на шаге 1.
  3. Запишите ID компонента этого ListS3 процессора.Давайте назовем это s3-id
  4. Создайте другой поток, используя InvokeHTTP, и настройте его для конечной точки службы, которая предоставляет вам ваши временные учетные данные AWS.Используйте учетные данные и сделайте еще один вызов с InvokeHTTP на сервер NiFi с конечной точкой PUT /controller-services/{cp-id}, чтобы обновить свойства
  5. . Выполните другой вызов, чтобы обновить состояние выполнения службы контроллера с помощью PUT /controller-services/{cp-id}/run-status.Это активирует службу контроллера, что означает, что теперь вы можете запустить процессор ListS3, который можно снова выполнить, используя HTTP-вызов на сервер NiFi: PUT /processors/{s3-id}/run-status

Некоторые полезные ссылки:

...