微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 AWS Server-less 应用程序中,电子邮件微服务的架构应该是什么样的

如何解决在 AWS Server-less 应用程序中,电子邮件微服务的架构应该是什么样的

要求:

根据隐身存储的用户语言选择发送不同语言的电子邮件

使用不同的模板发送电子邮件

记录电子邮件是否发送/发送失败并向应用程序发送推送通知通知管理员

例如:

新客户入职

创建新用户

创建报告

这个想法是,CreateCustomer、createuser、CreateReports API 基本上会将事件发送到 EMAIL 服务应该订阅的 SNS 主题并发送电子邮件。对于能够根据事件使用不同模板并根据用户偏好以语言发送电子邮件的电子邮件服务,高级架构会是什么样子。

解决方法

这是一个多服务用例。也就是说,您可以使用各种 AWS API 来执行此用例。从高层次来看:

  • 您可以使用 Cognito API 来获取用户信息。如果您将用户信息存储在 Amazon DynamoDB 等其他地方,则使用 DynamoDB API 查找用户。如果您将用户信息存储在 AWS RDS 实例中,请使用适用于 RDS 的 API(如 JDBC API)查找用户信息。
  • 您可以使用翻译服务将电子邮件正文转换为不同的语言
  • 您可以使用 SNS API 执行任何 SNS 操作。
  • 您可以使用 SES 服务发送电子邮件。使用 SES,您可以创建 基于 HTML 的电子邮件可满足您的业务需求。

现在要使这一切成为无服务器,请考虑将其不同部分编写为 Lambda 函数。例如,查找用户详细信息可能是 1 个 Lambda 函数,翻译和发送电子邮件可能是另一个。此用例的其他部分可以作为额外的 Lambda 函数来实现。

拥有各种 Lambda 函数后,请使用 AWS Step Functions 创建无服务器工作流程。 Step Functions 允许您将 Lambda 函数组合到一个工作流中。更进一步,您可以创建另一个 Lambda 函数,负责使用 Step Functions API 调用此工作流。

然后您可以安排 Lambda 函数使用 CRON 表达式调用工作流。因此理论上,您可以根据 CRON 表达式调用每个工作日调用此 Workflows 的 Lambda 函数。然后工作流会定期执行您的用例。

这就是您在无服务器工作流程中组合不同 AWS 解决方案时开发解决方案的灵活性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。