【问题标题】:AWS API Gateway for interprocess communication用于进程间通信的 AWS API Gateway
【发布时间】:2017-07-02 18:19:41
【问题描述】:

我正在学习微服务架构并整理一些概念证明,但我碰壁了。

我已经使用 Lambda 和公共 API 网关创建了一个无服务器的用户服务,该服务托管在亚马逊 AWS 上,允许您查询用户数据库。这很简单,看起来像:

api/users?email=myemail@gmail.com

此 API 具有与之关联的授权,因为允许某些用户了解其他用户,而有些则不允许。因此,对于某些用户,这将返回 404(或者可能是 403),而对于其他用户,他们会得到 200 和结果。

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

所以我的问题:

我是否应该有一个单独的、私有的 API 用于返回所有信息的服务间通信,或者我是否应该有一个魔术授权密钥发送到 api,它将请求者标识为内部服务,以便显示一切。

补充问题:

如果我确实将公共 API 与神奇的身份验证代码一起使用,我应该只使用客户端服务将使用的相同公共 api url 调用 fetch,还是应该调用一些内部 amazon url?

【问题讨论】:

    标签: amazon-web-services aws-lambda microservices aws-api-gateway


    【解决方案1】:

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

    1. 您确定需要单独的身份验证和用户服务并且不能将其构建为一个单元吗?这会更有效率——一般来说,人们会尽量避免从 lambda 函数调用 lambda 函数,因为它速度较慢并且难以测试/调试。

    2. 如果您需要在 lambda 之间进行通信,您可以直接调用一个,而不是使用您正在使用的语言的 SDK 通过 api 网关。例如 javascript:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property 这样您就可以使用角色和策略来控制访问。

    3. 不要重新发明轮子。您看过 AWS Cognito 吗? http://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多