2017-10-07 3 views
1

우리는 우리가 사용하고자하는 멀티 테넌트 응용 프로그램을 실현하려는 :Cognito 사용자

  • AWS Cognito 우리의 사용자 풀 우리의 대부분의 데이터에 대한
  • AWS DynamoDB의로를

pooled approach을 따르므로 DynamoDB 데이터의 기본 키는 tenantID입니다. 또한 모든 사용자는 하나의인지 사용자 풀에 풀링됩니다.

우리의 응용 프로그램은 응용 프로그램 내에서 사용자를 표시해야하므로 사용자를 쿼리해야합니다.

AWS Cognito 풀을 직접 쿼리하고 세입자의 모든 사용자를 표시하고 싶습니다. 따라서인지 사용자 인 경우 custom:tenantID에 속성을 추가하겠습니다.

그러나 문제가 있습니다. 사용자 지정 특성은 not searchable/filterable입니다. 따라서 다른 모든 데이터 테이블을 사용했을 때의 tenantID를 기반으로 쿼리를 수행 할 수 없습니다.

필자는 세입자의 이름과 같은 검색 가능한 데이터 필드 중 하나를 "잘못 사용"한 것으로 생각했지만 잘못된 생각 인 것 같습니다.

나는 사용자를 임차인과 연결할 목적으로만 dynamoDB 테이블을 생성하는 것을 피하고 싶습니다. 이 문제를 해결하기위한 접근 방법은 무엇입니까?

답변

2

멀티 테넌트 애플리케이션에 AWS Cognito를 사용하는 경우 Cognito를 인증 용으로 만 사용하십시오.

당신은 또한 사용자 & 등을 검색하는 데 사용할 수있는 DynamoDB의 테이블에 저장된 각각의 임차인에 대한 액세스 제어 목록 (권한)을 가진 사용자 테이블을 만들 수 있습니다

당신이 세입자라는 사용자 지정 속성을 사용하는 경우 또는 거주자 식별자를 Cognito에 저장하면 검색 제한 외에도 사용자를 단일 거주자로 제한 할 수 있습니다.

+0

사용자의 ID로 사용할 속성을 추천 할 수 있습니까? 이메일 주소 ? Cognito ID? 당신이 제안한 것과 같은 해결책에 대한 실제 사례를 알고 있습니까? – pfried

+0

Cognito Identity Pool을 사용하려는 경우 CognitoID (Cognito 사용자 ID : Cognito Userpools)를 사용하여 전자 메일 주소를 사용할 수 있습니다 (로컬 및 연합 모두에 대한 사용자 신원 정보가 필수 인 전자 메일 인 경우). 찾을 수 없습니다. 우려를 직접적으로 다루는 백서이지만 멀티 테넌트 응용 프로그램의 경우 전체적으로 다음 두 개의 백서를 참조하십시오. https://d0.awsstatic.com/whitepapers/Multi_Tenant_SaaS_Storage_Strategies.pdf https://d0.awsstatic.com/whitepapers/ saas-solutions-on-aws-final.pdf – Ashan

관련 문제