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
Обновлена 18 февраля 2025 г.

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

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

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

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

  2. Выберите язык программирования и создайте версию функции:

    Node.js
    Python
    1. Подготовьте ZIP-архив с кодом функции:
      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.
    2. Создайте версию функции. Укажите:
      • среду выполнения — nodejs16;
      • способ загрузки кода — ZIP-архив;
      • файл — index-js.zip;
      • точку входа — index.main;
      • сервисный аккаунт, для которого нужно получить IAM-токен.
    1. Подготовьте 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')
              }
          
      2. Добавьте файл index.py в ZIP-архив index-py.zip.
    2. Создайте версию функции. Укажите:
      • среду выполнения — python311;
      • способ загрузки кода — ZIP-архив;
      • файл — index-py.zip;
      • точку входа — index.main;
      • сервисный аккаунт, для которого нужно получить IAM-токен.
  3. Выполните функцию.

    Ответ функции будет выглядеть следующим образом:

    {
        "access_token": "CggVAgAAABoBMRKABHGgpZ......",
        "expires_in": 42299,
        "token_type": "Bearer"
    }
    

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

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