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

nic*_*icq 14 amazon-web-services amazon-elastic-beanstalk microservices aws-api-gateway

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

我目前的一般概念

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

在此输入图像描述

问题和怀疑:

  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.

Bob*_*ney 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​​网关使其快速简单,无需手动将某些配置从测试阶段复制到生产阶段.(我不期待任何复杂的解决方案,只能提供一些关于我可以使用哪些组件,部件和概念的提示.我将自己找到更多细节).

你应该看一下阶段变量.这将允许您使用存储在这些变量中的dev/test/prod之间的差异的基本配置.


Ste*_*ane 8

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

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