如何构建您自己的基于 REST API 的 AWS 连接器 | Mendix

跳到主要内容

如何构建自己的基于 REST API 的 AWS 连接器

REST API 主题图形

亚马逊网络服务 (AWS) 是全球最知名的云计算平台之一,为各种规模的企业提供大量工具和服务。从小型初创公司到大型企业,许多公司都依赖 AWS 来处理其基础设施、应用程序和数据。

然而,将 AWS 与其他系统集成可能是一个艰巨的过程,需要专业知识和技术熟练程度。这就是 Mendix 用武之地。

开发人员可以轻松利用现有的连接器或构建新的连接器,将 AWS 服务与其他应用程序和系统集成在一起 Mendix高效的低代码开发平台。

“AWS 认识到 Mendix 平台,我们认识到 AWS 服务的变革力量,” Mendix. 由于双方之间七年成功的战略关系 Mendix 和 AWS,两家公司已决定 扩大市场关系.

要了解有关我们与 AWS 合作的更多信息,请阅读我们的新闻稿 开始

使用 AWS 可以 Mendix 用户可以利用 AWS 提供的自动化流程和服务,而无需自行开发,从而节省时间和精力。 AWS 连接器 Mendix,您可以以低代码和低工作量的方式轻松利用 AWS 中提供的大量服务。在 Mendix 可以帮助您简化运营并提高组织的整体生产力,无论您是开发需要访问 AWS 资源的自定义应用程序,还是尝试使用 Lambda 和 S3 等 AWS 工具自动化业务流程。为了帮助您立即开始将 AWS 服务集成到您的应用程序中,我将引导您完成在 Mendix.

新会员入门指南

当有人发现他们想要使用的 AWS 服务在 Mendix 市场,他们的第一反应通常是这样的,“好吧,这意味着这个解决方案目前无法用 Mendix”,或者“我必须找到一个解决这个问题的方法。”

我是 AWS 团队的一员 Mendix 现在我还没有开始,但在开始之前,这也是我的第一反应。即使在开始之后,当我已经知道构建 AWS 连接器是我团队的目标时,我仍然感到不知所措。我记得当时我在想:“AWS 服务太多了,每个服务的操作也太多了。我们如何跟上需求?”请注意,这是我刚加入团队时的想法,当时我还认为构建连接器就像拯救世界一样——也就是说,它非常困难!但事实并非如此——构建 AWS 连接器是我们所有人 Mendix 开发人员可以借助我们的“操作指南”完成一些工作!

如果您已决定需要尽快构建新的 AWS 连接器,您可能已经进行了搜索,以了解如何开始您的旅程。您可能已经看到有两种集成方法可用于构建 AWS 连接器 Mendix,即表述性状态转移 (REST) 应用程序编程接口 (API) 或软件开发工具包 (SDK)。如果您没有编程背景,仅仅阅读 SDK 这个词可能会让您不寒而栗。事实上,这个过程并不像人们(包括我在内)想象的那么复杂,而且完全可行。但由于我们 Mendix 开发人员,为什么不使用我们已经熟悉的东西并构建基于 REST API 的 AWS 连接器?你准备好了吗?

以下是我本人提供的分步指南。

构建基于 REST API 的 AWS 连接器

您需要知道的第一件事是,并非所有 AWS 服务和操作都有 API。这意味着,在开始使用基于 REST API 的 AWS 连接器之前,您需要检查所需的服务和操作是否有可用的 API,并找到所需的 HTTP 标头(它们的 x-amz-目标 值)。如果他们没有您需要的服务和操作的 API,那么很遗憾,继续下去的唯一其他方法就是开始使用 SDK 构建连接器。

对于某些服务和操作,可以在相应 AWS 服务的开发人员指南中找到 API(例如, 将签名版本 4 与 Amazon Translate 结合使用 – Amazon Translate)。但是,对于其他人来说,搜索起来比较困难。我发现一个有用的网站是 AnyAPI(any-api.com). 你可以去 搜索 API 区域,搜索您要处理的 AWS 服务的名称,单击它,然后找到具有 API 的服务操作列表及其 x-amz-目标 如果存在的话,则返回该值。

AnyAPI 搜索结果

我们将要实施的来自我们的 构建 AWS 连接器 文章及其相关链接。有关某些主题的更详细说明,您也可以参考该文章。

在此场景中,我们假设 Marketplace 中不存在 Amazon Translate Connector,但它是我们为客户项目所需的连接器。我们已决定构建一个 AWS 连接器以使用其部分操作(具有 API),并将实施 翻译文本 行动。

启动项目

要开始使用连接器,我们首先需要准备正确的环境。

In Mendix Studio Pro,我们将创建一个名为的新模块 AmazonTranslate连接器.

然后安装并配置 AWS 身份验证连接器(版本 3.0.0 或更高版本) 因为它需要通过 Amazon Web 服务进行身份验证。

AmazonTranslate连接器 模块,强加如下所示的文件夹结构。

AmazonTranslateConnector 模块的文件夹结构
在领域模型中添加必要的实体并开始构建

工作环境准备就绪后,就该进一步了解我们想要实现的操作了,尤其是 REST API 需要什么请求以及我们会收到什么响应。

要详细了解我们想要实施的行动,我们可以访问 AWS 文档 (amazon.com).

AWS 文档搜索

我们在那里找到了目前正在使用的 AWS 服务的文档,在我们的例子中,该服务是 Amazon Translate 文档.

来自 AWS 的 Amazon Translate 文档

以下是在开发 AWS 连接器期间有用的两个指南。由于我们正在构建基于 REST API 的连接器,因此我们选择 Amazon Translate API 参考 – Amazon Translate API 参考,然后打开 TranslateText – Amazon Translate API 参考.

TranslateText Amazon Translate API 参考

在此页面上,我们可以找到很多有关我们希望实施的操作的有价值的信息,例如请求和响应语法、它们的参数的详细信息,以及我们可能遇到的常见错误。

在详细了解了我们将要实现的操作之后,我们将首先使用 翻译文本 动作来模拟相应的实体。

自 AWS 身份验证连接器升级到版本 3.0.0 以来,最佳实践是让所有其他 AWS 连接器的请求实体从 AWSAuthentication.AbstractRequest 实体继承。此外,应在关联的 BasicClientConfig 对象中指定超时设置。如果您想在市场上发布连接器,这一点尤其重要。

但在本例中,我们想采用最简单的方法。因此,我们既不使用继承,也不会创建 BasicClientConfig 对象来指定超时设置。
让我们先创建请求实体,并先查看 AWS 文档中的请求正文。方便的是,我们可以根据 TranslateText 操作的语法生成请求实体。

在 JSON 片段 文件夹中,我们创建一个以 AWS 服务命名的 JSON 结构文档,在本例中, JSON_翻译文本.

JSON 结构文档创建

我们打开文档并粘贴在 TranslateText – Amazon Translate API 参考.

然后我们点击 格式因为我们不关心案例中应用的设置和应用的术语,所以我们将删除这些部分,只留下 源语言代码, 目标语言代码翻译文本 点击之前 刷新 以及 OK.

JSON 结构文档的格式化

导入映射 文件夹中,我们创建一个导入映射文档,将其命名为 IMM_翻译文本 并点击 OK.

创建导入映射文档

我们打开 IMM_翻译文本 文档。在 架构源 部分,我们选择 JSON 结构,然后选择 JSON_翻译文本  文档。

选择 JSON_ListLanguages 文档

然后我们点击 展开全部, 选择 选择所有, 接着 OK.

 

Mendix Studio Pro 现在将显示 AWS 服务映射到您的 Mendix 应用程序。在某些情况下,可能会生成无用的实体。通过再次打开导入映射文档并取消选中不必要的实体来删除它们。在这种情况下,由于没有创建不必要的实体,我们将继续。

完成后,我们点击 自动映射. Mendix Studio Pro 将在域模型中创建将 AWS 服务响应映射到的实体。在我们的例子中,导入映射如下所示:

自动映射结果

现在我们转到域模型并更改所创建实体的名称以匹配 TranslateText 操作。我们可以方便地从 API 文档中看到,我们感兴趣的响应中的属性与请求中的属性相同。因此,我们可以简单地复制新创建的 TranslateTextRequest 并重命名它。这两个实体现在应该是这样的:

 

翻译文本请求示例

我们稍后还需要导出 TranslateTextRequest 对象。为了做好准备,我们以与导入映射 IMM_TranslateText 相同的方式创建导出映射 EXM_TranslateText。域模型准备就绪后,我们可以继续创建微流操作。但是,在开始之前,我们将快速添加身份验证所需的常量。
在应用程序设置中,我们更改 AWS 身份验证连接器的常量值。静态和临时两种类型所需的常量列在连接器的 ConnectionDetails 部分中,如下图所示。

 

AWS身份验证菜单截图

现在,我们可以开始处理微流程了。

营运部 文件夹中,我们创建一个名为 POST_v1_翻译文本,根据 Mendix 命名约定。

根据 TranslateText – Amazon Translate API 参考,此操作的请求有三个必需参数: 源语言代码, 目标语言代码文本,这是我们想要翻译的文本。因此,我们为这些参数向微流添加三个输入参数,并创建一个名为 请求体 准备行动请求。

由于我们创建了请求实体,因此我们可以将其用作唯一的输入参数。

然后我们添加 获取临时凭证获取静态凭证 来自的微流 AWS 身份验证模块 获取我们的凭证。在此实现中,我们将使用静态凭证,因此我们添加了 GetStaticCredentials 微流。创建 Credentials 对象所需的所有信息都将从我们在 AWS 身份验证连接器中填写的常量中填充。

现在,我们既有请求,也有 AWS 凭证。但在调用 REST 服务之前,我们需要使用签名版本 4 将身份验证信息添加到请求调用中。我们需要配置微流以获取 SigV4Header 对象,方法是使用 获取 SigV4 标头 操作从 AWS 身份验证 模块。为此,我们首先创建一个名为的新 SigV4Builder 对象 NewSigV4Builder 并填写其成员。请按照最佳实践选择区域:距离您所在位置最近的提供翻译服务的地区。

创建对象屏幕的屏幕截图

接下来,我们创建一个列表 SigV4参数 被调用的对象 标题列表 因为有两个重要的标头需要作为 获取 SigV4 标头 Java 动作。

对于第一个标题,我们创建一个 SigV4参数 对象 内容类型标头 具有以下参数:

  • 主要内容类型
  • 价值应用程序/x-amz-json-1.1

创建 SigV4Parameter 对象列表

对于第二个标题,我们创建一个 SigV4参数 对象 翻译文本操作标头 添加 x-amz-目标 等加工。为 翻译文本 我们在开始处理连接器之前发现的操作。

  • 主要x-amz-目标
  • 价值AWSShineFrontendService_20170701.TranslateText

 

创建对象屏幕的屏幕截图

我们将这两个标题添加到 标题列表 我们已经创建了。

现在,我们可以添加 获取 SigV4 标头 操作到我们的微流并使用我们的凭证, NewSigV4Builder 对象和列表 SigV4参数 对象 标题列表 作为其输入参数。它返回一个 SigV4Headers 目的。

获取 Sigv4 标头屏幕的屏幕截图

在范围内获取 SigV4Headers 对象后,我们希望导出 TranslateTextRequest 以获取 JSON 格式的 RequestBody。为此,请向微流添加“使用映射导出”操作。然后选择 EXM_TranslateText 映射以及 TranslateTextRequest 对象并使用名为“RequestBody”的返回变量。

我们现在可以调用 REST 服务,因为我们拥有所有需要的信息,所以我们向微流添加了一个调用 REST 操作。 地点端点 URL 返回的属性 SigV4标头; 超时 默认设置为 300ms,可以更改为您喜欢的任何整数值;并且 请求请求体 微流的字符串变量。我们添加 内容类型标头, 翻译文本操作标头,以及返回的 SigV4Headers 对象为 自定义 HTTP 标头 对 REST 调用也是如此。

向微流添加调用 REST 操作

我们绘制了 响应 使用 IMM_翻译文本 文档,返回一个 翻译文本响应 目的。

我们完成的微流程如下所示(为了更加清晰,SigV4Headers 的生成已合并到子流程中):

 

翻译文本请求屏幕截图

我们完成了!您已创建了一个新的 Amazon Translate Connector,它可以将文本翻译成另一种语言!不要忘记公开此微流,以便轻松重复使用。

选择你的语言