решение состоит из двух функций:
-
Функция getvocabulary получает список хостов Greenplum из облака и формирует словарь в котором содержатся ID кластеров и соответствующие им значения
-
Функция enrichbilling по событию появления/изменения CSV файла выгрузки биллинга из указанного бакета расширяет его значениями лейблов, соответствующими указанным в словаре ID кластеров
Для работы решения необходимо:
-
Создать бакет
-
В резделе биллинга облачной консоли настроить периодическую выгрузку данных в созданный бакет
-
Создать сервисную учетную запись с правами на чтение/запись в бакет, назначить ей роль viewer для всего облака, роль invoker для бессерверных функций, a также payloadviewer для секретов lockbox
-
Для сервисной учетной записи создать ключ AWS
-
Создать секрет Lockbox (запросить доступ к preview сервиса, если его нет) в котором прописать AWS_ACCESS_KEY_ID (id ключа), AWS_SECRET_ACCESS_KEY (секретный ключ) и AWS_DEFAULT_REGION = ru-central1
-
Создать функцию getvocabulary (функция должна исполняться с использованием сервисной учетной записи, созданной в п. 3)
-
Для функции создать триггер типа таймер и указать необходимую периодичност обновления файла-словаря
-
Прописать для функции следующие переменные окружения:
-
CLOUD_ID - ID облака
-
BUCKET - название бакета, куда должен сохраняться словарь
-
FILE_NAME - название объекта, в который должен сохранятся словарь в рамках заданного бакета
и секреты:
-
AWS_KEY - AWS_ACCESS_KEY_ID из секрета Lockbox созданного на шаге 5
-
AWS_SECRET - AWS_SECRET_ACCESS_KEY из секрета Lockbox созданного на шаге 5
-
Загрузить в функцию архив с файлами index.py и requirements.txt из соответствующей папки проекта и в качестве точки входа указать index.handler, также задать таймаут исполнения - 20с
-
Создать функцию enrichbilling (функция должна исполняться с использованием сервисной учетной записи, созданной в п. 3)
-
Создать триггер для функции. В качестве условия запуска функции указать события S3 - создание объекта в бакете созданном в п. 1
-
Прописать для функции следующие переменные окружения:
-
VOCOBJECT - название объекта, в который должен сохранятся словарь в рамках заданного бакета (такое же значение, как указано для FILE_NAME в п. 8)
-
VOCBUCKET - такое же значение, как указано для соответствующей переменной в п. 8
-
RESLUTBUCKET- название бакета, в котором будут сохраняться результирующие файлы (его необходимо предсоздать и дать права на запись для сервисной учетной записи, созданной в п. 3)
и секреты:
-
AWS_ACCESS_KEY_ID - AWS_ACCESS_KEY_ID из секрета Lockbox созданного на шаге 5
-
AWS_SECRET_ACCESS_KEY - AWS_SECRET_ACCESS_KEY из секрета Lockbox созданного на шаге 5
-
AWS_DEFAULT_REGION - AWS_DEFAULT_REGION из секрета Lockbox созданного на шаге 5
- Загрузить в функцию архив с файлами index.py и requirements.txt из соответствующей папки проекта и в качестве точки входа указать index.handler, также задать таймаут исполнения - 60с