Amazon web services 用于进程间通信的AWS API网关

Amazon web services 用于进程间通信的AWS API网关,amazon-web-services,aws-lambda,microservices,aws-api-gateway,Amazon Web Services,Aws Lambda,Microservices,Aws Api Gateway,我正在学习微服务体系结构,并整理一些概念证明,但我遇到了困难 我制作了一个用户服务,它是无服务器的,托管在AmazonAWS上,使用Lambda和一个公共API网关,允许您查询用户数据库。它非常简单,看起来就像: api/users?email=myemail@gmail.com 此API具有与之关联的授权,因为允许某些用户了解其他用户,而不允许某些用户了解其他用户。因此,对于一些用户,这可能会返回404或403,而对于其他用户,他们会得到200和结果 现在我来编写身份验证服务,它接受电子邮件

我正在学习微服务体系结构,并整理一些概念证明,但我遇到了困难

我制作了一个用户服务,它是无服务器的,托管在AmazonAWS上,使用Lambda和一个公共API网关,允许您查询用户数据库。它非常简单,看起来就像:

api/users?email=myemail@gmail.com
此API具有与之关联的授权,因为允许某些用户了解其他用户,而不允许某些用户了解其他用户。因此,对于一些用户,这可能会返回404或403,而对于其他用户,他们会得到200和结果

现在我来编写身份验证服务,它接受电子邮件地址和密码并返回令牌。我应该如何从用户服务获取用户数据?我很想调用RESTAPI,但它有授权,因为它是公共的。此外,公共API不会返回我需要的哈希密码字段

因此,我的问题是:

我应该为服务间通信提供一个单独的、私有的API,用于返回所有信息,还是应该向API发送一个神奇的授权密钥,用于将请求者标识为内部服务并显示所有内容

补充问题:


如果我确实使用了带有魔法身份验证代码的公共API,那么我是应该使用客户端服务将使用的相同公共API url调用fetch,还是应该调用一些内部amazon url?

我不确定这个问题是否有一个好的答案。但这里有一些想法:

是否确实需要单独的身份验证和用户服务,而不能将其作为一个单元构建?这将更加有效-一般来说,人们会尽量避免从lambda函数调用lambda函数,因为它速度较慢,并且可能很难测试/调试

如果需要在lambda之间进行通信,可以直接调用一个,而不是使用所用语言的SDK通过api网关。例如javascript:通过这种方式,您可以使用角色和策略控制访问

不要重新发明轮子。你看过AWS Cognito吗