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-токенПолучите 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 ООО «Яндекс.Облако»