我将在AWS上构建微服务架构,我想请你澄清我的疑虑。
我目前的一般概念
我想使用API网关,它公开了在Elastic Beanstalk中运行的微服务API。我想将Elastic Beanstalk放在VPC中,而无需从Internet直接访问其实例。
问题&疑惑:
答案 0 :(得分:11)
我会回答非基于意见的观点:
- Elastic Beanstalk在应用程序创建时获得子域名。这个 API网关应使用子域,集成类型为:AWS 服务,在行动配置 - 我是对的吗?
醇>
不,AWS服务集成仅适用于您实际调用 Elastic Beanstalk服务的情况。您将调用自己的beanstalk 实例,因此您将使用HTTP集成。
- 什么代表单个微服务? Elastic Beanstalk的应用程序是一个特定的可扩展微服务?
醇>
这取决于您,但正如评论中所述,许多客户选择通过Lambda函数而不是beanstalk应用程序来完成此操作。使用Lambda的好处是您无需管理beanstalk应用程序的扩展。
- 测试环境:我应该在测试环境中使用什么结构(或者 staging env。)?我想与另一个创建单独的VPC Elastic Beanstalk和其他亚马逊服务。
醇>
请注意,API Gateway目前无法联系您的VPC中的资源。任何beanstalk实例都需要公开访问。
- 测试环境和API网关:我应该如何设置API网关?如果请求具有特定的子域,它应该允许客户端访问测试环境中的微服务,例如:test.mydomain.com/hello_world/say_hello。我不确定如何在CI / CD中使用API网关使其快速简单,无需手动将某些配置从测试阶段复制到生产阶段。 (我不期待任何复杂的解决方案,只能提供一些关于我可以使用哪些组件,部件和概念的提示。我将自己找到更多细节。)
醇>
你应该看看stage variables。这将允许您使用存储在这些变量中的dev / test / prod之间差异的基本配置。
答案 1 :(得分:3)
API网关现在支持与私有VPC集成,因此我希望您可以将ELB部署在私有VPC中,并使用.ebextension