Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Все практические руководства
    • Создание навыка Алисы
    • Развертывание веб-приложения
    • Разработка навыка Алисы и сайта с авторизацией
    • Запись данных с устройства в базу данных
    • Запись логов балансировщика в PostgreSQL
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Подключение к базе данных YDB из функции на Python
    • Подключение к базе данных YDB из функции на Node.js
    • Конвертация видео в GIF на Python
    • Создание функции Node.js с помощью TypeScript
    • Разработка пользовательской интеграции
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Запуск вычислений по расписанию в DataSphere
    • Интерактивная отладка функций
    • Регулярное асинхронное распознавание аудиофайлов из Object Storage
    • Канареечный релиз функции Cloud Functions
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Загрузка данных из Яндекс Директ в витрину Yandex Managed Service for ClickHouse® с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
    • Эмуляция множества IoT-устройств
    • Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
    • Сокращатель ссылок
    • Yandex Tracker: экспорт и визуализация данных
    • Запуск вычислений в DataSphere с помощью API
    • Разработка Telegram-бота для распознавания текста и аудио
    • Настройка реагирования в Yandex Cloud Logging и Cloud Functions
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте БД YDB
  • Создайте функцию
  • Протестируйте функцию
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Подключение к базе данных YDB из функции на Python

Подключение к базе данных Yandex Managed Service for YDB из функции Cloud Functions на Python

Статья создана
Yandex Cloud
Улучшена
Danila N.
Обновлена 6 февраля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте БД YDB
  • Создайте функцию
  • Протестируйте функцию
  • Как удалить созданные ресурсы

Создайте функцию с приложением на Python, которое выполняет простой запрос к базе данных Yandex Managed Service for YDB.

Функция с привязанным сервисным аккаунтом авторизуется в YDB через сервис метаданных.

Приложение создает драйвер подключения к БД YDB, сессию, транзакцию и выполняет запрос, используя библиотеку ydb. Эта библиотека устанавливается как зависимость при создании версии функции. Параметры подключения к БД передаются в приложение через переменные окружения.

Чтобы создать функцию и подключиться к БД:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте БД YDB.
  4. Создайте функцию.
  5. Протестируйте функцию.

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

Подготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

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

В стоимость поддержки инфраструктуры для этого сценария входит:

  • Плата за использование функции (см. тарифы Yandex Cloud Functions).
  • Плата за выполнение запросов к БД (см. тарифы Managed Service for YDB).

Создайте сервисный аккаунт

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.

  2. В списке сервисов выберите Identity and Access Management.

  3. Нажмите кнопку Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта, например sa-function. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  5. Нажмите Добавить роль и выберите editor.

  6. Нажмите кнопку Создать.

Создайте БД YDB

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать БД.

  2. В списке сервисов выберите Managed Service for YDB.

  3. Нажмите кнопку Создать базу данных.

  4. Введите имя БД. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  5. В блоке Тип базы данных выберите опцию Serverless.

  6. Нажмите кнопку Создать базу данных.

    Дождитесь запуска БД. В процессе создания БД будет иметь статус Provisioning. Когда БД станет готова к использованию, статус сменится на Running.

  7. Нажмите на имя созданной БД.

  8. В блоке Соединение найдите поле Эндпоинт и сохраните его значение. Оно понадобится на следующем шаге.

Создайте функцию

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать функцию.

  2. В списке сервисов выберите Cloud Functions.

  3. Нажмите кнопку Создать функцию.

  4. Введите имя и описание функции. Требования к имени:

    • длина — от 2 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.
  5. Нажмите кнопку Создать.

  6. В блоке Редактор выберите среду выполнения Python, отключите опцию Добавить файлы с примерами кода и нажмите Продолжить.

  7. В блоке Код функции создайте файл index.py и вставьте в него следующий код:

    import os
    import ydb
    import ydb.iam
    
    # Create driver in global space.
    driver = ydb.Driver(
      endpoint=os.getenv('YDB_ENDPOINT'),
      database=os.getenv('YDB_DATABASE'),
      credentials=ydb.iam.MetadataUrlCredentials(),
    )
    
    # Wait for the driver to become active for requests.
    
    driver.wait(fail_fast=True, timeout=5)
    
    # Create the session pool instance to manage YDB sessions.
    pool = ydb.SessionPool(driver)
    
    def execute_query(session):
      # Create the transaction and execute query.
      return session.transaction().execute(
        'select 1 as cnt;',
        commit_tx=True,
        settings=ydb.BaseRequestSettings().with_timeout(3).with_operation_timeout(2)
      )
    
    def handler(event, context):
      # Execute query with the retry_operation helper.
      result = pool.retry_operation_sync(execute_query)
      return {
        'statusCode': 200,
        'body': str(result[0].rows[0].cnt == 1),
      }
    
  8. В блоке Код функции создайте файл requirements.txt и вставьте в него следующий текст:

    ydb
    
  9. В качестве точки входа укажите index.handler.

  10. Выберите сервисный аккаунт, например sa-function.

  11. Настройте переменные окружения:

    • YDB_ENDPOINT — введите первую часть сохраненного ранее поля Эндпоинт (часть до вхождения /?database=). Например, grpcs://ydb.serverless.yandexcloud.net:2135.
    • YDB_DATABASE — введите вторую часть сохраненного ранее поля Эндпоинт (часть после вхождения /?database=). Например, /ru-central1/r1gra875baom********/g5n22e7ejfr1********.
  12. Нажмите кнопку Сохранить изменения.

Протестируйте функцию

Консоль управления
  1. Перейдите на вкладку Тестирование.

  2. Нажмите кнопку Запустить тест и посмотрите результат тестирования.

    При успешном подключении к БД и выполнении запроса состояние функции изменится на Выполнена, а ответ функции будет содержать следующий текст:

    {
      "statusCode": 200,
      "body": "True"
    }
    

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите БД.
  2. Удалите функцию.

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

Предыдущая
Разработка Telegram-бота
Следующая
Подключение к базе данных YDB из функции на Node.js
Проект Яндекса
© 2025 ООО «Яндекс.Облако»