2016-07-07 2 views
2

Cognito 사용자 풀과 Cognito Identity 풀이 있고 응용 프로그램 관련 데이터가있는 경우이를 함께 결합하는 방법에 대한 모범 사례가 있습니까?Cognito 사용자 풀 + Cognito Identity 풀 사용자와 응용 프로그램 데이터를 결합하는 방법은 무엇입니까?

예를 들어 DynamoDB에 응용 프로그램 데이터가 저장되어 있다고 가정합니다. 사용자가 보낸 SMS/문자 메시지 일 수 있습니다.

{ 
    "account_id": "a-uuid-for-the-account", 
    "message_body": "Hello world", 
    "message_subject": "Greetings!", 
    "date_sent": "...", 
    "message_id": "..." 
} 

내가 다음 사용자 풀 또는 신원 수영장이 가입시겠습니까 : (DB에 저장된) 또한 문자 메시지를 랬은 다음과 같습니다? 예를 들어, 별도의 계정 테이블이 유사한 기록이 있습니다

{ 
    "account_id": "a-uuid-for-the-account", 
    "user_pool_username": "MrBloggs" 
    "addresses": [ "123 Springfield Road", "Blahsville" ] 
} 

난 당신이 다른 실향민을 소개 할 수 있으며이 후 실패로, 사용자 풀에 가입 단점을 볼 수 있습니다. 아마도 ID 풀 'ID'의 ID를 사용하겠습니까?

마지막으로,이 질문을 통해 사용자 풀 사용자 (사용자 풀 자체)에 대해 저장할 수있는 '특성'의 요점이 궁금합니다. 위에 사용 된 우편 주소 예제를 사용하여 사용자 풀에이 주소가 저장되어 있다면 다른 IDP에 사용자 주소를 별도로 저장해야합니다. 즉, 노력을 복제하고 소프트웨어를 복잡하게 만드는 것입니다.

감사합니다.

답변

4

하나의 옵션으로 Cognito 사용자 풀을 Cognito ID 풀의 공급자로 사용하면 Dynamo에 액세스하기위한 자격 증명을 얻을 수 있습니다.

여러 공급 업체를 사용하는 경우 사용자가 공개적으로 만 로그인 할 수 있으므로 Dynamo에서 Cognito ID 풀의 생성 된 ID (ID ID)를 키로 사용하는 것이 가장 바람직합니다. 공급자가 아닌 사용자 풀

이 ID는 로그인 연결 후 상수입니다. 한 가지 예외는 있습니다. 두 개의 인증 된 ID가 ID 풀에서 병합되면, 결과 ID ID는 둘 중 하나 일 수 있습니다. Dynamo는 제대로 작동하기 때문에 병합 이벤트를 잡은 다음 이전 키의 Dynamo에서 모든 항목을 가져 와서 삭제하고 새 키로 다시 삽입해야합니다. 이것은 가장 부드러운 시나리오는 아니지만이 사례를 좀 더 쉽게 사용하기위한 기능 요청으로 사용하겠습니다.

사용자에 대한 데이터 저장은 실제로 Cognito 연합 ID (ID 풀)를 염두에두고 사용자 풀만 염두에두고 설계되었습니다. 사용자 풀이 설명 된 유스 케이스가 아닌 독립 실행 형 엔티티 일 때 가장 유용합니다.

+0

DynamoDB 테이블에서 Cognito ID 풀의 생성 된 ID (ID ID)를 기본 키로 사용할 수 있습니까? 권장 동작입니까? – Domsware

+0

인증 된 ID의 ID ID가 변경되는 유일한 시간은 ID 병합의 경우입니다. 신원 a가 사용자 풀 인증을 가지고 있고 신원 b가 페이스 북을 가지고 있다면, 신원 a에게 신원 a를 가진 사용자 풀 토큰 및 신원 b의 페이스 북 토큰을 부여하면 병합이 시작됩니다. 결과 ID는 a 또는 b 일 수 있으며 임의적입니다. –

+1

그래서 병합 할 수 있다면 변경 될 수 있습니다. 그렇지 않으면 변경 될 수 있습니다. 사용자 풀을 사용하는 경우 하위 필드는 해당 사용자의 고유 식별자이며 사용할 수도 있습니다. –