Подключение к Yandex Managed Service for PostgreSQL
С помощью направленного ациклического графа (DAG) можно настроить подключение к БД в кластере Yandex Managed Service for PostgreSQL. Данные для подключения к БД хранятся в Yandex Lockbox и автоматически подставляются в граф.
Перед началом работы
-
Создайте кластер Managed Service for PostgreSQL с параметрами:
- Имя БД —
db1
; - Имя пользователя —
user1
; - Пароль —
user1-password
.
- Имя БД —
-
Выдайте своему сервисному аккаунту роль
lockbox.payloadViewer
.Роль
lockbox.payloadViewer
не обязательно выдавать на весь каталог. Достаточно назначить ее на конкретный секрет Yandex Lockbox после его создания.
Создайте секрет Yandex Lockbox
Создайте секрет Yandex Lockbox с именем airflow/connections/pg1
и содержимым json.dumps(conn)
, где conn
— подключение к кластеру Managed Service for PostgreSQL.
conn = {
"conn_type": "postgres",
"host": "<FQDN_хоста_кластера_PostgreSQL>",
"port": 6432,
"schema": "db1",
"login": "user1",
"password": "user1-password"
}
В секрете airflow/connections/pg1
будут сохранены данные для подключения к БД в кластере Managed Service for PostgreSQL.
Подробнее о том, как узнать FQDN хоста кластера PostgreSQL, см. в разделе FQDN хоста PostgreSQL.
Подготовьте DAG-файл и запустите граф
-
Создайте локально файл с именем
postgres_operator.py
и скопируйте в него скрипт:from airflow import DAG from airflow.providers.postgres.operators.postgres import PostgresOperator with DAG( dag_id='postgres_operator', schedule=None, ): PostgresOperator( task_id="check_conn", postgres_conn_id='pg1', sql="SELECT 3;", )
-
Загрузите DAG-файл
postgres_operator.py
в созданный ранее бакет. В результате одноименный граф появится в веб-интерфейсе Apache Airflow™ автоматически. -
Убедитесь, что в разделе DAGs появился новый граф
postgres_operator
.Загрузка DAG-файла из бакета может занять несколько минут.
-
Чтобы запустить граф, в строке с его именем нажмите кнопку
.
Проверьте результат
Чтобы проверить результат в веб-интерфейсе Apache Airflow™:
- В разделе DAGs откройте граф
postgres_operator
. - Перейдите в раздел Graph.
- Выберите задание check_conn.
- Перейдите в раздел Logs.
- Убедитесь, что в логах есть строка
Rows affected: 3
. Это значит, что запрос выполнен успешно.