Как я могу установить API Key Security глобально на API Gateway с помощью Swagger - PullRequest
2 голосов
/ 28 марта 2019

Я пытаюсь импортировать файл openapi / swagger в шлюз api, но не могу установить безопасность, как ожидалось.Я хочу, чтобы ключ API требовался для всех путей.

Задание его ключа API требуется в консоли после импорта, но это решение нежелательно, также работает установка поля безопасности в каждом пути отдельно, ноЯ ищу глобальное решение.

Когда я пытаюсь импортировать файл, я получаю следующее предупреждение:

Your API was not imported due to errors in the Swagger file.

    Method 'GET' on resource '/' specified security,
    but no custom authorizers were created and the extension
    x-amazon-apigateway-auth was not set.
    This method will be not be secured. 

Похоже, мне либо нужна лямбдакак пользовательский авторизатор только для ключа API (я не знаком с авторизаторами, но это, кажется, не имеет смысла, если он мне не нужен при настройке ключа API, требуемого в консоли);или мне нужно что-то сделать с этим загадочным x-amazon-apigateway-auth, для которого я не могу найти документы (все другие расширения openapi, которые amazon описал здесь ).

Пример миниамала приведен ниже:

openapi: 3.0.1
info:
  title: test
  version: 0
servers:
- url: "/"
security:
  - ApiKey: []
paths:
  "/":
    get:
      # if I copy the security part into here things work 
      responses:
        '204':
          description: no content
      x-amazon-apigateway-integration:
        httpMethod: GET
        type: http
        uri: https://httpstat.us/204
components:
  securitySchemes:
    ApiKey:
      type: apiKey
      name: x-api-key
      in: header
x-amazon-apigateway-api-key-source: HEADER

, так как защита ключа API установлена ​​на корневом уровне, это позволяет мне предположить, что все пути должны использовать ключ API (если не перезаписаны отдельные пути), что на самом деле происходит, выше предупреждение и без APIключ требуется при импорте.

...