Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Lockbox
  • Начало работы
    • Все руководства
    • Синхронизация с секретами Managed Service for Kubernetes
    • Хранение подключений и переменных Apache Airflow™ в Yandex Lockbox
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Безопасная передача пароля в скрипт инициализации
  • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте секрет Yandex Lockbox
  • Подготовьте DAG-файл и запустите граф
  • Проверьте результат
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Хранение подключений и переменных Apache Airflow™ в Yandex Lockbox

Хранение подключений и переменных Apache Airflow™ в Yandex Lockbox

Статья создана
Yandex Cloud
Обновлена 8 апреля 2025 г.
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте секрет Yandex Lockbox
  • Подготовьте DAG-файл и запустите граф
  • Проверьте результат
  • Удалите созданные ресурсы

При работе с Yandex Managed Service for Apache Airflow™ вы можете использовать Yandex Lockbox для хранения артефактов, которые могут использоваться в DAG-файлах: подключений, переменных и конфигурационных данных. Yandex Lockbox интегрируется в Managed Service for Apache Airflow™ через провайдер Yandex Lockbox Secret Backend. В результате доступ к хранилищу секретов настраивается автоматически.

Ниже рассматривается направленный ациклический граф (DAG), выполняющий SQL-запрос SELECT 1; к БД в кластере Yandex Managed Service for PostgreSQL. Данные для подключения к БД хранятся в Yandex Lockbox и автоматически подставляются в граф.

Чтобы использовать конфигурационные данные из секрета Yandex Lockbox в графе:

  1. Подготовьте инфраструктуру.
  2. Создайте секрет Yandex Lockbox.
  3. Подготовьте DAG-файл и запустите граф.
  4. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for PostgreSQL: вычислительные ресурсы и дисковое пространство (см. тарифы Managed Service for PostgreSQL).
  • Плата за кластер Managed Service for Apache Airflow™: вычислительные ресурсы и дисковое пространство (см. тарифы Apache Airflow™).
  • Плата за бакет Object Storage: хранение данных и выполнение операций с ними (см. тарифы Object Storage).
  • Плата за использование секрета Yandex Lockbox: (см. тарифы Yandex Lockbox).
  • Плата за использование публичных IP-адресов, если для хостов кластеров включен публичный доступ (см. тарифы Virtual Private Cloud).

Подготовьте инфраструктуруПодготовьте инфраструктуру

  1. Создайте сервисный аккаунт airflow-sa с ролями:

    • managed-airflow.integrationProvider;
    • lockbox.payloadViewer.

    Роль lockbox.payloadViewer не обязательно выдавать на весь каталог. Достаточно назначить ее на конкретный секрет Yandex Lockbox после его создания.

  2. Создайте бакет Object Storage с произвольными настройками.

  3. Отредактируйте ACL созданного бакета так, чтобы у сервисного аккаунта airflow-sa было разрешение READ.

  4. Создайте кластер Managed Service for Apache Airflow™ с параметрами:

    • Сервисный аккаунт — airflow-sa;
    • Имя бакета — имя созданного бакета.
    • Использовать Lockbox Secret Backend — убедитесь, что эта опция включена.
  5. Создайте кластер Managed Service for PostgreSQL с параметрами:

    • Имя БД — db1;
    • Имя пользователя — user1;
    • Пароль — user1-password.

Создайте секрет Yandex LockboxСоздайте секрет Yandex Lockbox

Для корректной работы кластера Apache Airflow™ секрет в Yandex Lockbox должен иметь имя в формате airflow/<тип_артефакта>/<идентификатор_артефакта>, где:

  • <тип_артефакта> — тип артефакта, который будет храниться в секрете. Доступны следующие типы:
    • connections — подключения;
    • variables — переменные;
    • config — данные конфигурации.
  • <идентификатор_артефакта> — идентификатор, который будет использован для обращения к артефакту в Apache Airflow™.

Создайте секрет Yandex Lockbox с параметрами:

  • Имя — airflow/connections/pg.

  • Тип секрета — Пользовательский.

  • Ключ — airflow/connections/pg.

  • Значение — выберите Текст и укажите следующее содержимое:

    {
      "conn_type": "postgres",
      "host": "<FQDN_хоста_кластера_PostgreSQL>",
      "port": 6432,
      "schema": "db1",
      "login": "user1",
      "password": "user1-password"
    }
    

В секрете будут сохранены данные для подключения к БД в кластере Managed Service for PostgreSQL.

Подробнее о том, как узнать FQDN хоста кластера PostgreSQL, см. в документации.

Подготовьте DAG-файл и запустите графПодготовьте DAG-файл и запустите граф

  1. Создайте локально файл с именем test_lockbox_connection.py и скопируйте в него скрипт:

    from airflow import DAG
    from airflow.providers.postgres.operators.postgres import PostgresOperator
    from datetime import datetime
    
    with DAG(
      dag_id='test_lockbox_connection',
      start_date=datetime(2024, 4, 19),
      schedule="@once",
      catchup=False,
    ) as dag:
      check_conn = PostgresOperator(
          task_id="check_conn",
          postgres_conn_id='pg',
          sql="SELECT 1;",
      )
    
  2. Загрузите DAG-файл test_lockbox_connection.py в созданный ранее бакет. В результате одноименный граф появится в веб-интерфейсе Apache Airflow™ автоматически.

  3. Откройте веб-интерфейс Apache Airflow™.

  4. Убедитесь, что в разделе DAGs появился новый граф test_lockbox_connection.

    Загрузка DAG-файла из бакета может занять несколько минут.

  5. Чтобы запустить граф, в строке с его именем нажмите кнопку image.

Проверьте результатПроверьте результат

Чтобы проверить результат в веб-интерфейсе Apache Airflow™:

  1. В разделе DAGs откройте граф test_lockbox_connection.
  2. Перейдите в раздел Graph.
  3. Выберите задание check_conn.
  4. Перейдите в раздел Logs.
  5. Убедитесь, что в логах есть строка Rows affected: 1. Это значит, что запрос выполнен успешно.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не платить за них:

  1. Сервисный аккаунт.
  2. Бакет Object Storage.
  3. Секрет Yandex Lockbox.
  4. Кластер Managed Service for Apache Airflow™.
  5. Кластер Managed Service for PostgreSQL.

Была ли статья полезна?

Предыдущая
Синхронизация с секретами Managed Service for Kubernetes
Следующая
Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
Проект Яндекса
© 2025 ООО «Яндекс.Облако»