0

由于我的项目将部署在AWS上,我们开始考虑将AWS API Gateway作为一种为我们所有的微服务提供一个主要入口点的方式(坦率地说,我们也希望出于安全等其他原因使用)。我在玩 API Gateway REST API,我觉得如果我们必须在那里注册我们拥有的每个 REST 服务,这有点不合时宜。

我发现使用AWS API Gatewaylambda 函数作为代理是一个很好的选择。这里描述:

  1. https://medium.com/wolox-driving-innovation/https-medium-com-wolox-driving-innovation-building-microservices-api-aws-e9a455cc3456
  2. https://aws.amazon.com/blogs/compute/using-api-gateway-with-vpc-endpoints-via-aws-lambda

我想知道您对这种方法的看法。您是否还可以分享一些其他可以简化 REST API 的 API 网关配置的方法?

4

2 回答 2

1

通过 API Gateway 代理现有服务时,几乎没有注意事项。

  • 如果您的后端不是公开的,那么您需要设置一个 VPC 和一个从 VPC 到您的后端网络的站点到站点 VPN 连接,并使用 Lambda 代理您的服务。
  • 如果您需要进行任何数据转换或聚合,则需要使用 Lambda(内部 VPC 是可选的,除非需要 VPN 连接)。
  • 如果您的服务在 API 网关后面有复杂的集成,您可以考虑让 ESB 或消息中间件在您的本地或 AWS 中运行,然后代理到 API 网关。
  • 您可以将数据模型架构验证移至 API Gateway。
  • 您可以通过编写自定义授权方 Lambda 将服务身份验证移至 API Gateway。
  • 如果您碰巧将用户池和身份服务迁移到 AWS,您可以迁移到 AWS Cognito Manage Service 并使用 API Gateway 中的 AWS Cognito Authorizer 进行身份验证。
于 2017-08-04T06:20:36.567 回答
0

对于采用哑管道的用例(如martinfowler.com上所述),AWS API Gateway 是一个合理的选择。对于 AWS API Gateway,我建议首先使用 RAML 或 OpenAPI/Swagger 描述/设计您的 API,然后使用AWS API Importer导入 AWS 。

一旦您计划将逻辑移入其中,例如动态路由、详细监控、警报等,我建议您考虑其他方法,例如:

  • Apigee
  • 骡软
  • WSO2

您还可以将它们托管在您的 VPC 内的 EC2 上,或者选择加入托管版本。(在某些情况下确实有很大的价格标签)

为了描述 API,您可以使用 RAML(用于 Mulesoft)或 OpenAPI(前 Swagger,用于 Apigee 和 WSO2)。您还可以使用 APIMATIC 在它们之间进行转换,这使您能够跨各种 API 网关(甚至 AWS)迁移规范。

于 2017-08-08T13:17:44.307 回答