Я пытаюсь использовать библиотеку KMS в одной из своих DAG, на которой работает PythonOperator, но я сталкиваюсь с ошибкой на веб-сервере воздушного потока:

details = "Cloud Key Management Service (KMS) API has not been used in project 'TENANT_PROJECT_ID' before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview?project='TENANT_PROJECT_ID' then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."

Веб-сервер воздушного потока не может импортировать мою конкретную группу обеспечения доступности баз данных из моего хост-проекта в проект арендатора (где работает веб-сервер). Группы обеспечения доступности баз данных работают без проблем, так как мой хост-проект настроен правильно, но отсутствие возможности отслеживать его в пользовательском интерфейсе является огромным недостатком.

Технические характеристики системы:

softwareConfig:
  imageVersion: composer-1.8.2-airflow-1.10.3
  pypiPackages:
    google-cloud-kms: ==1.2.1
  pythonVersion: '3'

Было бы неплохо иметь возможность использовать KMS и пользовательский интерфейс воздушного потока, если нет, то мне, возможно, придется добавить свои секреты в переменные среды облачного композитора (что не является предпочтительным).

Любые известные решения по этому поводу?

0
jpoudroux 27 Ноя 2019 в 12:44
Включили ли вы KMS API для проекта клиента? Если нет, вы можете сделать это, перейдя на эту страницу console.cloud.google.com/apis/dashboard< /а>. Можете ли вы опубликовать свой код, чтобы проверить, как вы обрабатываете расшифровку ключей?
 – 
BVSKanth
27 Ноя 2019 в 15:05
Я не включил KMS API для проекта клиента и не знаю, как получить доступ к проекту клиента, чтобы включить его, поскольку у меня нет прямого доступа к этому проекту. Приветствуются любые советы по доступу к проекту арендатора! Обратите внимание, что на самом деле DAG работает на моем рабочем узле (следовательно, он может получить доступ к KMS в моем хост-проекте, где у композитора есть свои рабочие узлы и т. д.), и моя DAG делает то, что должна делать. Но при попытке синхронизировать dagbag с проектом арендатора, на котором запущен веб-сервер воздушного потока, возникает ошибка, указывающая, что KMS не включен в проекте арендатора.
 – 
jpoudroux
27 Ноя 2019 в 16:10
Вы не можете включить, если вы не можете войти в панель мониторинга или отсутствует проект клиента в списке проектов. Свяжитесь с администраторами проекта.
 – 
BVSKanth
27 Ноя 2019 в 17:29
Похоже, что настройка по умолчанию заключается в том, что веб-сервер воздушного потока работает на appengine в клиентском проекте, управляемом gcp, без доступа конечного пользователя: stackoverflow.com/questions/53762839/… - но я уточню у нашего администратора проекта. В этом случае нам не придется использовать KMS или запускать веб-сервер самостоятельно. Я обновлю ответ в комментарии ниже. Спасибо за помощь!
 – 
jpoudroux
28 Ноя 2019 в 12:04
Похоже, у нас нет доступа к проекту арендатора в облачном композиторе. Это немного прискорбно, так как мы не выполняем здесь никакой обработки, а только синхронизируем наши даги для пользовательского интерфейса (возможно, однако, что-то еще работает под капотом).
 – 
jpoudroux
28 Ноя 2019 в 13:44

1 ответ

Веб-сервер Airflow является управляемым компонентом в Cloud Composer, поэтому, как заявляют другие, он работает в проекте арендатора, к которому у вас (как у владельца среды) нет доступа. В настоящее время нет возможности получить доступ к этому проекту.

Если у вас есть допустимый вариант использования для включения дополнительных API в проекте клиента, я бы рекомендовал отправить отзыв о продукте. Вы можете узнать, как это сделать, в общедоступной документации продукта (в том числе, если вы хотите отправить запрос функции в систему отслеживания проблем).

В качестве альтернативы, если вы хотите поэкспериментировать, AIP-24 — это предложение Airflow под названием сохранение базы данных DAG, которое кэширует DAG в базе данных Airflow, а не для разбора/импорта их на веб-сервере (вот почему вам нужен KMS в этой ситуации). Если вы используете Composer 1.8.1+, вы можете экспериментально включить эту функцию, установив core.store_serialized_dags=True. Обратите внимание, что не гарантируется, что он будет работать для всех DAG, но здесь он может быть вам полезен.

0
hexacyanide 30 Ноя 2019 в 02:38