【问题标题】:How to make relationship between Amazon Cognito and other microservice?如何在 Amazon Cognito 和其他微服务之间建立关系?
【发布时间】:2021-04-01 07:35:33
【问题描述】:

我是 AWS 新手,正在使用微服务架构制作一些大型应用程序。我正在使用 Cognito 用户 + 身份池进行授权。组织有分支机构,分支机构有职位,例如项目经理、财务经理,并且用户属于这些分支机构和职位之一。用户存储在 Cognito 用户池中。我有用于组织微服务的 EC2 和 RDS,我将使用 AWS API 网关和 IAM 基于角色的访问控制在微服务之间进行通信,但是如何在组织和用户微服务之间建立关系?

我打算使用 Cognito 自定义属性,例如 custom:branch=branchId,但如果我需要获取此分支的用户,那将是不可能的。来自 Cognito 文档:

自定义属性不可搜索。

对于关系 cognito_user_id | branch_id,我应该使用 DynamoDB 表,还是有什么更好的方法?

如何获取单个分支用户,如何获取单个组织用户以及在哪里编写此代码? AWS lambda 与 DynamoDB ?

【问题讨论】:

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


    【解决方案1】:

    如果您在组织微服务中没有限制在 RDS 上添加表,我会说不要使用 dynamodb,因为它是一个额外的组件,并且您的系统比 NoSQL 更好地支持关系。此外,dynamodb 的另一个先决条件是必须了解数据访问模式。

    创建具有一对多关系的组织和分支表作为单独的微服务。用户将被分配到分支。

    您应该将这些共享逻辑作为服务写入 lambda,并且该 lambda 将被组织和用户服务调用。我知道这将花费额外的集成工作。但是,这比添加 dynamodb 之类的新服务要好得多。

    【讨论】:

    • 你是什么意思用户将被分配到分支?正如你所说,我与组织和分支机构有一对多的关系,但是如何将用户分配给分支机构? 1.在Cognito中添加一个自定义属性并写入branchId 2.在组织RDS中创建user_branch表?
    猜你喜欢
    • 2020-09-02
    • 2015-03-03
    • 2019-07-04
    • 1970-01-01
    • 2018-02-21
    • 2020-08-11
    • 1970-01-01
    • 2017-11-09
    • 2018-02-14
    相关资源
    最近更新 更多