将 AppSync 连接到现有 RDS 以更改移动应用程序状态

Posted

技术标签:

【中文标题】将 AppSync 连接到现有 RDS 以更改移动应用程序状态【英文标题】:Connecting AppSync to existing RDS for Mobile Application state changes 【发布时间】:2020-01-11 16:56:31 【问题描述】:

我有一个移动应用程序(原生 iosandroid),我希望它能够接收有关是否在 UI 中显示某些内容的实时状态信息。

我们当前的后端运行 Sails 并有一个 mysql 数据库。 Sails 部署在 EC2 上,MySQL 数据库使用 AWS RDS。我一直在阅读有关 AWS AppSync 的文章,并相信这是将实时状态信息从 MySQL 数据库推送到前端的可行解决方案。

我的问题是,是否可以连接 AppSync 以订阅 RDS 实例,如果可以,该解决方案是否需要 Lambda 函数来对数据库运行实际查询?整个概念对我来说还是个新概念,而且今天是我第一次听说 GraphQL,所以关于 AppSync 如何工作以及如何实现它的任何和所有信息都会很棒!

目前我相信我会创建一个与我需要的状态信息相匹配的 GraphQL Schema,AppSync 会公开一个 API 供我使用他们的移动 SDK 订阅?,我可以使用我的 Sails后端将 GraphQL 突变发送到 AppSync,然后(以某种方式?)更新 mySQL 数据库?这是一个适当的流程吗?有人可以在这里填补空白吗:)

【问题讨论】:

【参考方案1】:

您是否尝试直接更新数据库/绕过 AppSync?

如果是,您提到的 lambda 解决方案可能有用。 如果没有,通过 AppSync 设置对数据库的订阅和突变就足够了。

【讨论】:

如果我要绕过 AppSync 并直接通过 Sails 后端更新数据库,AppSync 是否仍然能够订阅并将该数据推送到我的应用程序?或者通过 AppSync 的突变是更新我的 AppSync 订阅的必要触发器? 另外,如果是,我如何设置订阅和突变以连接到 MySQL RDS?这有可能吗? 它只能通过 DATA API for aurora serverless docs.aws.amazon.com/appsync/latest/devguide/… 或通过 VPC 中的 lambda 工作。 有一个通过 lambda 进行设置的示例,它与 github 上的 RDS 实例在同一 VPC 中运行,您可以参考(如果是相同的用例):github.com/aws-samples/aws-appsync-rds-aurora-sample 啊,非常感谢您的参考!所以(如果我错了,请纠正我)但我的理解:我必须同时使用 Mutations 和 Subscriptions(如果我使用 Sails 后端直接更新数据库,则不能使用订阅),并且使用 Mutations & Subscriptions,我必须将它们添加到我的 MySQL通过 Lambda 或 Aurora 建立数据库。这是正确的吗?另外,Lambda 与 Aurora 的优缺点是什么?

以上是关于将 AppSync 连接到现有 RDS 以更改移动应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章

无法将 MySQL Workbench 连接到 RDS 实例

无法将MySQL Workbench连接到RDS实例

如何使用 IAM Auth 将 python websocket 连接到 AppSync 订阅?

通过 MYSQL 工作台连接到 RDS 实例,无需静态 IP

堡垒主机连接到 rds 所需的忘记的密钥对

至少一个安全组必须打开所有入口端口。 AWS Glue 连接到 RDS