【问题标题】:OpenApi (Swagger) with AWS ECS integration - expose all operationsOpenApi (Swagger) 与 AWS ECS 集成 - 公开所有操作
【发布时间】: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


    【解决方案1】:

    使用代理集成。 See Documentations

    当您使用代理集成时,您的所有子 API 将被代理到目标。

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 2021-12-21
      • 2023-03-18
      • 2021-10-08
      • 1970-01-01
      • 2020-11-15
      • 2017-08-20
      • 2020-12-19
      • 2019-12-18
      相关资源
      最近更新 更多