无服务器 - 服务之间通信的选项?

sam*_*cos 2 amazon-web-services aws-lambda aws-api-gateway serverless-framework

我有一些不同的服务(由无服务器框架生成)需要相互通信。数据敏感,需要身份验证。

我当前的策略是为每个服务创建一个 api 密钥,使用 json web 令牌在服务之间进行通信,如下所示的令牌。

fM61kaav8l3y_aLC/3ZZF7nlQGyYJsZVpLLiux5d84UnAoHOqLPu4dw3W7MiGwPiyN
Run Code Online (Sandbox Code Playgroud)

服务之间通信还有哪些其他选项?这种方法有什么缺点吗?重申一下,请求需要经过身份验证并适当处理敏感数据。

And*_*ndi 5

您需要同步还是异步通信?一个好的方法是使用事件,因为 aws-lambda 被设计为基于事件的系统。因此,您可以使用SNSSQS来解耦您的服务。

如果您只想从一项服务调用另一项服务,您可以通过 aws-sdk 直接调用 lambda 函数,请参阅文档。因此,您不会添加 API 网关端点,并且您的 lambda 将保持私有。

为了更好地回答您的问题,您应该简要概述您的应用程序以及您将进行的服务间调用的示例。

  • @samcorcos 听起来你想扭转这种依赖性。您不希望由于电子邮件服务中断而导致电子邮件无法发送。在这种情况下你希望它被推迟。因此,一种解决方案可能是将 SendEmail 命令放在 SQS 上,并让 lambda 监听这些命令。这样,如果 lambda 离线,要发送的电子邮件就会堆积起来,并在 lambda 再次在线时发送。 (3认同)