直接从 SwaggerHub 将您的 API 定义部署到 AWS API Gateway!
过去几年,向无服务器基础设施的转变逐渐加速。基础设施即服务 (IaaS) 改变了行业格局,带来了低成本、敏捷性、可扩展性和可靠性。由于无需额外管理和维护服务,SwaggerHub 下一个重磅集成选择与无服务器 API 网关服务合作也就顺理成章了。Amazon API Gateway 正是这样一项无需过多介绍的服务。它是一个完全托管的平台,允许用户大规模构建、部署和管理 API。Amazon API Gateway 的重要特点是它支持 Swagger 定义格式来设计和构建 RESTful API,而您也知道,SwaggerHub 正是围绕 Swagger 而生!
如果开发人员能够使用现有的最佳工具来设计 API,从 API 模拟到强大 API 编辑器的动态功能,并将其部署到 AWS API Gateway,同时消除定义和 Lambda 函数之间通常所需的复杂配置,那么工作将会变得非常轻松。这正是 SwaggerHub 最新 Amazon Gateway 集成所提供帮助的地方。通过 Amazon Gateway 集成,您可以快速自动地将您的 API 暴露在 Amazon Gateway 上供消费。无服务器部署也得到了妥善处理,SwaggerHub 会根据 SwaggerHub 中的 Swagger 定义自动在 Amazon Lambda 中生成您的 API 代码构建块!
SwaggerHub 提供两种 API Gateway 集成:
- Amazon API Gateway
- Amazon API Gateway Lambda 同步
这些集成位于 API 的右上角。 
Amazon API Gateway
Amazon API Gateway 允许用户以代理模式快速将其 API 部署到 Amazon Gateway,这使得 Amazon API Gateway 能够处理身份验证、速率限制等事务。SwaggerHub 将使 Gateway 定义与您的 API 定义保持同步。用户可以根据自己的需求配置集成。以下字段可以自定义:
- 名称: 集成的名称,将在 SwaggerHub 中显示
- AWS 区域: 支持 AWS Gateway 的区域。请注意,并非所有列出的 AWS 区域都支持 Gateway,请查阅 AWS 文档。
- API ID: 要发布的 API 的 ID。如果此字段留空且与 API 定义的
title
不匹配,将在 AWS Gateway 上创建一个新的 API。
- 发布模式: 指定如果 API 已存在于 AWS Gateway 上,集成应将 SwaggerHub 上的 API 更改合并还是覆盖到 AWS Gateway 上的 API。
- 基本路径模式: API Gateway 有多种表示资源路径的方式,解释
basePath
属性有三个选项:Ignore
(忽略)、Prepend
(前置)和 Split
(分割)。更多详情请参见此处。
- 部署模式: 允许用户自定义 API 如何推送到 Gateway。用户可以选择“保存时推送”或完全禁用集成。在某些情况下,用户可能不希望每次点击保存时都将 API 推送到 Gateway,此时选择部署模式为
never
(从不)将会有所帮助。
- 要代理到的服务器地址: 这允许用户将自定义 API 连接到 AWS 服务。
- AWS 访问密钥和秘密密钥: 授权 SwaggerHub 连接到 API Gateway 所需的密钥。更多详情请参见此处。
配置完成后,现在就可以从 SwaggerHub 部署 API 并与 AWS Gateway 同步了!
Amazon API Gateway Lambda 同步
AWS Lambda 帮助用户构建服务的后端逻辑,而无需管理服务器的麻烦。Amazon API Gateway 和 Lambda 函数作为互补服务运作良好。API Gateway 使得网页客户端能够动态调用 Lambda 函数。Lambda 同步集成在 Gateway 上为您完成了复杂的底层工作,这意味着用户只需关注应用程序的真正业务价值。集成可以根据用户的需求进行配置。
- 名称: 集成的名称
- AWS 区域: 支持 AWS Gateway 的区域
- API ID: 要发布的 API 的 ID。如果此字段留空且 AWS Gateway 上不存在与 Swagger 定义
title
值匹配的 API,将创建一个新的 API。
- 发布模式: 指定如果 API 已存在于 AWS Gateway 上,集成应将 SwaggerHub 上的 API 更改合并还是覆盖到 AWS Gateway 上的 API。
- 基本路径模式: API Gateway 有多种表示资源路径的方式。解释
basePath
属性有三个选项:Ignore
(忽略)、Prepend
(前置)和 Split
(分割)。更多详情请参见此处。
- 部署模式: 允许用户自定义 API 如何推送到 Gateway。用户可以选择“保存时推送”或完全禁用集成。在某些情况下,用户可能不希望每次点击保存时都将 API 推送到 Gateway,此时选择部署模式为
never
(从不)将会有所帮助。
- 创建不存在的 Lambda 函数的执行角色: 这决定了 SwaggerHub 应如何创建 Lambda 函数。
- AWS 访问密钥和秘密密钥: 授权 SwaggerHub 连接到 API Gateway 所需的密钥。更多详情请参见此处。
配置完成后,API 设计现在可以部署并与 Amazon Lambda 函数同步。Lambda 函数根据每个操作中的 operationId
创建并匹配。如果您没有 operationId
(在 OpenAPI 规范中是可选的),系统将为您创建一个。如果存在与 operationId
同名的 Lambda 函数,则将使用该函数,而不会创建新函数。
附加说明
在代理模式和 Lambda 模式下,如果 Swagger 定义中不存在 Amazon 特有的扩展,SwaggerHub 将为每个操作添加这些扩展。这些扩展决定了 API Gateway 的配置方式。如果 SwaggerHub 发现扩展已存在,则不会对其进行修改。因此,如果您更改了定义并需要更新到 AWS Gateway 的映射,您应该在保存前删除该扩展。Amazon API Gateway 不支持 Swagger 定义的所有功能。SwaggerHub 将在您保存时尝试禁用定义中不受支持的功能——它将在您的定义中将其标记出来。由于 Amazon API Gateway 的功能不断改进,请查阅 Amazon 文档以获取限制列表。这两个集成是强大的工具,可帮助您使用 AWS API Gateway 以最有效的方式将 API 从设计阶段带到部署阶段。
立即在 SwaggerHub 试用吧!如果您对新的集成有任何建议,或者希望看到您的产品与 SwaggerHub 集成,请在此处提交功能请求,告诉我们。