Интеграция HTTP-прокси API шлюза с автономным сервером (НЕ Lambda Proxy)
Я пытаюсь использовать автономный сервер для разработки / моделирования моего шлюза API локально. Мой API-шлюз свободно использует интеграцию HTTP-прокси. Производственный ресурс выглядит так:
Я создал конфигурацию без сервера, основанную на нескольких документах и обсуждениях, в которых говорится, что можно определить интеграцию HTTP-прокси с помощью конфигурации Cloud Formation:
- httpProxyWithApiGateway.md - Настройка HTTP-прокси на API-шлюзе с использованием инфраструктуры без сервера.
- Настройка HTTP-прокси на API-шлюзе (официальные документы без сервера: API-шлюз)
Я адаптировал два приведенных выше примера конфигурации для моих целей, см. Ниже.
Есть какие-нибудь советы, за то, что я могу здесь не так делать?
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 ответ
По умолчанию 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