AWS API Gateway Lambda作为微服务的代理

时间:2017-08-04 04:55:03

标签: amazon-web-services aws-lambda microservices aws-api-gateway api-gateway

由于我的项目将部署在 AWS 上,我们开始考虑 AWS API Gateway ,以便为我们的所有微服务提供一个主要入口点(坦率地说,我们也想通过安全等其他一些原因使用。我 正在使用API​​网关REST API,如果我们必须在每个REST服务中注册它,我觉得它有点不耐烦。

我发现使用 AWS API Gateway lambda函数作为代理非常好。这里描述:

  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
  3. 我想知道您对此方法的看法。您可以分享一些其他可以简化REST API API网关配置的方法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

一旦你计划在那里移动逻辑,例如动态路由,详细监控,警报等,我建议考虑其他方法,例如:

  • Apigee
  • Mulesoft
  • WSO2

您也可以在VPC中的EC2上托管它们,也可以选择托管托管版本。 (在某些情况下确实有重要的价格)

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