Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex API Gateway
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Создание API-шлюза
    • Изменение API-шлюза и его спецификации
    • Подключение домена
    • Удаление API-шлюза
    • Просмотр графика мониторинга
    • Просмотр журнала выполнения
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Расширения спецификации
      • Обзор
      • Статический ответ
      • Вызов функции
      • Обращение по HTTP
      • Интеграция с Object Storage
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • ApiGatewayService
      • OperationService
    • REST
      • Обзор
      • ApiGateway
        • Обзор
        • create
        • delete
        • get
        • getOpenapiSpec
        • list
        • listAccessBindings
        • listOperations
        • setAccessBindings
        • update
        • updateAccessBindings
  • Вопросы и ответы
  1. Начало работы

Начало работы

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

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

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

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

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

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

Создайте API-шлюз и обратитесь к нему.

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

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

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

  2. В списке сервисов выберите API Gateway.

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

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

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

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

    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"
    
  7. Нажмите кнопку Создать.

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

    1. В открывшемся окне нажмите на созданный API-шлюз.

    2. Скопируйте значение поля Домен и сформируйте ссылку вида: https://<домен>/hello?user=API. Должна получиться ссылка вида:

      https://falrnjna8r5vj88ero6a.apigw.yandexcloud.net/hello?user=API
      
    3. Обратитесь к API-шлюзу, используя одну из команд:

      curl https://falrnjna8r5vj88ero6a.apigw.yandexcloud.net/hello?user=API
      curl https://falrnjna8r5vj88ero6a.apigw.yandexcloud.net/hello
      

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

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

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

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

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

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

    2. В разделе Последняя версия нажмите кнопку Создать в редакторе.

    3. В открывшемся окне в поле Среда выполнения выберите nodejs12.

    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. Нажмите кнопку Создать версию.

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

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

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

Чтобы обновить спецификацию 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: <ID функции>
            service_account_id: <ID сервисного аккаунта>
    

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

Примечание

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

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

curl https://falrnjna8r5vj88ero6a.apigw.yandexcloud.net/numbers
[0, 1, 2]

См. также

  • Концепции работы с сервисом.
  • Пошаговые инструкции для управления API-шлюзом.
В этой статье:
  • Перед началом работы
  • Создайте API-шлюз
  • Добавьте интеграцию с функцией
  • Создайте функцию
  • Расширьте спецификацию API-шлюза
  • Обратитесь к функции через API-шлюз
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»