当前位置: 首页 > 知识库问答 >
问题:

将 AWS Resources 或 Swagger API Import for API Gateway?

邹祺然
2023-03-14

我即将通过 Cloudformation 设置 AWS API Gateway,并想知道什么是更好的解决方案:

我应该将AWS资源用于资源和方法,还是将我们熟知的OpenAPI(Swagger)文件导入API网关资源的更好方法?

从我的研究中,我发现使用swagger有一些局限性(https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html),但另一方面,它是创建API的标准。

因此,全面使用AWS Cloudformation可能会有一些我现在看不到的缺点。这就是为什么我要求一个处于相同情况的人的经验。感谢任何指导...

谢谢

共有3个答案

田晨
2023-03-14

以下是我对您的解决方案中的最佳实践的两点看法:

在开发产品时,swagger或apiary是记录您的API并在实现它们之前快速模拟API的好工具。有了(比如说)产品经理手中的模拟API和文档,开始制定一个可靠的开发计划就变得容易了。但是像swagger这样的工具可以自动模仿API规范,如果您希望导入这个规范只是为了模仿API,那么这个导入特性是一个很好的工具,否则就不是。我来解释一下原因。

通过直接从swagger导入API和编排AWS资源,您会带来很多限制,主要是您的开发过程不包括serverlesszappa等框架。这将迫使我们使用AWS控制台或AWS cli直接编写lambda函数,并使项目架构变得复杂。

在没有框架的情况下编写lambda函数时,如果我们事先知道我们的函数将相互正交并且不共享太多公共依赖项,那么很好,这将起作用,但对于任何具有(比如)数据库的项目,访问外部API的函数,一些endpoint由授权者保护并拥有其他资源,使用框架绝对是更好的选择。创建层和通用代码更容易,例如数据库包装类。

在使用任何框架时,最好从框架样板开始,并使实现与文档匹配。通过研究该框架的优点和局限性,我们可以确定它是否适合我们的体系结构。

此外,IMO,这种方法并未被广泛使用,随着项目变得更加复杂,以后寻求帮助可能很困难。

希望这有帮助。

薛弘壮
2023-03-14

现在,您可以使用SAM(无服务器应用程序模型)编写模板https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)如果您不喜欢无服务器框架。其中的一些好处是,您可以编写更少的cloudformation代码,并且可以在本地调试/测试lambdas/step函数。

赵永逸
2023-03-14

我个人认为开发api网关资源的最佳方式是使用无服务器框架,它非常容易使用,并且很容易与其他AWS服务(如Lambda)集成。

此外,无服务器只是云形成模板,因此非常灵活。

 类似资料:
  • 问题内容: 我发现,如果将CSS背景应用于,则它将占用整个页面(无论实际的高度或宽度是多少)。 但是,如果您同时对和都应用CSS背景,则的背景 不会占用整个页面 。 这是预期的行为吗? 我该如何叠加两个全屏背景(例如,背景色和半透明图像?) 问题答案: 这是正确的行为。1在标准模式下,,以及,不立即采取了视区的整个高度,即使它出现,所以当你只应用背景后者。实际上,如果您不为其提供自己的背景,则该元

  • 问题内容: 我正在使用JodaTime 1.6.2。 我有一个需要转换为(Joda)或进行映射的a。 原因是我想出了如何在a 和a 之间进行转换: 因此,如果我可以在和之间进行转换,则可以继续转换为。感谢您朝着正确的方向前进! 问题答案: 乔达时间 要将JodaTime转换为,只需执行 要将JodaTime转换为,只需执行 Java时间 要将Java8转换为,只需执行 要将Java8转换为,只需执

  • 问题内容: 我希望解码以下JSON数据: 不确定是否将其放在NSArray或NSDictionary中 欢迎任何评论 问题答案: 您正在使用哪个iOS版本?在iOS 5中,您具有用于解析JSON数据的类,如果您需要定位较旧的iOS或MAC OSX,则应使用第三方库,例如。发布的字符串将是NSDictionary,其数组包含一个字典。使用键可以访问该阵列 在代码中: 在SWIFT 2.0中: [更新

  • 是否可以将流程任务(在Alfresco Activiti或Camunda中)关联到外部URL以打开由外部web应用程序生成的表单? 我正在使用这些产品的当前版本进行原型设计: null 其思想是使用本机UI(相当于JBPM7.1.0.final中的KIE Workbench),创建流程定义并将其中一个用户任务与外部URL(一种重定向或弹出框内)相关联,在该URL中,声明该任务的用户(在发布并启动流

  • 有没有一种有效的方法可以有效地将手机与平板电脑分离,将手机重定向到移动版网站,而不是平板电脑? 我的想法 : htaccess重定向 :虽然我可以找到一种方法来重定向所有移动设备,但我还没有设法进一步将手机与平板电脑分开。 用户代理JS过滤器:同样的问题。 用户代理窗口。width:在某种程度上可行,但我显然不能测试所有设备,我不想把横向平板电脑视为手机,反之亦然。。。 对于这种情况,是否有最佳做

  • 问题内容: 我想转换下面的数组 转换为XML格式或JSON。有人可以帮忙吗? 问题答案: 这适用于关联数组。

  • 问题内容: 我这里有点问题。 我有一个applet,用户可以在其中“绘制”它。为此,我使用java.awt.Graphics2D。但是,如何将用户绘图图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他内容?我不知道该怎么做。 谢谢。 问题答案: 我这样做,并且效果很好: 就这些了:)谢谢大家:)

  • Cooper编写了以下onEdit脚本,用于在从下拉列表中选择列标题名称时对列进行排序: 这工作得很好,但是我现在想根据从下拉列表中选择的列标题名称来更改升序真/假标准。因此,我修改了脚本,目的是当从下拉列表中选择“分支”、“报告者”或“雇员”时,所选列将按升序排序,但如果选择了任何其他标题名称,我希望这些标题名称按降序排序。这是我修改的脚本,但我不能让它发挥作用: 在其他工作表中,我已经能够修改