Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex DataSphere
  • Начало работы
    • Настроить проект для работы с облаком
    • Организовать сообщество для студентов
    • Автоматизировать настройку проектов
    • Интегрировать сервис Yandex Data Processing
  • Справочник Terraform
  • Аудитные логи Audit Trails
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Получите IAM-токен
  • Создайте проекты
  • Как удалить созданные ресурсы
  1. Как организовать работу в DataSphere
  2. Автоматизировать настройку проектов

Как автоматизировать настройку проектов с помощью API

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Получите IAM-токен
  • Создайте проекты
  • Как удалить созданные ресурсы

Сообщества DataSphere позволяют организовать групповую работу и совместный доступ к материалам и ресурсам. Например, Docker-образы с предустановленными библиотеками, подключения к бакетам Yandex Object Storage и подготовленные датасеты, созданные в одном проекте, можно опубликовать, чтобы открыть к ним доступ для всех проектов сообщества. Это может быть полезно при подготовке учебных заданий или работе нескольких разработчиков над одним исследованием.

Создать и настроить проекты DataSphere можно с помощью интерфейса DataSphere. Однако если вам нужно настроить несколько одинаковых проектов, вы можете автоматизировать действия с помощью API DataSphere. и API Cloud Organization. Для этого вам понадобится свое настроенное сообщество с проектом, из которого вы будете вызывать методы API DataSphere.

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

  1. Получите IAM-токен.
  2. Создайте проекты.

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

Перед началом работы

Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:

  1. На главной странице DataSphere нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO).
  2. Выберите организацию Yandex Cloud Organization, в которой вы будете работать в Yandex Cloud.
  3. Создайте сообщество.
  4. Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.

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

В стоимость автоматизации входит плата за использование вычислительных ресурсов DataSphere.

Получите IAM-токен

Чтобы получить доступ к вашей организации из DataSphere, вам понадобится IAM-токен.

CLI
API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

Получите IAM-токен:

yc iam create-token

Внимание

Если вы владелец облака и работаете через API со своего аккаунта, помните — владелец облака может выполнять любые операции с ресурсами в облаке.

Рекомендуем выполнять операции от имени сервисного аккаунта, которому вы можете назначить только необходимые для работы роли.

  1. Войдите в ваш аккаунт на Яндексе.

  2. Получите OAuth-токен в сервисе Яндекс.OAuth. Для этого перейдите по ссылке, нажмите Разрешить и скопируйте полученный OAuth-токен.

  3. Обменяйте OAuth-токен на IAM-токен:

    Bash
    PowerShell
    curl \
      --request POST \
      --data '{"yandexPassportOauthToken":"<OAuth-токен>"}' \
      https://iam.api.cloud.yandex.net/iam/v1/tokens
    
    $yandexPassportOauthToken = "<OAuth-токен>"
    $Body = @{ yandexPassportOauthToken = "$yandexPassportOauthToken" } | ConvertTo-Json -Compress
    Invoke-RestMethod -Method 'POST' -Uri 'https://iam.api.cloud.yandex.net/iam/v1/tokens' -Body $Body -ContentType 'Application/json' | Select-Object -ExpandProperty iamToken
    

Создайте проекты

Чтобы создать проекты, скопируйте код в ячейки ноутбука и запустите их.

  1. Откройте проект DataSphere:

    1. Выберите нужный проект в своем сообществе или на главной странице DataSphere во вкладке Недавние проекты.

    2. Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
    3. Откройте вкладку с ноутбуком.
  2. Укажите полученный IAM-токен:

    iam_token = "<IAM-токен>"
    
  3. Импортируйте необходимую библиотеку:

    import requests
    
  4. Выведите на экран список всех доступных организаций и их идентификаторы:

    res = requests.get('https://resource-manager.api.cloud.yandex.net/resource-manager/v1/clouds', 
                        headers={"Authorization" : "Bearer {}".format(iam_token)})
    
    res.json()
    
  5. Укажите идентификатор организации, в которой должно быть создано сообщество:

    ORGANIZATION_ID = "<идентификатор_организации>"
    
  6. Получите список доступных платежных аккаунтов:

    res = requests.get('https://billing.api.cloud.yandex.net/billing/v1/billingAccounts', 
                        headers={"Authorization" : "Bearer {}".format(iam_token)})
    res.json()
    
  7. Создайте сообщество, подставив его имя, описание, а также идентификатор активного платежного аккаунта:

    data={}
    data['name'] = "<имя_сообщества>"
    data['description'] = "<описание_сообщества>"
    data['organizationId'] = ORGANIZATION_ID
    data['billingAccountId'] = "<идентификатор_платежного_аккаунта>"
    
    res = requests.post('https://datasphere.api.cloud.yandex.net/datasphere/v2/communities', 
                        json=data,
                        headers={"Authorization" : "Bearer {}".format(iam_token)})
    community_res = res.json()
    community_res
    
  8. Получите список идентификаторов ролей в DataSphere:

    res = requests.get('https://iam.api.cloud.yandex.net/iam/v1/roles', 
                        headers={"Authorization" : "Bearer {}".format(iam_token)})
    roles = res.json()['roles']
    datasphere_roles = [role for role in roles if 'datasphere' in role['id']]
    datasphere_roles
    
  9. Получите список участников организации:

    res = requests.get("https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/{}/users".format(ORGANIZATION_ID), 
                        headers={"Authorization" : "Bearer {}".format(iam_token)})
    res.json()
    

    Идентификаторы из поля sub понадобятся вам на следующем шаге.

  10. Создайте проекты, задайте ограничения и настройте роли участников:

    # Укажите список идентификаторов участников из поля 'sub', для которых должны быть созданы проекты
    user_organization_ids = ['<идентификатор_участника_1>','<идентификатор_участника_2>']
    
    projects = {}
    for user_id in user_organization_ids:
      # Создайте проект для пользователя
       data={}
       data['name'] = "Student {}".format(user_id)
       data['communityId'] = community_res['metadata']['communityId']
       data['description'] = "This is a workplace and create code and store resources"
       data['limits'] = {
         # Задайте ограничение на максимальное количество юнитов в час для проекта
         "maxUnitsPerHour": 10000,
         # Задайте ограничение на максимальное количество юнитов на один запуск ячейки для проекта
         "maxUnitsPerExecution": 5000
       }
       res = requests.post('https://datasphere.api.cloud.yandex.net/datasphere/v2/projects', 
                           json=data,
                           headers={"Authorization" : "Bearer {}".format(iam_token)})
       print("Project for {} is created with response: {}".format(user_id, res))
      
       data={}
       data['communityId'] = community_res['metadata']['communityId']
       data['projectNamePattern'] = "Student {}".format(user_id)
       res = requests.get('https://datasphere.api.cloud.yandex.net/datasphere/v2/projects', 
                           json=data,
                           headers={"Authorization" : "Bearer {}".format(iam_token)})
       projects[user_id] = res.json()['projects'][0]
       project_id = res.json()['projects'][0]['id']
      
       # Добавьте в проект себя с ролью datasphere.community-projects.admin 
       # и пользователя с ролью datasphere.community-projects.developer
       data={}
       data['accessBindings'] = [{
         "roleId": 'datasphere.community-projects.admin',
         "subject": {
               "id": "<идентификатор_администратора_проекта>", # Укажите идентификатор администратора проекта
               "type": "userAccount"
         }},
         {
         "roleId": 'datasphere.community-projects.developer',
         "subject": {
               "id": "<идентификатор_разработчика_проекта>", # Укажите идентификатор разработчика проекта
               "type": "userAccount"
         }}
       ]
       res = requests.post('https://datasphere.api.cloud.yandex.net/datasphere/v2/projects/{}:setAccessBindings'.\
                           format(project_id), 
                           json=data,
                           headers={"Authorization" : "Bearer {}".format(iam_token)})
       print("Admin was added to project {} with response: {}".format(project_id, res))
    
  11. Получите список созданных проектов:

    projects
    

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

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

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

Предыдущая
Организовать сообщество для студентов
Следующая
Интегрировать сервис Yandex Data Processing
Проект Яндекса
© 2025 ООО «Яндекс.Облако»