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

Получение IAM-токена сервисного аккаунта с помощью функции

Статья создана
Yandex Cloud
Улучшена
amatol
Обновлена 27 мая 2025 г.

Если версия функции создана с сервисным аккаунтом, вы можете получить для него IAM-токен из:

  • контекста обработчика. IAM-токен находится в поле access_token параметра context.
  • сервиса метаданных в формате Google Compute Engine с помощью API.

Чтобы получить IAM-токен:

  1. Создайте функцию. При создании первой версии функции выберите среду выполнения Node.js или Python.

  2. Отключите опцию Добавить файлы с примерами кода.

  3. Нажмите кнопку Продолжить.

  4. В блоке Способ выберите ZIP-архив.

  5. Подготовьте ZIP-архив с кодом функции:

    Node.js
    Python
    1. Сохраните следующий код в файл с названием index.js, чтобы получить IAM-токен:

      • из контекста обработчика:

        exports.main = async function (event, context) {
            return {
                'statusCode': 200,
                'headers': {
                    'Content-Type': 'text/plain'
                },
                'isBase64Encoded': false,
                'body': context.token
            }
        };
        
      • с помощью API:

        const fetch = require("node-fetch");
        let url = 'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token';
        let headers = {'Metadata-Flavor': 'Google'};
        
        exports.main = async function (event) {
            const resp = await fetch(url, {
                headers: headers,
            });
            return {
                code: resp.status,
                body: await resp.text()
            };
        };
        
    2. Если будете получать IAM-токен с помощью API, сохраните следующий код в файл с названием package.json:

      {
          "name": "my-app",
          "dependencies": {
              "node-fetch": "2.x"
          }
      }
      
    3. Добавьте файл index.js и, если будете получать IAM-токен с помощью API, файл package.json в ZIP-архив index-js.zip.

    4. Нажмите Прикрепить файл и выберите подготовленный ZIP-архив index-js.zip.

    1. Сохраните следующий код в файл с названием index.py, чтобы получить IAM-токен:

      • из контекста обработчика:

        def main(event, context):
        
            return {
                'statusCode': 200,
                'headers': {
                    'Content-Type': 'text/plain'
                },
                'isBase64Encoded': False,
                'body': context.token
            }
        
      • с помощью API:

        import requests
        url = 'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'
        headers = {'Metadata-Flavor': 'Google'}
        def main(event, context):
            resp = requests.get(url, headers=headers)
            return {
                'statusCode': 200,
                'headers': {
                    'Content-Type': 'text/plain'
                },
                'isBase64Encoded': False,
                'body': resp.content.decode('UTF-8')
            }
        
  6. Создайте версию функции.

    1. В поле Точка входа укажите index.main.

    2. В блоке Параметры выберите сервисный аккаунт, для которого нужно получить IAM-токен, или создайте новый.

  7. Выполните функцию.

    В случае успешного выполнения функции вы получите следующий ответ:

    {
        "statusCode": 200,
        "headers": {"Content-Type": "text/plain"},
        "isBase64Encoded": false,
        "body":
        {
            "access_token": "t1.9euelZrPm5O********",
            "expires_in": 43200,
            "token_type": "Bearer"
        }
    }
    

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

Предыдущая
Все инструкции
Следующая
Подключение к управляемым БД из функции
Проект Яндекса
© 2025 ООО «Яндекс.Облако»