如何使用CloudFromation更新一个由多个服务组成的API网关?

问题描述 投票:1回答:1

我有一个由多个服务端点组成的api网关(比方说服务A、B、C、D),当一个服务A更新时,我想只动态更新服务A的api网关,而保持服务B、C、D不变。当一个服务A更新时,我想只动态更新服务A的api网关,而保持服务B、C、D不变。而且我有一个maven插件来为每个服务生成swagger文件。

为了让这个工作顺利进行,我有以下解决方案。

  1. 用AWS的CLI来更新api网关。融合 服务A的swagger文件的模式,并进行重新部署。

  2. 将服务A、B、C、D的所有swagger文件合并为一个swagger文件,并将这个swagger文件上传到S3 bucket。然后我就可以使用CloudForm模板创建api网关(用S3BodyLocation到上一步的swagger文件)并重新部署。

我的问题是,是否有更简单的方法可以让我使用CloudFormation为单一服务(如aws cli)更新api网关,而无需合并所有服务的swagger文件?或者有其他解决方案可以实现我的目标吗?如果没有,我的哪种解决方案更好?谢谢你。

PS.我也很好奇,大家是怎么把所有服务的swagger文件合并的?我也很好奇人们是如何在微服务中使用单个api网关的,对我来说,似乎没有办法避免在使用它来创建api网关之前合并所有服务的多个swagger文件。

amazon-web-services swagger amazon-cloudformation aws-api-gateway
1个回答
1
投票

有了 AWS::Serverless::Api,你应该使用 DefinitionBody 属性。这里有一个很好的例子 现实世界-无服务器.


0
投票

您可以看看SAM,它将帮助您生成API网关,比传统的CloudFormation更简单一些,但仍将为您生成CloudFormation堆栈。

请看这里。https:/docs.aws.amazon.comserverless-application-modellatestdeveloperguidesam-resource-api.html。

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