2

我正在将 AppSync 与 Aurora/RDS 一起使用。我希望在某些情况下,当查询/突变被发送到数据库时,然后,我想发送电子邮件和推送通知,但这应该与查询/突变分离,也就是说,它确实不管它是否失败或有效。目前我看到了所有这些选项:你能告诉我应该使用哪一个吗?

  1. 创建一个调用 lambda 函数的查询,该函数发送推送/电子邮件,并在实际查询/变异完成后从客户端调用它。我不喜欢这样,因为逻辑在客户端而不是服务器中。似乎很容易实现,我想从客户端的角度来看,很容易忽略第二次操作的结果。

  2. 上一个的变种。将这两个操作打包在一个网络请求中。使用 GraphQL,这很容易,但我不希望客户端等待第二次操作。(是否可以创建立即返回的 lambda 函数,就像其他函数的触发器一样?)

  3. 将我的查询/突变直接附加到 lambda 函数而不是 RDS。然后,这些 lambda 函数调用其他 lambda 函数进行通知。似乎更难编程,但对微服务架构更友好。可能这是最好的,不确定。

  4. 使用 SQL 触发器并从这些触发器调用 lambda 函数。我不知道这是否可能。正在研究...

  5. 使用管道解析器。第一个是查询/变异,第二个是发送推送/电子邮件的 lambda 函数。我会说这是一个糟糕的选择,因为我不希望客户端等待第二个操作或在第二个解析器失败时管理逻辑。

  6. Amazon RDS 事件:似乎可以将 lambda 函数附加到特定的 AWS RDS 事件。 https://docs.aws.amazon.com/lambda/latest/dg/services-rds.html似乎是关于创建数据库,恢复......等等。我没有看到像创建一行、更新一行这样的东西……所以,除非我错了,否则我会丢弃它。

  7. 使用 Aurora MySQL 存储过程调用 Lambda 函数 CALL mysql.lambda_async ( lambda_function_ARN,lambda_function_input ) https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html “例如,您可能想要在将行插入数据库中的特定表时使用 Amazon Simple Notification Service (Amazon SNS) 发送通知。” 这正是我正在寻找的。我喜欢这个想法,但我不知道 Aurora Serverless 是否可以实现。正在研究......似乎在使用无服务器时是不可能的: https ://www.reddit.com/r/aws/comments/a9szid/aurora_serverless_call_lambda/

  8. 使用阶跃函数:不知道如何使用它。

  9. 不知何故,将此 lambda 通知函数附加到 GraphQL/AppSync 而不是数据库,但我想这不是一个好主意,因为我需要将数据库读取到推送通知令牌和将接收通知的用户的电子邮件.

你推荐我哪种方法?我正在使用放大 cli。非常感谢。

4

1 回答 1

1

目前 AWS AppSync 只能在应用程序处于活动状态时发送通知。我们正在研究非活动案例的实施。

如果您想在应用未激活时发送通知,您可以使用 iOS 上的推送通知:静默推送/交互式推送或 Android 上的推送通知。

如果您想在应用程序未激活时通过电话发送电子邮件、语音/短信或通知,您可以与Amazon Pinpiont集成。

于 2020-01-02T21:10:51.220 回答