AWS API Gateway + Elastic Beanstalk和微服务

时间:2016-11-17 16:49:51

标签: amazon-web-services elastic-beanstalk microservices aws-api-gateway

我将在AWS上构建微服务架构,我想请你澄清我的疑虑。

我目前的一般概念

我想使用API​​网关,它公开了在Elastic Beanstalk中运行的微服务API。我想将Elastic Beanstalk放在VPC中,而无需从Internet直接访问其实例。

enter image description here

问题&疑惑:

  1. Elastic Beanstalk在应用程序创建时获得子域名。 API网关应使用此子域与集成类型:AWS服务,在操作配置中 - 我是对的吗?
  2. 什么代表单个微服务? Elastic Beanstalk的应用程序是一个特定的可扩展微服务吗?
  3. 微服务如何相互通信?我将使用SQS(简单队列服务)进行一些任务。但在其他情况下,当两个微服务通过API网关而不是直接相互通信时,它会更好吗 - 我是对的吗?
  4. 测试环境:我应该在测试环境(或staging env。)中使用什么结构?我考虑用另一个Elastic Beanstalk和其他亚马逊服务创建单独的VPC。
  5. 测试环境和API网关:我应该如何设置API网关?如果请求具有特定的子域,它应该允许客户端访问测试环境中的微服务,例如:test.mydomain.com/hello_world/say_hello。我不确定如何在CI / CD中使用API​​网关使其快速简单,无需手动将某些配置从测试阶段复制到生产阶段。 (我不期待任何复杂的解决方案,只能提供一些关于我可以使用哪些组件,部件和概念的提示。我将自己找到更多细节。)
  6. 您是否有使用Codep Deploy和/或Jenkins将应用程序部署到Elastic Beanstalk的经验?我很有兴趣以哪种方式更好:Jenkins,AWS Code Deploy或Jenkins + CodeDeploy。

2 个答案:

答案 0 :(得分:11)

我会回答非基于意见的观点:

  
      
  1. Elastic Beanstalk在应用程序创建时获得子域名。这个   API网关应使用子域,集成类型为:AWS   服务,在行动配置 - 我是对的吗?
  2.   

不,AWS服务集成仅适用于您实际调用 Elastic Beanstalk服务的情况。您将调用自己的beanstalk 实例,因此您将使用HTTP集成。

  
      
  1. 什么代表单个微服务? Elastic Beanstalk的应用程序是一个特定的可扩展微服务?
  2.   

这取决于您,但正如评论中所述,许多客户选择通过Lambda函数而不是beanstalk应用程序来完成此操作。使用Lambda的好处是您无需管理beanstalk应用程序的扩展。

  
      
  1. 测试环境:我应该在测试环境中使用什么结构(或者   staging env。)?我想与另一个创建单独的VPC   Elastic Beanstalk和其他亚马逊服务。
  2.   

请注意,API Gateway目前无法联系您的VPC中的资源。任何beanstalk实例都需要公开访问。

  
      
  1. 测试环境和API网关:我应该如何设置API网关?如果请求具有特定的子域,它应该允许客户端访问测试环境中的微服务,例如:test.mydomain.com/hello_world/say_hello。我不确定如何在CI / CD中使用API​​网关使其快速简单,无需手动将某些配置从测试阶段复制到生产阶段。 (我不期待任何复杂的解决方案,只能提供一些关于我可以使用哪些组件,部件和概念的提示。我将自己找到更多细节。)
  2.   

你应该看看stage variables。这将允许您使用存储在这些变量中的dev / test / prod之间差异的基本配置。

答案 1 :(得分:3)

API网关现在支持与私有VPC集成,因此我希望您可以将ELB部署在私有VPC中,并使用.ebextension

将其与API Gateway一起放在前端

来源:https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-api-gateway-supports-endpoint-integrations-with-private-vpcs/