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

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

  • Перед началом работы
  • Создайте API-шлюз
  • Обратитесь к API-шлюзу
  • Добавьте интеграцию с функцией
  • Создайте функцию
  • Расширьте спецификацию API-шлюза
  • Обратитесь к функции через API-шлюз

Начало работы с API Gateway

Статья создана
Yandex Cloud
Улучшена
Обновлена 14 ноября 2025 г.
  • Перед началом работы
  • Создайте API-шлюз
  • Обратитесь к API-шлюзу
  • Добавьте интеграцию с функцией
    • Создайте функцию
    • Расширьте спецификацию API-шлюза
    • Обратитесь к функции через API-шлюз

В этой инструкции вы создадите и протестируете работу разных типов расширений: сначала вы сконфигурируете API-шлюз для получения статического ответа, а затем добавите интеграцию для вызова функции. Для обращения к API-шлюзу потребуется curl.

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

Чтобы начать работать в Yandex Cloud:

  1. Войдите в консоль управления. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.
  3. Если у вас еще нет каталога, создайте его.

Создайте API-шлюзСоздайте API-шлюз

Консоль управления
Terraform
  1. В консоли управления выберите каталог, в котором необходимо создать API-шлюз.

  2. Перейдите в сервис API Gateway.

  3. Нажмите кнопку Создать API-шлюз.

  4. В поле Имя введите numbers.

  5. (Опционально) В поле Описание введите описание.

  6. В поле Таймаут обработки запроса задайте таймаут обработки запроса. Значение не должно превышать установленный лимит.

  7. В блок Спецификация добавьте спецификацию:

    openapi: "3.0.0"
    info:
      version: 1.0.0
      title: Test API
    paths:
      /hello:
        get:
          summary: Say hello
          operationId: hello
          parameters:
            - name: user
              in: query
              description: User name to appear in greetings
              required: false
              schema:
                type: string
                default: 'world'
          responses:
            '200':
              description: Greeting
              content:
                'text/plain':
                    schema:
                      type: "string"
          x-yc-apigateway-integration:
            type: dummy
            http_code: 200
            http_headers:
              'Content-Type': "text/plain"
            content:
              'text/plain': "Hello, {user}!\n"
    
  8. Нажмите кнопку Создать.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать API-шлюз:

  1. Опишите в конфигурационном файле параметры ресурса yandex_api_gateway:

    • name — имя API-шлюза. Формат имени:

      • длина — от 2 до 63 символов;
      • может содержать строчные буквы латинского алфавита, цифры и дефисы;
      • первый символ — буква, последний — не дефис.
    • description — описание API-шлюза.

    • labels — метки для API-шлюза. Укажите пару ключ-значение.

    • execution_timeout — таймаут обработки запроса. Значение задается в секундах и не должно превышать установленный лимит. Необязательный параметр. Значение по умолчанию – 300 сек.

    • spec — спецификация API-шлюза.

    Пример структуры конфигурационного файла:

    resource "yandex_api_gateway" "test-api-gateway" {
      name        = "<имя_API-шлюза>"
      description = "<описание_API-шлюза>"
      labels      = {
        label       = "label"
        empty-label = ""
      }
      execution_timeout = "<таймаут_обработки_запроса>"
      spec              = <<-EOT
        openapi: "3.0.0"
        info:
          version: 1.0.0
          title: Test API
        paths:
          /hello:
            get:
              summary: Say hello
              operationId: hello
              parameters:
                - name: user
                  in: query
                  description: User name to appear in greetings
                  required: false
                  schema:
                    type: string
                    default: 'world'
              responses:
                '200':
                  description: Greeting
                  content:
                    'text/plain':
                      schema:
                        type: "string"
              x-yc-apigateway-integration:
                type: dummy
                http_code: 200
                http_headers:
                  'Content-Type': "text/plain"
                content:
                  'text/plain': "Hello, {user}!\n"
      EOT
    }
    

    Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

      После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления или с помощью команд CLI:

      yc serverless api-gateway get <имя_API-шлюза>
      

Обратитесь к API-шлюзуОбратитесь к API-шлюзу

  1. В консоли управления выберите каталог, в котором находится API-шлюз.

  2. Перейдите в сервис API Gateway и нажмите на созданный API-шлюз.

  3. Сохраните значение поля Служебный домен.

  4. Установите утилиту curl.

  5. Обратитесь к API-шлюзу с помощью curl, используя одну из команд:

    • curl <служебный_домен>/hello?user=API
      
    • curl <служебный_домен>/hello
      

    Где <служебный_домен> — значение поля Служебный домен, сохраненное ранее.

    Например:

    curl https://d5dm1lba80md********.i9******.apigw.yandexcloud.net/hello?user=API
    

    Результат:

    • Hello, API!
      
    • Hello, world!
      

Добавьте интеграцию с функциейДобавьте интеграцию с функцией

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

Создайте функцию для получения списка чисел. Подробнее о функциях читайте в документации Yandex Cloud Functions.

Консоль управления
Terraform

Чтобы создать функцию:

  1. Создайте функцию:
    1. В консоли управления выберите каталог, в котором будет создана функция.
    2. Нажмите кнопку Создать ресурс.
    3. Выберите Функция.
    4. В поле Имя введите list.
    5. Нажмите кнопку Создать.
  2. Создайте версию функции:
    1. Выберите среду выполнения nodejs18.

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

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

    4. В поле Способ выберите Редактор кода.

    5. Ниже в редакторе нажмите кнопку Создать файл.

      1. В открывшемся окне введите имя файла index.js.
      2. Нажмите кнопку Создать.
    6. Вставьте следующий код в файл index.js:

      module.exports.handler = async (event) => {
        return {
          "statusCode": 200,
          "headers": {"content-type": "application/json"},
          "body": "[0, 1, 2]"
        };
      };
      
    7. В поле Точка входа введите index.handler.

    8. Нажмите кнопку Сохранить изменения.

  3. Сделайте функцию публичной.

Чтобы создать функцию:

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

    1. Сохраните следующий код в файл с названием index.js:

      module.exports.handler = async (event) => {
        return {
          "statusCode": 200,
          "headers": {"content-type": "application/json"},
          "body": "[0, 1, 2]"
        };
      };
      
    2. Добавьте файл index.js в ZIP-архив hello-js.zip.

  2. Опишите в конфигурационном файле параметры ресурса yandex_function:

    resource "yandex_function" "test-function" {
      name               = "test-function"
      description        = "Test function"
      user_hash          = "first-function"
      runtime            = "nodejs18"
      entrypoint         = "index.handler"
      memory             = "128"
      execution_timeout  = "10"
      service_account_id = "<идентификатор_сервисного_аккаунта>"
      tags               = ["my_tag"]
      content {
        zip_filename = "<путь_к_ZIP-архиву>"
      }
    }
    

    Где:

    • name — имя функции.
    • description — текстовое описание функции.
    • user_hash — произвольная строка, определяющая версию функции. При изменениях функции необходимо менять и эту строку. Функция обновится при изменении этой строки.
    • runtime — среда выполнения функции.
    • entrypoint — имя функции в исходном коде, которая будет служить точкой входа в приложения.
    • memory — объем памяти в мегабайтах, отведенный для выполнения функции.
    • execution_timeout — таймаут выполнения функции.
    • service_account_id — идентификатор сервисного аккаунта, от имени которого будет запускаться функция.
    • tags — теги функции.
    • content — исходный код функции.
    • content.0.zip_filename — путь к ZIP-архиву, содержащему исходный код функции.

    Более подробную информацию о параметрах ресурса yandex_function см. в документации провайдера.

  3. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  4. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

      После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления или с помощью команд CLI:

      yc serverless function list
      

Расширьте спецификацию API-шлюзаРасширьте спецификацию API-шлюза

Добавьте в спецификацию API-шлюза информацию о функции.

Консоль управления
Terraform

Чтобы обновить спецификацию API-шлюза:

  1. В консоли управления выберите каталог, в котором необходимо обновить API-шлюз.

  2. В открывшемся окне выберите API-шлюз и нажмите кнопку .

  3. В открывшемся меню нажмите кнопку Редактировать.

  4. В блок Спецификация добавьте расширенную версию спецификации.

    Добавлен метод /numbers, который с помощью расширения x-yc-apigateway-integration типа cloud_functions вызывает функцию по идентификатору.

    Чтобы API-шлюз корректно отработал, в параметре function_id укажите идентификатор функции, которую хотите вызывать. Чтобы API-шлюз смог обратиться к приватной функции, в параметре service_account_id укажите сервисный аккаунт с правами на вызов функции.

    openapi: "3.0.0"
    info:
      version: 1.0.0
      title: Test API
    paths:
      /hello:
        get:
          summary: Say hello
          operationId: hello
          parameters:
            - name: user
              in: query
              description: User name to appear in greetings
              required: false
              schema:
                type: string
                default: 'world'
          responses:
            '200':
              description: Greeting
              content:
                'text/plain':
                   schema:
                     type: "string"
          x-yc-apigateway-integration:
            type: dummy
            http_code: 200
            http_headers:
              'Content-Type': "text/plain"
            content:
              'text/plain': "Hello, {user}!\n"
      /numbers:
        get:
          summary: List some numbers
          operationId: listNumbers
          responses:
            '200':
              description: Another example
              content:
                'application/json':
                   schema:
                     type: "array"
                     items:
                       type: "integer"
          x-yc-apigateway-integration:
            type: cloud_functions
            function_id: <идентификатор_функции>
            service_account_id: <идентификатор_сервисного_аккаунта>
    

Чтобы добавить в спецификацию API-шлюза информацию о функции:

  1. Откройте файл конфигурации Terraform и добавьте метод /numbers, который с помощью расширения x-yc-apigateway-integration типа cloud_functions вызывает функцию по идентификатору. В блоке spec измените спецификацию api-шлюза, указав следующие параметры:

    • function_id — идентификатор функции.
    • service_account_id — идентификатор сервисного аккаунта с правами на вызов функции.

    Расширенная спецификация API-шлюза:

    ...
    
      spec = <<-EOT
        openapi: "3.0.0"
        info:
          version: 1.0.0
          title: Test API
        paths:
          /hello:
            get:
              summary: Say hello
              operationId: hello
              parameters:
                - name: user
                  in: query
                  description: User name to appear in greetings.
                  required: false
                  schema:
                    type: string
                    default: 'world'
              responses:
                '200':
                  description: Greeting
                  content:
                    'text/plain':
                      schema:
                        type: "string"
              x-yc-apigateway-integration:
                type: dummy
                http_code: 200
                http_headers:
                  'Content-Type': "text/plain"
                content:
                  'text/plain': "Hello again, {user}!\n"
          /numbers:
            get:
              summary: List some numbers
              operationId: listNumbers
              responses:
                '200':
                  description: Another example.
                  content:
                    'application/json':
                      schema:
                        type: "array"
                        items:
                          type: "integer"
              x-yc-apigateway-integration:
                type: cloud_functions
                function_id: <идентификатор_функции>
                service_account_id: <идентификатор_сервисного_аккаунта>
      EOT
    }
    

    Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

      После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления или с помощью команд CLI:

      yc serverless api-gateway get <имя_API-шлюза>
      

Обратитесь к функции через API-шлюзОбратитесь к функции через API-шлюз

Примечание

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

Обратитесь к API-шлюзу:

curl <служебный_домен>/numbers

Где <служебный_домен> — значение поля Служебный домен, сохраненное ранее.

Например:

curl https://d5dm1lba80md********.i9******.apigw.yandexcloud.net/numbers

Результат:

[0, 1, 2]

См. такжеСм. также

  • Концепции работы с сервисом.
  • Пошаговые инструкции для управления API-шлюзом.

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

Следующая
Все инструкции
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»