【发布时间】:2021-04-18 16:10:34
【问题描述】:
我在某些网站中将 AWS ECS 用于我的服务器(多个微服务器),并使用 API Gateway + OpenApi 来定义路由并将它们与 ECS 微服务器集成。
每个路径前缀都应该与不同的 ECS 集成,并将所有子路径指向那里。
有没有办法在 OpenApi 中使用一些正则表达式将其与某个路径下的所有路径和操作集成?
这就是我为单一路径和单一操作定义路径的方式:
OpenApi:
openapi: "3.0.1"
info:
title:
Fn::Sub: "${EnvironmentName}-api"
version: 0.0.1
paths:
/api/project:
get:
responses:
default:
description: "Default response for GET"
x-amazon-apigateway-integration:
payloadFormatVersion: "1.0"
connectionId:
Fn::ImportValue:
Fn::Sub: ${EnvironmentName}:HttpApiVPCLink
type: "http_proxy"
httpMethod: "ANY"
uri:
Fn::ImportValue:
Fn::Sub: ${EnvironmentName}:DiscoveryService-microserver-1
connectionType: "VPC_LINK"
/api/item:
get:
responses:
default:
description: "Default response for GET"
x-amazon-apigateway-integration:
payloadFormatVersion: "1.0"
connectionId:
Fn::ImportValue:
Fn::Sub: ${EnvironmentName}:HttpApiVPCLink
type: "http_proxy"
httpMethod: "ANY"
uri:
Fn::ImportValue:
Fn::Sub: ${EnvironmentName}:DiscoveryService-microserver-2
connectionType: "VPC_LINK"
所以在这段代码中:
- 使用 get 操作路由
/api/project将使用 microserver1 和 - 使用 get 操作路由
/api/item将使用 microserver2
但我需要的是每条前缀为/api/project的路由,任何操作都将使用microserver1,
例如 - post operation 或 route /api/project/{id} 也应该使用 microserver1 而无需在 OpenApi 文件中进行额外定义
有没有办法定义类似的东西?
【问题讨论】:
标签: amazon-web-services swagger aws-api-gateway amazon-ecs openapi