Получение IAM-токена для аккаунта на Яндексе

Для выполнения операций в Яндекс.Облаке через API необходим IAM-токен.

Примечание

IAM-токен действителен 12 часов. Рекомендуем не ждать истечения срока действия токена, а запрашивать его чаще, например каждый час.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

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

$ yc iam create-token

Предупреждение

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

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

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

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

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

    • с помощью curl в Bash или CMD:

      curl -d "{\"yandexPassportOauthToken\":\"<OAuth-token>\"}" "https://iam.api.cloud.yandex.net/iam/v1/tokens"
      
    • с помощью встроенной функции в PowerShell:

      $yandexPassportOauthToken = "<OAuth-Token>"
      $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
      

Полученный IAM-токен указывайте при обращении к ресурсам Яндекс.Облака через API. Передайте IAM-токен в заголовке Authorization в следующем формате:

Authorization: Bearer <IAM-TOKEN>

Примеры

Запишите IAM-токен в переменную с помощью CLI и используйте токен в других запросах из командной строки. Пример запроса на получение списка облаков:

$ export IAM_TOKEN=`yc iam create-token`
$ curl -H "Authorization: Bearer ${IAM_TOKEN}" \
    https://resource-manager.api.cloud.yandex.net/resource-manager/v1/clouds
$IAM_TOKEN=yc iam create-token
curl.exe -H "Authorization: Bearer $IAM_TOKEN" https://resource-manager.api.cloud.yandex.net/resource-manager/v1/clouds