Skip to content

shoguevara/yc-finops-python-gp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

yc-finops-python-gp

решение состоит из двух функций:

  • Функция getvocabulary получает список хостов Greenplum из облака и формирует словарь в котором содержатся ID кластеров и соответствующие им значения

  • Функция enrichbilling по событию появления/изменения CSV файла выгрузки биллинга из указанного бакета расширяет его значениями лейблов, соответствующими указанным в словаре ID кластеров

Для работы решения необходимо:

  1. Создать бакет

  2. В резделе биллинга облачной консоли настроить периодическую выгрузку данных в созданный бакет

  3. Создать сервисную учетную запись с правами на чтение/запись в бакет, назначить ей роль viewer для всего облака, роль invoker для бессерверных функций, a также payloadviewer для секретов lockbox

  4. Для сервисной учетной записи создать ключ AWS

  5. Создать секрет Lockbox (запросить доступ к preview сервиса, если его нет) в котором прописать AWS_ACCESS_KEY_ID (id ключа), AWS_SECRET_ACCESS_KEY (секретный ключ) и AWS_DEFAULT_REGION = ru-central1

  6. Создать функцию getvocabulary (функция должна исполняться с использованием сервисной учетной записи, созданной в п. 3)

  7. Для функции создать триггер типа таймер и указать необходимую периодичност обновления файла-словаря

  8. Прописать для функции следующие переменные окружения:

  • CLOUD_ID - ID облака

  • BUCKET - название бакета, куда должен сохраняться словарь

  • FILE_NAME - название объекта, в который должен сохранятся словарь в рамках заданного бакета

и секреты:

  • AWS_KEY - AWS_ACCESS_KEY_ID из секрета Lockbox созданного на шаге 5

  • AWS_SECRET - AWS_SECRET_ACCESS_KEY из секрета Lockbox созданного на шаге 5

  1. Загрузить в функцию архив с файлами index.py и requirements.txt из соответствующей папки проекта и в качестве точки входа указать index.handler, также задать таймаут исполнения - 20с

  2. Создать функцию enrichbilling (функция должна исполняться с использованием сервисной учетной записи, созданной в п. 3)

  3. Создать триггер для функции. В качестве условия запуска функции указать события S3 - создание объекта в бакете созданном в п. 1

  4. Прописать для функции следующие переменные окружения:

  • 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

  1. Загрузить в функцию архив с файлами index.py и requirements.txt из соответствующей папки проекта и в качестве точки входа указать index.handler, также задать таймаут исполнения - 60с

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages