Интеграция HTTP-прокси API шлюза с автономным сервером (НЕ Lambda Proxy) - PullRequest
3 голосов
/ 12 марта 2019

Я пытаюсь использовать автономный режим для разработки / моделирования локального шлюза API. Мой API-шлюз свободно использует HTTP прокси интеграции . Производственный ресурс выглядит так:

Screenshot of an HTTP Proxy integration on an API Gateway Resource Method

Я создал автономную конфигурацию без сервера, основанную на нескольких документах и ​​обсуждениях, в которых говорится, что можно определить интеграцию HTTP-прокси с помощью конфигурации Cloud Formation:

Я адаптировал два приведенных выше примера конфигурации для своих целей, см. Ниже.

Есть какие-нибудь советы, за то, что я тут не так делаю?

plugins:
  - serverless-offline

service: company-apig
provider:
  name: aws
  stage: dev
  runtime: python2.7

resources:
  Resources:

    # Parent APIG RestApi
    ApiGatewayRestApi:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: company-apig
        Description: 'The main entry point of the APIG'

    # Resource /endpoint
    EndpointResource:
      Type: AWS::ApiGateway::Resource
      Properties:
        ParentId:
          Fn::GetAtt:
            - ApiGatewayRestApi
            - RootResourceId
        PathPart: 'endpoint'
        RestApiId:
          Ref: ApiGatewayRestApi

    # Resource /endpoint/{proxy+}
    EndpointProxyPath:
      Type: AWS::ApiGateway::Resource
      Properties:
        ParentId:
          Ref: EndpointResource
        PathPart: '{proxy+}'
        RestApiId:
          Ref: ApiGatewayRestApi

    # Method ANY /endpoint/{proxy+}
    EndpointProxyAnyMethod:
      Type: AWS::ApiGateway::Method
      Properties:
        AuthorizationType: NONE
        HttpMethod: ANY
        Integration:
          IntegrationHttpMethod: ANY
          Type: HTTP_PROXY
          Uri: http://endpoint.company.cool/{proxy}
          PassthroughBehavior: WHEN_NO_MATCH
        MethodResponses:
          - StatusCode: 200
        ResourceId:
          Ref: EndpointProxyPath
        RestApiId:
          Ref: ApiGatewayRestApi

Для приведенной выше конфигурации я получаю этот вывод. По всей видимости, конфигурация вообще не регистрирует маршруты.

{
  "statusCode":404,
  "error":"Serverless-offline: route not found.",
  "currentRoute":"get - /endpoint/ping",
  "existingRoutes":[]
}

Связанный: я также пытаюсь решить ту же проблему, используя aws-sam, в следующем посте - Интеграция HTTP-прокси API шлюза с aws-sam (НЕ Lambda Proxy)

1 Ответ

1 голос
/ 13 марта 2019

По умолчанию serverless-offline не анализирует ваши ресурсы для конечных точек, включите его с помощью пользовательской конфигурации.

custom:
  serverless-offline:
    resourceRoutes: true

Окончание обслуживания:

Serverless: Routes defined in resources:
Serverless: ANY /endpoint/{proxy*} -> http://endpoint.company.cool/{proxy}

Serverless: Offline listening on http://localhost:3000

Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...