Настройка APIgateway от Swagger |программно - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать несколько API в APIGateway, используя файл Swagger.

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

Я хочу выполнить ту же задачу, используя AWS Lambda (Node JS) , чтобы я мог:

  1. Создать APIиспользуя Swagger
  2. Добавить конечные точки (пользовательский сервер)
  3. Добавить авторизатор (cognito)

Я просмотрел Документацию AWS , но не смогпонять это правильно.Как выполнить эту задачу?

1 Ответ

0 голосов
/ 19 февраля 2019

Если вам действительно нужно использовать swagger, я бы сказал

  • Напишите свои API в формате swagger json
  • Синтаксически проанализируйте, чтобы добавить свои API gateway расширения (конечные точки / авторизатор / роль)
  • Опубликуйте это

Или

  • Создайте свой API с данным swagger документом
  • Передайте restapi id в lambda функцию
  • Используйте apigateway SDK (например, NodeJS SDK для APIGateway ), чтобы получить ресурсы и методы для пересчета и добавленияинтеграция в него.

Но рассматривали ли вы AWS Cloudformation сценарии?В моем текущем проекте я рассмотрел то, что вы хотите сделать, но, не будучи экспертом в swagger, я выбрал Cloudformation.(также считаются AWS SAM и serverless).Это немного повторяется, но гораздо проще писать и понимать.Вот пример конечной точки в формате yaml CFN -

ResourceUserActions:
  Type: AWS::ApiGateway::Resource
  DeletionPolicy: Delete
  Properties:
    RestApiId: !Ref RestAPI
    ParentId: !Ref ResourceUser
    PathPart: "{action+}"
UserActionsMethod:
Type: AWS::ApiGateway::Method
Properties:
  RestApiId: !Ref RestAPI
  ResourceId: !Ref ResourceUserActions
  HttpMethod: ANY
  AuthorizationType: COGNITO_USER_POOLS
  AuthorizerId: !Ref ApiAuthorizer
  Integration:
    Type: AWS_PROXY
    IntegrationHttpMethod: POST
    Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HandlerFunction.Arn}/invocations
    Credentials: !GetAtt ApiGatewayRole.Arn

Тип AWS::ApiGateway::Resource определяет ресурс, а AWS::ApiGateway::Method добавляет метод, авторизатор, сведения о типе интеграции к ресурсу.Для получения дополнительной информации см. AWS CFN для APIGateway

...