Amazon Cognito 시작하기

Q: Amazon Cognito란 무엇입니까?
Amazon Cognito를 사용하면 모바일과 웹 앱에 사용자 가입 및 인증 기능을 손쉽게 추가할 수 있습니다. Amazon Cognito는 외부 자격 증명 공급자를 통해 사용자를 인증할 수 있게 지원하며, AWS에 있는 앱의 백엔드 리소스 또는 Amazon API Gateway 뒤에 있는 모든 서비스에 액세스할 수 있는 임시 보안 자격 증명을 제공합니다. Amazon Cognito는 SAML 또는 OpenID Connect를 지원하는 외부 자격 증명 공급자 및 소셜 자격 증명 공급자(Facebook, Twitter, Amazon 등)와 연동되며, 자체 자격 증명 공급자와 통합할 수도 있습니다.

또한, Amazon Cognito를 사용하면 사용자의 디바이스 간에 데이터를 동기화할 수 있으므로 사용자가 디바이스를 바꿔가며 사용하거나 새로운 디바이스로 업그레이드해도 앱 경험이 일관되게 유지됩니다. 앱에서 사용자의 디바이스에 로컬로 데이터를 저장할 수 있으므로 디바이스가 오프라인일 때도 애플리케이션이 작동하며, 디바이스가 다시 온라인으로 전환되면 데이터가 자동으로 동기화됩니다.

Amazon Cognito에서는 사용자 관리, 인증, 플랫폼 및 디바이스 간 동기화를 처리하는 솔루션의 구축, 보안 및 확장에 대해 걱정하는 대신 뛰어난 앱 경험을 만드는 데 집중할 수 있습니다.

Q: Amazon Cognito는 누가 사용하면 좋습니까?
Amazon Cognito는 모바일과 웹 앱에 사용자 관리 및 동기화 기능을 추가하려는 개발자를 위해 설계되었습니다. 개발자는 Cognito Identity를 사용하여 앱에 가입 및 로그인 기능을 추가하고 사용자가 앱의 리소스에 안전하게 액세스하도록 지원할 수 있습니다. 또한, Cognito를 사용하면 개발자가 디바이스, 플랫폼 및 애플리케이션 간에 데이터를 동기화할 수 있습니다.

Q: Amazon Cognito를 시작하려면 어떻게 해야 합니까?
AWS 콘솔을 사용하여 간편하게 시작할 수 있습니다. Amazon Web Services 계정이 없는 경우 콘솔에 로그인하기 위해서는 먼저 계정을 생성해야 합니다. 사용자 관리용 사용자 풀 또는 연동 자격 증명이나 동기화 작업용 자격 증명 풀을 생성한 후, AWS Mobile SDK를 다운로드하여 앱과 통합할 수 있습니다. 또는 SDK를 사용하는 대신 직접 Cognito 서버 측 API를 호출할 수도 있습니다. 자세한 내용은 Developer Guide를 참조하십시오.

Q: Amazon Cognito는 서버 측 API를 공개합니까?
예. Cognito는 서버 측 API를 공개합니다. 이러한 API를 직접 호출하여 Cognito에 대한 사용자 정의 인터페이스를 생성할 수 있습니다. 서버 측 API는 Developer Guide에 설명되어 있습니다.

Q: Amazon Cognito는 무슨 플랫폼을 지원합니까?
Cognito에서는 iOS, Android, Unity 및 Kindle Fire를 지원하면, 선택 사항인 AWS Mobile SDK에 포함되어 있습니다. Cognito는 JavaScript용 AWS SDK에서도 사용할 수 있습니다. Cognito 사용자 풀은 현재 iOS 및 Android용 AWS Mobile SDK와 Cognito용 JavaScript AWS SDK에서 지원됩니다. SDK를 다운로드하려면 리소스 페이지로 이동하십시오.

Q: AWS Mobile SDK를 사용해야 합니까?
아니요. Cognito는 웹 서비스처럼 제어 및 데이터 API를 공개합니다. 서버 측 API를 직접 호출하여 자체 클라이언트 라이브러리를 구현할 수 있습니다.

 

Q: 자체 자격 증명 공급자를 사용하여 사용자 가입 및 로그인 기능을 지원할 수 있습니까?

예. Cognito Identity를 사용하면 앱에 가입 및 로그인 기능을 손쉽고 안전하게 추가할 수 있습니다 사용자는 이메일, 전화번호 또는 사용자 이름을 사용하여 가입 및 로그인할 수 있습니다. 또한, 이메일 인증, 전화번호 인증, 멀티 팩터 인증 등과 같은 강화된 보안 기능을 구현할 수 있습니다. Cognito Identity를 사용하면, AWS Lambda를 통해 사기 탐지와 사용자 검증을 위해 사용자 등록에 앱별 로직을 추가하는 등의 방법으로 워크플로를 사용자 정의할 수 있습니다. 자세한 내용은 설명서를 참조하십시오.

Q: User Pool이란 무엇입니까?

User Pool이란 웹과 모바일 앱용으로 구성할 수 있는 사용자 디렉터리입니다. User Pool은 사용자의 프로필 속성을 안전하게 저장합니다. AWS 콘솔, AWS CLI 또는 AWS SDK를 사용하여 User Pool을 생성 및 관리할 수 있습니다.

Q: Cognito Identity에서 지원하는 사용자 프로필 정보는 무엇입니까?

개발자는 표준 OpenID Connect 기반 사용자 프로필 속성(사용자 이름, 전화번호, 주소, 시간대 등)을 사용하거나, 앱별 사용자 속성을 추가하도록 사용자 정의할 수 있습니다.

Q: 내 애플리케이션 사용자가 이메일 주소나 전화번호로 가입 또는 로그인하도록 할 수 있습니까?

예. 별칭 기능을 사용하여 사용자가 이메일 주소와 암호 또는 전화번호와 암호로 가입하거나 로그인하도록 할 수 있습니다. 자세히 알아보려면 설명서를 참조하십시오.

Q: 암호 정책을 설정할 수 있습니까?

예. User Pool을 설정하거나 구성할 때, 암호 강도와 문자 유형 요구 사항과 같은 암호 정책을 설정할 수 있습니다.

Q: 애플리케이션 사용자의 이메일 주소와 전화번호를 인증할 수 있습니까?

예. Cognito Identity에서는 사용자에게 애플리케이션에 대한 액세스를 제공하기 전에 사용자 이메일 주소와 전화번호를 먼저 인증하도록 할 수 있습니다. 가입 진행 중에 인증 코드가 사용자의 전화번호 또는 이메일 주소로 전송되며, 사용자가 인증 코드를 입력해야 가입 및 확인이 완료됩니다.

Q: Cognito Identity는 SMS 기반 멀티 팩터 인증(MFA)을 지원합니까?

예. 애플리케이션의 최종 사용자가 SMA 기반 MFA을 통해 로그인하도록 할 수 있습니다. SMA 기반 MFA가 활성화되면, 사용자에게 암호(첫 번째 팩터 – 고객이 알고 있는 것)를 입력하라는 메시지가 뜨고, 그런 다음 휴대전화에서 SMS를 통해서만 수신할 수 있는 보안 코드(두 번째 팩터 – 고객이 갖고 있는 것)를 입력하라는 메시지가 뜹니다.

Q: 사용자 가입 및 로그인 워크플로를 사용자 정의할 수 있습니까?

예. AWS Lambda를 사용하여 사용자 가입 및 로그인 흐름에 앱별 로직을 추가함으로써 가입 및 로그인을 사용자 정의할 수 있습니다. 예를 들어, 사기를 식별하거나 사용자 데이터에 추가 검증을 수행하도록 AWS Lambda 함수를 생성할 수 있습니다. 등록 전, 확인 후, 인증 전, 문제를 사용자 정의하기 위한 인증 동안, 인증 후에 개발자가 제공한 Lambda 함수를 트리거할 수 있습니다. 또한, Lambda 함수를 사용하여 이메일 또는 전화번호 인증과 멀티 팩터 인증의 일부로 전송되는 메시지를 사용자 정의할 수 있습니다.

Q: Cognito 사용자 풀의 내 애플리케이션 사용자와 연결된 디바이스를 기억할 수 있습니까?

예. 애플리케이션에 액세스하는 데 사용된 디바이스를 기억하도록 선택할 수 있으며 기억한 이러한 디바이스를 Cognito 사용자 풀의 내 애플리케이션 사용자와 연결할 수 있습니다. 또한, 멀티 팩터 인증을 설정할 때 기억한 디바이스에서는 사용자에게 두 번째 요소를 묻지 않도록 선택할 수 있습니다.

Q: 기존 사용자를 Amazon Cognito 사용자 풀로 마이그레이션하려면 어떻게 해야 합니까

AWS의 가져오기 도구를 사용하여 기존 사용자를 Amazon Cognito 사용자 풀로 마이그레이션할 수 있습니다. .csv 파일에서 사용자 속성 값을 가져오게 되며 콘솔, API 또는 CLI를 통해 업로드할 수 있습니다. 가져온 사용자가 처음 로그인할 때 해당 사용자는 계정을 확인하고 이메일이나 휴대전화로 전송된 코드를 통해 새로운 암호를 생성하게 됩니다. 가져오기 도구는 추가 비용 없이 사용할 수 있습니다. 자세한 내용은 가져오기 도구 설명서를 참조하시기 바랍니다.

가져오기 도구는 암호는 마이그레이션하지 않습니다. 사용자의 현재 암호를 유지하려는 경우 이전 기간 동안 사용자가 앱에 로그인할 때 사용자를 한 명씩 마이그레이션하는 다른 접근 방식을 고려해보시기 바랍니다. 이 접근 방식에서는 앱이 먼저 Cognito 사용자 풀을 사용하여 사용자를 로그인키시려고 시도합니다. Cognito 사용자 풀에 사용자가 없는 경우 앱은 기존 자격 증명 시스템을 사용해 사용자를 로그인시키고 이때 사용된 사용자 이름과 암호를 임시 보관합니다. 사용자가 기존 자격 증명 시스템을 통해 성공적으로 로그인한 후에 앱은 같은 사용자 이름과 암호를 사용하여 Cognito 사용자 풀에 사용자를 생성합니다. 이 접근 방식을 사용하기 위해서는 이전 기간 동안 기존 자격 증명 시스템을 유지해야 하며, 전환 기간이 종료되면 가져오기 도구를 사용하여 나머지 사용자를 가져올 수 있습니다(암호 없이). 

Q: Cognito Identity를 사용하여 자격 증명을 연동하고 AWS 리소스에 대한 액세스를 보안할 수 있습니까?
예. Cognito Identity는 외부 자격 증명 공급자를 통해 사용자를 인증할 수 있게 지원하며, AWS에 있는 앱의 백엔드 리소스 또는 Amazon API Gateway 뒤에 있는 모든 서비스에 액세스할 수 있는 임시 보안 자격 증명을 제공합니다. Amazon Cognito는 SAML 또는 OpenID Connect를 지원하는 외부 자격 증명 공급자 및 소셜 자격 증명 공급자(Facebook, Twitter, Amazon 등)와 연동되며, 자체 자격 증명 공급자와 통합할 수도 있습니다.

Q: Amazon Cognito Identity와 함께 이용할 수 있는 퍼블릭 자격 증명 공급자는 무엇입니까?
Amazon, Facebook, Twitter, Digits, Google 및 모든 OpenID Connect 호환 자격 증명 공급자를 사용할 수 있습니다.

Q: 자격 증명 풀이란 무엇입니까?
자격 증명 풀은 Cognito Identity가 앱의 연동 자격 증명을 정리하는 데 사용하는 컨테이너입니다. 자격 증명 풀은 소셜 자격 증명 공급자의 연동 자격 증명을 고유한 사용자별 식별자와 연결합니다. 자격 증명 풀은 어떤 사용자 프로필도 저장하지 않습니다. 자격 증명 풀은 1개 이상의 앱과 연결할 수 있습니다. 두 가지 앱에 대해 서로 다른 두 가지 자격 증명 풀을 사용하는 경우 동일한 최종 사용자는 각 자격 증명 풀에서 서로 다른 고유 식별자를 가집니다.

Q: 퍼블릭 자격 증명 공급자를 사용한 로그인 흐름은 어떻게 이루어집니까?
모바일 앱에서는 자격 증명 공급자(IdP)를 사용해 인증할 때는 공급자의 SDK를 사용합니다. 최종 사용자가 IdP를 통해 인증을 받으면, IdP에서 반환된 OAuth 또는 OpenID Connect 토큰이나 SAML 삽입이 앱을 거쳐 Cognito Identity로 전달됩니다. 그러면 해당 사용자에 대한 새로운 Cognito ID와 권한이 제한된 임시 AWS 자격 증명 세트가 반환됩니다.

Q: 사용자를 직접 등록하고 인증할 수 있습니까?
Cognito Identity는 기존 인증 시스템과 통합될 수 있습니다. 간단한 API 호출을 사용하면 사용자에 대한 자체 고유 식별자를 토대로 최종 사용자의 Cognito ID를 가져올 수 있습니다. Cognito Identity에서 제공하는 Cognito ID와 OpenID 토큰을 가져오면, Cognito Identity 클라이언트 SDK를 사용하여 AWS 리소스에 액세스하고 사용자 데이터를 동기화할 수 있습니다. Cognito Identity는 모바일과 웹 앱에 사용자 가입 및 로그인 기능을 손쉽게 구현하게 해주는 완전관리형 자격 증명 공급자입니다.

Q: Cognito Identity는 권한을 제어하고 AWS 서비스에 안전하게 액세스하도록 어떻게 지원합니까?
Cognito Identity는 AWS 리소스에 액세스할 수 있도록 권한이 제한된 임시 자격 증명 세트를 사용자에게 지정합니다. 따라서 AWS 계정 자격 증명을 사용할 필요가 없습니다. 각 사용자의 권한은 여러분이 생성한 AWS IAM 역할을 통해 제어합니다. 사용자별로 IAM 역할을 선택하도록 규칙을 정의하거나, Cognito 사용자 풀의 그룹을 사용하고 있는 경우에는 그룹별로 IAM 역할을 지정할 수 있습니다. 또한, Cognito Identity를 사용하면 인증을 받지 않은 게스트 사용자에 대해 권한이 제한된 별도의 IAM 역할을 정의할 수 있습니다. 뿐만 아니라 Cognito가 사용자를 위해 생성하는 고유 식별자를 사용하여 특정 리소스에 대한 액세스를 제어할 수 있습니다. 예를 들면 각 사용자가 버킷 내 자신의 폴더에만 액세스할 수 있도록 허용하는 S3 버킷에 대한 정책을 생성할 수 있습니다.

Q: 퍼블릭 자격 증명 공급자를 사용하는 경우, Amazon Cognito Identity에서 사용자의 자격 증명을 저장합니까?

아니요. 앱에서는 지원되는 퍼블릭 자격 증명 공급자(Amazon, Facebook, Twitter, Digits, Google 또는 Open ID Connect 호환 공급자)와 직접 통신하여 사용자를 인증합니다. Cognito Identity는 사용자 자격 증명을 수신하거나 저장하지 않습니다. Cognito Identity는 자격 증명 공급자에게서 받은 토큰을 사용하여 사용자에 대한 고유 자격 증명을 확보한 다음, 단방향 해시를 사용하여 이를 해시합니다. 이를 통해 실제 사용자 자격 증명을 저장하지 않고도 이후에 같은 사용자임을 인식할 수 있습니다.

Q: Cognito Identity는 자격 증명 공급자로부터 사용자에 대한 기밀 정보를 수신하거나 이를 저장합니까?
아니요. Cognito Identity는 자격 증명 공급자로부터 어떠한 기밀 정보(이메일 주소, 친구 목록 등)도 수신하지 않습니다.

Q: Cognito Identity를 사용하는 경우에도 자체 백엔드 인증 시스템이 필요합니까?
아니요. Cognito Identity는 Amazon, Facebook, Twitter, Digits 및 Google을 통한 로그인을 지원할 뿐만 아니라 인증되지 않은 사용자에 대한 지원도 제공합니다. Cognito Identity를 사용하면 백엔드 코드를 작성하지 않아도 연동 인증, 프로필 데이터 동기화 스토어, 그리고 AWS 액세스 토큰 배포를 지원할 수 있습니다.

Q: 사용자 로그인을 강제하고 싶지 않은 경우는 어떻게 합니까?
Cognito Identity는 인증된 사용자와 마찬가지로 인증되지 않은 사용자를 위해서도 생성 및 토큰 벤딩 프로세스를 지원합니다. 이렇게 하면 앱에서 추가 로그인 화면으로 인한 마찰이 없어질 뿐만 아니라 계속하여 임시적이며 제한 권한이 있는 자격 증명을 사용해 AWS 리소스에 액세스할 수 있도록 합니다.

Q: 인증되지 않은 사용자란 무엇입니까?
인증받지 않은 사용자란 자격 증명 공급자를 통해 인증을 받지 않고 게스트로서 앱에 액세스하는 사용자를 말합니다. 이러한 사용자에 대한 별도의 IAM 역할을 정의하여 백엔드 리소스에 액세스할 수 있도록 제한된 권한을 제공할 수 있습니다.

Q: Cognito Identity는 동일한 디바이스에서 서로 다른 사용자에 대한 개별 자격 증명을 지원합니까?
예. Cognito Identity는 가족 iPad와 같은 단일 디바이스에서 개별적인 자격 증명을 지원합니다. 각 자격 증명은 개별적으로 처리되며 사용자가 앱에 로그인 및 로그아웃하는 방법과 로컬 및 원격 앱 데이터가 저장되는 방법을 완전히 제어할 수 있습니다.

Q: Cognito Identity와 관련된 데이터를 어떻게 저장합니까?
프로그래밍 방식으로 Amazon Cognito 자격 증명과 관련된 데이터 세트를 생성하고, 키/값 페어 형식으로 데이터를 저장할 수 있습니다. 데이터는 디바이스에 로컬로 저장되고 Cognito Sync 스토어에도 저장됩니다. 또한, Cognito는 최종 사용자의 모든 디바이스 간에 이러한 데이터를 동기화할 수 있습니다.

Q: Cognito Identity 콘솔의 자격 증명 수는 내 앱을 사용하고 있는 사용자 수를 말합니까?
Cognito Identity 콘솔의 자격 증명 수는 Cognito Identity API를 통해 생성된 자격 증명 수를 나타냅니다. 인증된 자격 증명(Facebook 또는 OpenID Connect 공급자와 같은 로그인 공급자를 통해 로그인한 사용자)의 경우, Cognito Identity의 GetId API에 대한 각 호출이 사용자별로 단 하나의 자격 증명만 생성하게 됩니다. 하지만 인증되지 않은 자격 증명의 경우, 앱의 클라이언트가 GetId API를 호출할 때마다 새로운 자격 증명이 생성됩니다. 그러므로 앱에서 단일 사용자에 대한 인증되지 않은 자격 증명을 여러 번 호출하는 경우, 한 명의 사용자가 여러 개의 자격 증명을 보유한 것으로 나타나게 됩니다. 따라서 인증되지 않은 자격 증명을 사용할 때는 사용자당 여러 번 GetId API를 호출하지 않고 GetId API에서 받은 응답을 캐시하는 것이 중요합니다.

모바일 SDK에서는 Cognito Identity 자격 증명을 자동으로 캐시하는 로직을 제공하므로 캐시 방법에 대해 걱정할 필요가 없습니다. 고유한 사용자를 추적하는 기능을 비롯해 완벽한 앱용 분석 솔루션을 찾고 있다면, Amazon Mobile Analytics를 검토해보시기 바랍니다.

Q: Amazon Cognito 동기화 스토어란 무엇입니까?
Amazon Cognito 동기화 스토어는 Amazon Cognito 자격 증명에 연결된 키/값 페어 스토어입니다. 자격 증명 풀 및 동기화 스토어에서 생성할 수 있는 자격 증명의 수에는 제한이 없습니다. 동기화 스토어에 있는 각 Amazon Cognito 자격 증명은 자체 사용자 정보 스토어를 보유하고 있습니다.

Q: 데이터는 Amazon Cognito 동기화에 직접 저장됩니까?
아니요. 선택 사항인 AWS Mobile SDK는 데이터를 로컬 디바이스의 SQLite 데이터베이스에 저장하기 때문에 앱에서는 해당 데이터에 언제나 액세스할 수 있습니다. synchronize() 메서드를 호출하면 해당 데이터가 Amazon Cognito 동기화 스토어에 푸시되고, 푸시 동기화가 활성화되어 있는 경우 자격 증명에 연결되어 있는 다른 모든 디바이스로 동기화 스토어의 데이터가 변경되었다는 알림이 Amazon SNS를 통해 전달됩니다.

Q: 데이터는 Amazon Cognito 동기화 스토어에 어떻게 보관됩니까?
Amazon Cognito 자격 증명과 관련된 데이터는 키/값 페어로 정리됩니다. 키는 'MusicVolume'과 같은 레이블이며 '11'을 값의 예로 들 수 있습니다. 키/값 페어는 데이터 세트를 사용하여 그룹화 및 범주화됩니다. 데이터 세트는 키/값 페어의 논리적 파티션이며 Amazon Cognito에서 동기화 작업을 수행하기 위해 사용되는 가장 세분화된 엔터티입니다.

Q: Amazon Cognito 동기화 스토어 내 사용자 정보 스토어의 최대 크기는 어떻게 됩니까?
각 사용자 정보 스토어의 최대 크기는 20MB입니다. 사용자 정보 스토어의 각 데이터 세트는 최대 1MB의 데이터를 포함할 수 있습니다. 데이터 세트 내에는 최대 1,024개의 키를 보유할 수 있습니다.

Q: 데이터 세트에 저장할 수 있는 데이터 종류는 무엇입니까?
데이터 세트 내 키와 값은 모두 영숫자 문자열입니다. 문자열의 길이에는 제한이 없으나 데이터 세트 내 값의 합계는 1MB를 초과할 수 없습니다. 바이너리 데이터는 1MB 제한을 초과하지 않도록 제공된 값으로, base64 인코딩 문자열로 저장할 수 있습니다.

Q: 데이터 세트 크기가 1MB로 제한된 이유는 무엇입니까?
데이터 세트 크기를 1MB로 제한한 이유는 대역폭이 제한된 경우에도 여러 차례의 재시도로 배터리 수명과 데이터 플랜을 소모하지 않고 동기화 작업을 성공적으로 완료할 수 있는 확률을 높이기 위해서입니다.

Q: 사용자 자격 증명 및 사용자 정보 스토어는 개발자 간에 공유됩니까?
아니요. 사용자 자격 증명 및 사용자 스토어는 특정 AWS 계정에만 연결됩니다. Amazon Cognito를 사용하는 특정 디바이스에 서로 다른 게시자의 여러 가지 앱이 있는 경우 각 앱에서는 각 게시자가 생성한 정보 스토어를 사용합니다.

Q: Cognito 동기화 스토어에 저장된 데이터를 분석하고 쿼리하려면 어떻게 해야 합니까?
Cognito Streams를 사용하여 AWS 계정에서 동기화 스토어 데이터를 Kinesis 스트림으로 푸시할 수 있습니다. 그런 다음 이 스트림을 사용하여 Amazon Redshift 데이터베이스, 자체 RDS 인스턴스, S3 파일 등 쉽게 분석할 수 있는 방법으로 데이터를 저장할 수 있습니다. Amazon Redshift에 업데이트 데이터를 저장하는 방법을 알려주는 샘플 Kinesis 고객 애플리케이션이 게시되어 있습니다.

Q: 데이터베이스 내보내기 대신 Kinesis 스트림을 사용해야 하는 이유는 무엇입니까?
Kinesis에 데이터를 스트리밍하면 데이터세트의 모든 변경 내역을 실시간으로 수신할 수 있습니다. 즉, 최종 사용자가 데이터세트에 수행하는 모든 변경 사항을 수신할 수 있으며 원하는 도구에 이 데이터를 저장할 수 있습니다.

Q: 데이터가 Cognito에 이미 저장되어 있으면 어떻게 합니까?
Kinesis 스트림 기능을 활성화하면 일괄 게시를 시작할 수 있습니다. 이 프로세스에서 현재 Cognito 동기화 스토어에 저장된 모든 데이터를 선택된 Kinesis 스트림에 비동기식으로 전송합니다.

Q: 이 기능의 요금은 얼마입니까?
Cognito는 귀사의 Kinesis 스트림에 데이터를 푸시합니다. 이 기능이 활성화되어 있는 경우 Cognito의 동기화별 요금에는 차이가 없습니다. 샤드에 Kinesis 표준 요금이 부과됩니다.

Q: 저장하기 전에 데이터를 검증할 수 있습니까?
Amazon Cognito 이벤트를 사용하면 개발자가 Cognito의 중요 이벤트에 응답하여 AWS Lambda 함수를 실행할 수 있습니다. 동기화 트리거 이벤트는 데이터 세트가 동기화될 때 발생하는 이벤트입니다. 개발자는 동기화 이벤트를 가로채도록 AWS Lambda 함수를 작성할 수 있습니다. 이 함수는 데이터가 클라우드에 저장되어 사용자의 다른 디바이스로 동기화되기 전에 기본 데이터 세트의 변경 사항을 평가하고 데이터를 조작할 수 있습니다. 아니면 AWS Lambda 함수가 동기화 작업을 중지시켜 데이터가 사용자의 다른 디바이스에 동기화되는 것을 막을 수 있습니다.

Q: 데이터는 Amazon Cognito와 어떻게 동기화됩니까?
AWS Mobile SDK에서 synchronize() 메서드를 사용하여 클라이언트 디바이스와 Amazon Cognito 동기화 스토어 간 데이터 세트를 프로그래밍 방식으로 트리거할 수 있습니다. synchronize() 메서드는 Amazon Cognito 동기화 스토어에서 사용 가능한 최신 버전을 읽고 이를 로컬에 캐시된 복사본과 비교합니다. 비교 후, 필요한 경우 synchronize() 메서드는 최신 업데이트를 로컬 데이터 스토어와 Amazon Cognito 동기화 스토어에 씁니다. 기본적으로 Amazon Cognito는 마지막으로 쓰여진 데이터 버전을 유지합니다. 이러한 동작을 무시하고 프로그래밍 방식으로 데이터 충돌을 해결할 수 있습니다. 또한 푸시 동기화 덕분에 Amazon Cognito를 사용하여 자격 증명에 연결된 모든 디바이스로 새 데이터를 사용할 수 있다는 자동 푸시 알림을 전송할 수 있습니다.

Q: 자동 푸시 알림이란 무엇입니까?
Amazon Cognito는 Amazon Simple Notification Service(SNS)를 사용해 디바이스로 자동 푸시 알림을 전송합니다. 자동 푸시 알림은 사용자 디바이스의 애플리케이션이 수신하지만 사용자에게는 보이지 않는 푸시 메시지입니다.

Q: 푸시 동기화는 어떻게 사용합니까?
푸시 동기화를 사용하려면 AWS Management Console의 Amazon SNS 페이지를 사용해 플랫폼 애플리케이션을 선언해야 합니다. 그런 다음, AWS Management Console의 Amazon Cognito 페이지에 있는 자격 증명 풀 페이지에서 해당 SNS 플랫폼 애플리케이션을 Cognito 자격 증명 풀에 연결하면 됩니다. Amazon Cognito가 자동으로 이 SNS 플랫폼 애플리케이션을 활용하여 디바이스에 변경 사항을 알립니다.

Q: 동기화 프로세스에서 발생하는 충돌은 어떻게 처리됩니까?
기본적으로 Amazon Cognito는 마지막으로 쓰여진 데이터 버전을 유지합니다. 데이터의 두 가지 버전 모두를 포함하고 있는 AWS Mobile SDK에서의 콜백에 응답하도록 선택하여 이러한 동작을 재정의할 수 있습니다. 앱에서는 어떤 데이터 버전(로컬에 있는 버전 또는 Amazon Cognito 동기화 스토어에 있는 버전)을 유지할 것인지 결정하고 이를 Amazon Cognito 동기화 스토어에 저장할 수 있습니다.

Q: Cognito Identity의 요금은 어떻게 됩니까?
Amazon Cognito에서는 사용한 만큼만 비용을 지불하며, 최소 요금 및 사전 약정은 없습니다.

User Pool을 생성하는 데 Cognito Identity를 사용하는 경우, Monthly Active Users(MAU)만을 기준으로 비용을 지불합니다. 해당 역월 내에 가입, 로그인, 토큰 새로 고침, 암호 변경 등과 같은 해당 사용자와 관련된 자격 증명 작업이 있는 경우, 사용자는 MAU로 간주됩니다. 후속 세션이나 해당 역월의 비활성 사용자에 대해서는 요금이 부과되지 않습니다. 아래 명시된 바와 같이 선택 사항인 SMS 메시징 사용에 대한 요금이 별도로 적용됩니다.

사용자 풀 기능에는 매월 50,000 MAU의 프리 티어가 제공됩니다. Cognito Identity 프리 티어는 12개월의 AWS 프리 티어 기간이 끝나더라도 종료되지 않으며, 기존 및 신규 AWS 고객에게는 무기한 제공됩니다.

Cognito Identity에서는 AWS 리소스에 대한 안전한 액세스 제어와 연동 자격 증명을 언제나 무료로 제공합니다.

Q: Cognito Sync의 요금은 어떻게 됩니까?
Amazon Cognito 동기화 스토어에 저장된 앱 데이터의 총 크기와 수행된 동기화 작업 수를 기준으로 동기화 요금이 부과됩니다. 동기화 작업은 디바이스의 로컬 데이터 스토어를 클라우드에 있는 Amazon Cognito 동기화 스토어와 비교하여 두 데이터 스토어를 동기화합니다.

AWS 프리 티어의 일환으로 자격이 있는 AWS 고객은 처음 12개월간 매월 클라우드 동기화 스토어 10GB와 동기화 작업 1,000,000건을 받게 됩니다. 프리 티어를 초과하는 경우 Amazon Cognito의 요금은 매달 동기화 작업 10,000건당 0.15 USD, 동기화 스토어 GB당 0.15 USD입니다.

Q: 동기화 작업이란 무엇입니까?
AWS Mobile SDK 사용하여 synchronize() 메서드를 호출하는 경우 동기화 작업으로 간주합니다. 서버 API를 직접 호출하는 경우 동기화 작업은 새로운 동기화 세션 토큰이 내보내 졌을 때 시작되며 쓰기 작업에 성공하거나 세션 토큰 시간이 만료되었을 때 완료됩니다. SDK synchronize() 메서드를 사용하든, 서버 API를 직접 호출하든 상관없이 동기화 작업에는 동일한 요금이 부과됩니다.

Q: Monthly Active Users(MAU)란 무엇입니까?
결제 월에 사용자와 관련된 작업(로그인, 토큰 새로 고침, 가입, 암호 변경 등)이 있는 경우, 사용자는 활성으로 간주되고 MAU에 포함됩니다. 따라서 결제 월의 후속 작업 또는 비활성 사용자에 대해서는 요금이 부과되지 않습니다. 일반적으로 총 사용자 수와 작업 수가 총 MAU 수보다 훨씬 많습니다.

Q: Cognito에서 SMS 메시지를 사용할 때 비용은 어떻게 됩니까?
전화번호 확인, 암호를 잊어버리거나 재설정할 때 코드 전송 또는 멀티 팩터 인증을 위해 SMS 메시지를 사용하는 비용은 별도로 부과됩니다. 자세한 내용은 전 세계 SMS 요금 페이지를 참조하십시오.

Q: Amazon Cognito는 AWS 프리 티어의 일부입니까?
예. AWS 프리 티어의 일환으로, Cognito는 처음 최대 12개월간 한 달에 동기화 스토어 10GB와 동기화 작업 1,000,000건을 제공합니다. Cognito Identity용 Your User Pool은 처음 50,000 MAU가 무료로 제공되며, 그 후에는 볼륨 기반 티어가 제공됩니다. 사용자 인증과 고유 식별자 생성을 위한 연동 자격 증명 기능은 Cognito Identity에서 언제나 무료로 제공됩니다.

Q: 앱에서 쓰기 및 읽기 작업을 할 때마다 동기화 작업으로 간주됩니까?
아니요. synchronize() 메서드를 언제 호출할지 결정합니다. 디바이스에서의 모든 쓰기 또는 읽기 작업은 로컬 SQlite 스토어에 적용됩니다. 이러한 방법으로 비용을 완벽하게 제어합니다.

Q: 푸시 동기화의 비용은 얼마입니까?
Cognito는 Amazon SNS를 사용하여 자동 푸시 알림을 전송합니다. 푸시 동기화에 Cognito를 사용하는 데 따르는 추가 요금은 없고 디바이스로 알림을 전송하는 데 대한 일반 Amazon SNS 요금이 부과됩니다.

Q: Amazon Cognito 이벤트에서 Lambda를 사용하는 요금은 얼마입니까?
Cognito 이벤트를 사용하여 Lambda 함수를 트리거할 때 추가되는 요금은 없으며, Lambda 함수가 실행되는 동안 AWS Lambda와 기타 AWS 서비스 사용에 대한 일반 요금이 적용됩니다. 자세한 내용은 AWS Lambda 요금 페이지를 참조하십시오.