AWS API网关+弹性Beanstalk和微服务

问题描述 投票:11回答:2

我将在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环境)中使用什么结构?我考虑使用另一个Elastic Beanstalk和其他Amazon服务创建单独的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。
amazon-web-services elastic-beanstalk microservices aws-api-gateway
2个回答
11
投票

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

  1. Elastic Beanstalk在应用程序创建时获得子域。 API网关应使用此子域与集成类型:AWS服务,在操作配置中 - 我是对的吗?

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

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

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

  1. 测试环境:我应该在测试环境(或staging环境)中使用什么结构?我考虑使用另一个Elastic Beanstalk和其他Amazon服务创建单独的VPC。

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

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

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


4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.