Q: Amazon Kinesis Data Streams란 무엇입니까?

Amazon Kinesis Data Streams를 사용하면 특수 요구에 맞춰 스트리밍 데이터를 처리 또는 분석하는 사용자 지정 애플리케이션을 구축할 수 있습니다. 수십만 개의 소스에서 클릭 스트림, 애플리케이션 로그, 소셜 미디어와 같은 다양한 유형의 데이터를 Amazon Kinesis 데이터 스트림에 지속적으로 추가할 수 있습니다. 그러면 몇 초 안에 Amazon Kinesis 애플리케이션에서는 스트림의 해당 데이터를 읽고 처리할 수 있습니다.

Q: Amazon Kinesis Data Streams에서 자동으로 수행하는 관리 작업은 무엇입니까?

Amazon Kinesis Data Streams는 데이터 처리량 수준에서 데이터를 스트리밍하는 데 필요한 인프라, 스토리지, 네트워킹, 구성을 관리합니다. 하드웨어, 소프트웨어는 물론 데이터 스트림을 위한 기타 서비스의 프로비저닝, 배포, 지속적인 유지 관리 등을 걱정할 필요가 없습니다. 또한, Amazon Kinesis Data Streams는 3곳의 가용 영역에 데이터를 동기적으로 복제하여 높은 가용성과 데이터 내구성을 제공합니다.

Q: Amazon Kinesis Data Streams로 어떤 작업을 할 수 있습니까?

Amazon Kinesis Data Streams는 데이터 생산자의 데이터를 신속하게 이동한 다음 지속적으로 데이터를 처리하고, 데이터 스토어로 보내기 전에 데이터를 변환하고, 실시간 지표 및 분석을 수행하거나 이후 처리를 위해 더욱 복잡한 데이터 스트림을 추출하는 데 유용합니다. 다음은 Amazon Kinesis Data Streams 사용에 대한 일반적인 시나리오입니다.

  • 로그 및 데이터 피드 수용 시간 단축: 데이터 일괄 처리를 기다리는 대신 데이터가 생산되면 바로 데이터 생산자가 Amazon Kinesis 데이터 스트림으로 데이터를 푸시하도록 하여 데이터 생산자에 오류가 발생하더라도 데이터 손실을 방지합니다. 예를 들어, 시스템 및 애플리케이션 로그는 지속적으로 데이터 스트림에 추가되며 몇 초 내에 처리에 사용할 수 있습니다. 
  • 실시간 지표 및 보고: 실시간으로 Amazon Kinesis 데이터 스트림 데이터에서 지표를 추출하고 보고서를 생성할 수 있습니다. 예를 들어 Amazon Kinesis 애플리케이션은 데이터 배치를 수신할 때까지 기다리는 대신 데이터가 스트리밍되는 대로 시스템 및 애플리케이션 로그에 대한 지표 및 보고 작업을 수행할 수 있습니다.
  • 실시간 데이터 분석: Amazon Kinesis Data Streams를 사용하여 실시간 데이터 분석을 실행할 수 있습니다. 예를 들어, Amazon Kinesis 데이터 스트림에 클릭 스트림을 추가하고 Amazon Kinesis 애플리케이션에서 실시간으로 분석을 수행할 수 있도록 하여 몇 시간 또는 며칠이 아닌 몇 분 내에 데이터를 파악할 수 있습니다. 
  • 복잡한 스트림 처리: Amazon Kinesis 애플리케이션 및 데이터 스트림의 방향성 비순환 그래프(DAG)를 생성할 수 있습니다. 이 시나리오에서는 1개 이상의 Amazon Kinesis 애플리케이션이 이후 처리를 위해 다른 Amazon Kinesis 데이터 스트림에 데이터를 추가할 수 있어 스트림을 단계별로 연이어 처리할 수 있습니다.

Q: Amazon Kinesis Data Streams를 사용하려면 어떻게 해야 합니까?

Amazon Web Services에 가입하고 다음을 수행하면 Amazon Kinesis Data Streams를 사용할 수 있습니다.

Q: Amazon Kinesis Data Streams에 대한 제한에는 어떤 것이 있습니까?

Amazon Kinesis 데이터 스트림의 처리량은 데이터 스트림 내 샤드 수를 늘리는 방법으로 제한 없이 확장할 수 있도록 설계되었습니다. 하지만 Amazon Kinesis Data Streams를 사용할 때 알아두어야 할 몇 가지 제한 사항이 있습니다.

  • 기본적으로 스트림의 레코드는 스트림에 추가된 시점부터 최대 24시간 동안 액세스할 수 있습니다. 이 제한은 데이터 보존 기간 연장을 활성화하여 최대 7일까지 연장할 수 있습니다.
  • 1개의 레코드 내 데이터 Blob의 최대 크기(Base64로 인코딩하기 전 데이터 페이로드)는 1메가바이트(MB)입니다. 
  • 샤드는 초당 최대 1,000개의 PUT 레코드를 지원할 수 있습니다.

다른 API 수준 제한에 대한 자세한 내용은 Amazon Kinesis Data Streams 제한을 참조하십시오.

Q: Amazon Kinesis Data Streams는 Amazon SQS와 어떻게 다릅니까?

Amazon Kinesis Data Streams는 빅 데이터 스트리밍을 실시간으로 처리할 수 있습니다. 또한, 레코드를 순서대로 정리하고, 여러 개의 Amazon Kinesis 애플리케이션에서 같은 순서대로 레코드를 읽거나 리플레이할 수 있는 기능을 제공합니다. Amazon Kinesis Client Library(KCL)는 주어진 파티션 키에 대한 모든 레코드를 동일한 레코드 프로세서에 제공하므로 동일한 Amazon Kinesis 데이터 스트림의 데이터를 읽는 여러 개의 애플리케이션을 보다 손쉽게 구축할 수 있습니다(예: 계산, 집계 및 필터링 수행).

Amazon Simple Queue Service(Amazon SQS)는 컴퓨터끼리 주고받는 메시지를 저장하기 위한 안정적이고 확장성이 뛰어난 호스팅 대기열을 제공합니다. Amazon SQS를 사용하면 배포된 애플리케이션 구성 요소 간 데이터를 손쉽게 이동하고 자동화된 워크플로우 같이 메시지가 독립적으로 처리(메시지 수준 확인/실패 의미 체계 사용)되는 애플리케이션을 구축할 수 있습니다.

Q: 언제 Amazon Kinesis Data Streams를 사용하고 언제 Amazon SQS를 사용해야 합니까?

다음과 유사한 요구 사항의 사용 사례에서는 Amazon Kinesis Data Streams를 사용하는 것이 좋습니다.

  • 관련 레코드를 동일한 레코드 프로세서로 라우팅합니다(MapReduce를 스트리밍하는 경우와 유사). 예를 들어, 주어진 키에 대한 모든 레코드가 동일한 레코드 프로세서로 라우팅되는 경우 계산 및 집계가 훨씬 간단해집니다.
  • 레코드를 순서대로 정렬합니다. 예를 들어 애플리케이션 호스트의 로그 데이터를 로그 명령문의 순서는 유지한 채로 처리/보관 호스트로 전송하려는 경우가 이에 속합니다.
  • 여러 개의 애플리케이션이 동일한 스트림을 동시에 사용할 수 있도록 하는 기능. 예를 들어 실시간 대시보드를 업데이트하는 애플리케이션이 있고 Amazon Redshift에 데이터를 보관하는 다른 애플리케이션이 있을 때 이 두 개의 애플리케이션이 동일한 스트림의 데이터를 동시에 독립적으로 사용하길 원하는 경우가 이에 속합니다.
  • 몇 시간 후 동일한 순서대로 레코드를 사용할 수 있도록 하는 기능. 예를 들어 결제 애플리케이션이 있고 결제 애플리케이션보다 몇 시간 뒤에 실행되는 감사 애플리케이션이 있는 경우가 이에 속합니다. Amazon Kinesis Data Streams는 데이터를 최대 7일간 저장하므로 결제 애플리케이션보다 최대 7일 뒤에 감사 애플리케이션을 실행할 수 있습니다.

다음과 유사한 요구 사항의 사용 사례에서는 Amazon SQS를 사용하는 것이 좋습니다.

  • 메시징 의미 체계(예: 메시지 수준 확인/실패) 및 제한 시간 초과. 예를 들어 작업 항목 대기열이 있으며 각 항목이 개별적으로 완료되었는지 추적하려는 경우가 이에 속합니다. Amazon SQS는 확인/실패를 추적하므로 애플리케이션은 지속적인 체크포인트/커서를 유지할 필요가 없습니다. Amazon SQS는 구성된 제한 시간 초과 후 확인된 메시지를 삭제하고 실패한 메시지를 다시 전송합니다.
  • 개별 메시지 지연. 예를 들어 작업 대기열이 있으며 개별 작업에 지연 시간을 지정하려 하는 경우가 이에 속합니다. Amazon SQS를 사용하면 최대 15분간의 지연 시간을 갖도록 개별 메시지를 구성할 수 있습니다.
  • 읽기 시 동시성/처리량 동적으로 증가. 예를 들어 작업 대기열이 있으며 백로그가 지워질 때까지 더 많은 리더를 추가하려는 경우가 이에 속합니다. Amazon Kinesis Data Streams를 사용하면 샤드의 수를 충분히 늘릴 수 있습니다. 그러나 이 작업을 수행하기 전에 충분한 수의 샤드를 프로비저닝해야 한다는 점에 유의하십시오.
  • 투명하게 확장할 수 있도록 Amazon SQS의 기능 활용. 예를 들어 이따금 발생하는 로드 스파이크 및 비즈니스의 자연스러운 성장으로 인한 요청과 로드 변경 사항을 버퍼링하려는 경우가 이에 속합니다. 버퍼링된 각 요청은 개별적으로 처리될 수 있으므로 Amazon SQS는 투명하게 확장하여 사용자의 프로비저닝 지침을 받지 않아도 로드를 처리할 수 있습니다.


Q: 샤드란 무엇입니까?

샤드는 Amazon Kinesis 데이터 스트림의 기본 처리 단위입니다. 샤드 1개는 초당 1MB의 데이터 입력 및 2MB의 데이터 출력 용량을 제공하며 샤드 1개는 초당 최대 1,000개의 PUT 레코드를 지원합니다. 데이터 스트림을 생성할 때 필요한 샤드 수를 지정하게 됩니다. 예를 들어, 샤드가 2개 있는 데이터 스트림을 생성할 수 있습니다. 이 데이터 스트림은 초당 2MB의 데이터 입력 및 초당 4MB의 데이터 출력을 처리할 수 있으며 초당 최대 2,000개의 PUT 레코드를 허용합니다. Amazon Kinesis Data Streams에서 샤드 수준 지표를 모니터링하고, 스트림 리샤딩을 통해 데이터 처리량이 변경됨에 따라 샤드를 동적으로 스트림에 추가하거나 스트림에서 제거할 수 있습니다.

Q: 레코드란 무엇입니까?

레코드는 Amazon Kinesis 데이터 스트림에 저장되는 데이터의 단위입니다. 레코드는 시퀀스 번호, 파티션 키, 데이터 Blob으로 구성됩니다. 데이터 Blob은 사용자의 데이터 생산자가 데이터 스트림에 추가한 대상 데이터입니다. 데이터 Blob의 최대 크기(Base64로 인코딩하기 전 데이터 페이로드)는 1메가바이트(MB)입니다.

Q: 파티션 키란 무엇입니까?

파티션 키는 레코드를 데이터 스트림의 다른 샤드로 분리하고 라우팅하는 데 사용됩니다. 파티션 키는 Amazon Kinesis 데이터 스트림에 데이터가 추가되는 동안 데이터 생산자가 지정합니다. 예를 들어, 샤드가 2개 있는 데이터 스트림이 있다고 가정해 보겠습니다(샤드 1과 샤드 2). 파티션 키 2개(키 A와 키 B)를 사용하도록 데이터 생산자를 구성하여 키 A가 있는 모든 레코드는 샤드 1에 추가하고 키 B가 있는 모든 레코드는 샤드 2에 추가할 수 있습니다. 

Q: 시퀀스 번호란 무엇입니까?

시퀀스 번호는 각 레코드에 대한 고유 식별자입니다. Amazon Kinesis 데이터 스트림에 데이터를 추가하기 위해 데이터 생산자가 PutRecord 또는 PutRecords 작업을 호출할 때 Amazon Kinesis에서 시퀀스 번호를 할당합니다. 동일한 파티션 키에 대한 시퀀스 번호는 일반적으로 시간이 지남에 따라 증가합니다. PutRecord 또는 PutRecords 요청 사이의 시간 간격이 길어질수록 시퀀스 번호도 커집니다.


Q: Amazon Kinesis 데이터 스트림을 생성하려면 어떻게 해야 합니까?

Amazon Web Services에 가입하고 나면 Amazon Kinesis Management Console 또는 CreateStream 작업을 통해 Amazon Kinesis 데이터 스트림을 생성할 수 있습니다.

Q: Amazon Kinesis 데이터 스트림의 처리량을 어떻게 결정합니까?

Amazon Kinesis 데이터 스트림의 처리량은 데이터 스트림 내의 샤드 수에 의해 결정됩니다. 아래 단계를 따라 데이터 스트림에서 초기에 필요한 샤드 수를 추정해 보십시오. 리샤딩을 통해 데이터 스트림 내의 샤드 수를 동적으로 조정할 수 있습니다.

  1. 데이터 스트림에 작성된 레코드의 평균 크기는 킬로바이트(KB) 단위로 추정합니다(최대 1KB 단위로 반올림). (average_data_size_in_KB)
  2. 데이터 스트림에 작성된 초당 레코드 수를 추정합니다. (number_of_records_per_second)
  3. 해당 데이터 스트림의 데이터를 동시에 독립적으로 사용할 Amazon Kinesis 애플리케이션의 수를 결정합니다. (number_of_consumers)
  4. 수신되는 쓰기 대역폭을 KB 단위로 계산합니다(incoming_write_bandwidth_in_KB). 이는 average_data_size_in_KBnumber_of_records_per_seconds를 곱한 값과 동일합니다.
  5. 발신되는 쓰기 대역폭을 KB 단위로 계산합니다(outgoing_read_bandwidth_in_KB). 이는 incoming_write_bandwidth_in_KBnumber_of_consumers를 곱한 값과 동일합니다.

그러면 다음 공식을 사용하여 데이터 스트림에서 초기에 필요한 샤드 수(number_of_shards)를 계산할 수 있습니다.

number_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

Q: Amazon Kinesis 데이터 스트림에 대해 요청할 수 있는 최소 처리량은 어떻게 됩니까?

Amazon Kinesis 데이터 스트림의 처리량은 샤드 단위로 계산합니다. 샤드 하나가 데이터 스트림의 가장 작은 처리량이며, 이는 초당 1MB의 데이터 입력과 초당 2MB의 데이터 출력을 제공합니다.

Q: Amazon Kinesis 데이터 스트림에 대해 요청할 수 있는 최대 처리량은 어떻게 됩니까?

Amazon Kinesis 데이터 스트림의 처리량은 제한 없이 확장할 수 있도록 설계되었습니다. 기본적으로 각 계정은 리전당 10개의 샤드를 프로비저닝할 수 있습니다. Amazon Kinesis Data Streams 제한 양식을 사용하여 단일 리전에서 10개의 샤드를 추가로 요청할 수 있습니다.

Q: 레코드 크기는 Amazon Kinesis 데이터 스트림의 처리량에 어떻게 영향을 미칠 수 있습니까?

샤드 하나는 초당 1MB의 데이터 입력 속도를 제공하며 초당 최대 1,000개의 PUT 레코드를 지원합니다. 즉, 레코드 크기가 1KB 미만인 경우 초당 PUT 레코드의 최대 수에 제한을 받아 샤드 하나의 실제 데이터 입력 속도는 초당 1MB 미만이 됩니다.


Q: 내 Amazon Kinesis 데이터 스트림에 데이터를 추가하려면 어떻게 해야 합니까?

PutRecord PutRecords 작업, Amazon Kinesis Producer Library(KPL) 또는 Amazon Kinesis 에이전트를 통해 데이터를 Amazon Kinesis 데이터 스트림에 추가할 수 있습니다.

Q: PutRecordPutRecords의 차이는 무엇입니까?

 PutRecord 작업에서는 API 호출 시 단일 데이터 레코드를 사용할 수 있고 PutRecords 작업에서는 API 호출 시 여러 데이터 레코드를 사용할 수 있습니다. PutRecordPutRecords 작업에 대한 자세한 내용은 PutRecord  PutRecords를 참조하십시오.

Q: Amazon Kinesis 생산자 라이브러리(KPL)란 무엇입니까?

Amazon Kinesis Producer Library(KPL)는 Amazon Kinesis 데이터 스트림에 데이터를 추가하도록 지원하는 사용이 간편하고 쉽게 구성 가능한 라이브러리입니다. KPL은 간편한 비동기식의 안정적인 인터페이스를 제공하여 최소한의 고객 리소스로 높은 생산자 처리량을 신속하게 달성할 수 있습니다.

Q: Amazon Kinesis API에 액세스하기 위해 사용할 수 있는 프로그래밍 언어 또는 플랫폼은 무엇입니까?

Amazon Kinesis API는 Amazon Web Services SDK에서 사용할 수 있습니다. Amazon Web Services SDK용 프로그래밍 언어와 플랫폼에 대한 목록은 Amazon Web Services용 도구를 참조하십시오.

Q: Amazon Kinesis 생산자 라이브러리(KPL)에서 사용할 수 있는 프로그래밍 언어는 무엇입니까?

Amazon Kinesis 생산자 라이브러리(KPL)의 주요 항목은 C++모듈로 구축되었고 최신 C++ 컴파일러를 사용하여 컴파일하면 모든 플랫폼에서 사용할 수 있습니다. 이 라이브러리는 현재 Java 인터페이스에서 사용할 수 있습니다. 다른 프로그래밍 언어에 대한 지원도 추가할 예정입니다.

Q: Amazon Kinesis 에이전트란 무엇입니까?

Amazon Kinesis 에이전트는 사전 구축된 Java 애플리케이션으로서, 데이터를 수집하여 Amazon Kinesis 데이터 스트림으로 전송하는 간편한 방법을 제공합니다. 에이전트는 웹 서버, 로그 서버, 데이터베이스 서버 등과 같은 Linux 기반 서버 환경에 설치할 수 있습니다. 에이전트에서는 특정 파일을 모니터링하고 데이터를 데이터 스트림으로 지속적으로 전송합니다. 자세한 내용은 에이전트로 작성하기를 참조하십시오.

Q: Amazon Kinesis 에이전트에서 지원하는 플랫폼은 무엇입니까?

Amazon Kinesis 에이전트는 현재 Amazon Linux 및 Red Hat Enterprise Linux를 지원합니다.

Q: Amazon Kinesis 에이전트는 어디에서 다운로드 받을 수 있습니까?

Amazon Kinesis 에이전트는 다음 명령과 링크를 사용해 다운로드 및 설치할 수 있습니다.

Amazon Linux의 경우: sudo yum install –y aws-kinesis-agent

Red Hat Enterprise Linux의 경우: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

GitHub의 경우: awlabs/amazon-kinesis-agent

Q: Amazon Kinesis 에이전트를 사용하려면 어떻게 해야 합니까?

Amazon Kinesis 에이전트를 서버에 설치한 후, 디스크의 특정 파일을 모니터링하도록 구성합니다. 그런 다음 새로운 데이터를 Amazon Kinesis 데이터 스트림에 지속적으로 전송합니다. 자세한 내용은 에이전트로 작성하기를 참조하십시오.

Q: 데이터 생산자가 데이터 스트림에 데이터를 추가하는 도중 Amazon Kinesis 스트림의 용량 제한이 초과되면 어떻게 됩니까?

Amazon Kinesis 데이터 스트림의 용량 제한은 데이터 스트림 내의 샤드 수에 의해 결정됩니다. 데이터 처리량 또는 PUT 레코드 수로 인해 용량 제한이 초과될 수 있습니다. 용량 제한이 초과된 경우 PUT 데이터 호출은 거부되며 ProvisionedThroughputExceeded 예외가 발생합니다. 데이터 스트림의 입력 데이터 속도가 일시적으로 증가하여 용량 제한이 초과된 경우, 데이터 생산자가 다시 시도하여 요청을 완료하게 됩니다. 데이터 스트림의 입력 데이터 속도가 지속적으로 증가하여 용량 제한이 초과된 경우, 데이터 스트림 내 샤드 수를 늘려 PUT 데이터 호출이 계속 이루어질 수 있도록 충분한 용량을 확보해야 합니다. 두 가지 경우 모두 Amazon CloudWatch 지표를 통해 데이터 스트림의 입력 데이터 속도 변경 사항 및 ProvisionedThroughputExceeded 예외 발생에 대해 알아볼 수 있습니다.

Q: PutRecord 또는 PutRecords 호출 중 Amazon Kinesis 데이터 스트림의 데이터 처리량으로 계산되는 데이터는 무엇입니까?

PutRecord 또는 PutRecords 호출의 필수 파라미터는 데이터 Blob, 파티션 키 및 데이터 스트림 이름입니다. 데이터 Blob 크기(Base64 인코딩 전)와 파티션 키는 데이터 스트림 내 샤드 수에 의해 결정되는 Amazon Kinesis 데이터 스트림의 데이터 처리량으로 계산됩니다.


Q: Amazon Kinesis 애플리케이션이란 무엇입니까?

Amazon Kinesis 애플리케이션은 Amazon Kinesis 데이터 스트림의 데이터를 읽고 처리하는 데이터 소비자입니다. Amazon Kinesis Data Analytics, Amazon Kinesis API 또는 Amazon Kinesis Client Library(KCL)를 사용해 애플리케이션을 구축할 수 있습니다.

Q: Amazon Kinesis 클라이언트 라이브러리(KCL)란 무엇입니까?

Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis Client Library(KCL)는 Amazon Kinesis 데이터 스트림의 데이터를 읽고 처리하는 Amazon Kinesis 애플리케이션을 손쉽게 구축할 수 있도록 지원하는 사전 구축 라이브러리입니다. KCL은 데이터 스트림 볼륨 변화에 따른 조정, 스트리밍 데이터 로드 밸런싱, 분산 서비스 조직화 및 내결함성 있는 데이터 처리와 같은 복잡한 문제를 처리합니다. KCL을 사용하면 애플리케이션을 개발하는 동안 비즈니스 로직에 집중할 수 있습니다.

Q: Amazon Kinesis 커넥터 라이브러리란 무엇입니까?

Amazon Kinesis 커넥터 라이브러리는 Amazon Kinesis Data Streams를 다른 AWS 서비스 및 타사 도구와 간편하게 통합할 수 있도록 지원하는 사전 구축된 라이브러리입니다. Amazon Kinesis 커넥터 라이브러리를 사용하려면 Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis 클라이언트 라이브러리(KCL)가 필요합니다. 현재 라이브러리 버전은 Amazon DynamoDB, Amazon Redshift, Amazon S3, Elasticsearch에 대한 커넥터를 제공합니다. 이 라이브러리에는 각 유형별 샘플 커넥터와 샘플 실행을 위한 Apache Ant 빌드 파일도 포함되어 있습니다.

Q: Amazon Kinesis Storm Spout란 무엇입니까?

Amazon Kinesis Storm Spout는 Amazon Kinesis Data Streams를 Apache Storm과 손쉽게 통합할 수 있도록 지원하는 사전 구축된 라이브러리입니다. 현재 Amazon Kinesis Storm Spout 버전은 Amazon Kinesis 데이터 스트림에서 데이터를 가져와 튜플로 내보냅니다. Spout를 Storm 토폴로지에 추가하여 Amazon Kinesis Data Streams를 안정적이고 확장 가능한 스트림 캡처, 스토리지, 리플레이 서비스로 활용할 수 있습니다.

Q: Amazon Kinesis 클라이언트 라이브러리(KCL), Amazon Kinesis 커넥터 라이브러리, Amazon Kinesis Storm Spout는 어떤 프로그래밍 언어에서 사용할 수 있습니까?

Amazon Kinesis 클라이언트 라이브러리(KCL)는 현재 JavaPythonRuby, Node.js.NET에서 사용할 수 있습니다. Amazon Kinesis Connector Library 및 Amazon Kinesis Storm Spout는 현재 Java에서 사용할 수 있습니다. 다른 프로그래밍 언어에 대한 지원도 추가할 예정입니다.

Q: Amazon Kinesis 애플리케이션에 대해 반드시 Amazon Kinesis 클라이언트 라이브러리(KCL)를 사용해야 합니까?

아니요. Amazon Kinesis API를 사용하여 Amazon Kinesis 애플리케이션을 구축할 수도 있습니다. 그러나 가능하면 Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis 클라이언트 라이브러리(KCL)를 사용하는 것이 좋습니다. 이는 Amazon Kinesis 클라이언트 라이브러리가 분산 스트림 처리와 관련된 부담스러운 작업을 수행하므로 더욱 생산적으로 애플리케이션을 개발할 수 있기 때문입니다.

Q: Amazon Kinesis 클라이언트 라이브러리(KCL)는 어떤 방식으로 Amazon Kinesis 애플리케이션과 상호 작용합니까?

Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis Client Library(KCL)는 Amazon Kinesis Data Streams와 Amazon Kinesis 애플리케이션 간의 중간자 역할을 합니다. KCL은 IRecordProcessor 인터페이스를 사용하여 애플리케이션과 통신합니다. 사용자 애플리케이션에 이 인터페이스를 구현하면 KCL은 해당 인터페이스의 메서드를 통해 애플리케이션 코드로 호출됩니다.

KCL을 사용하여 애플리케이션을 구축하는 방법에 대한 자세한 내용은 Developing Consumer Applications for Amazon Kinesis Using the Amazon Kinesis Client Library를 참조하십시오.

Q: Amazon Kinesis 클라이언트 라이브러리(KCL)가 생성하는 작업자와 레코드 프로세서는 무엇입니까?

Amazon Kinesis 애플리케이션은 여러 개의 애플리케이션 인스턴스를 보유할 수 있으며 작업자는 각 애플리케이션 인스턴스로 매핑되는 처리 단위입니다. 레코드 프로세서는 Amazon Kinesis 데이터 스트림에 있는 샤드의 데이터를 처리하는 처리 단위입니다. 하나의 작업자는 1개 이상의 프로세서에 매핑됩니다. 하나의 레코드 프로세서는 하나의 샤드로 매핑되며 해당 샤드에서 레코드를 처리합니다.

시작 시 애플리케이션에서 Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis 클라이언트 라이브러리(KCL)를 호출하여 작업자를 인스턴스화합니다. 이 호출은 데이터 스트림 이름, AWS 자격 증명 등 해당 애플리케이션의 구성 정보를 KCL에 제공합니다. 또한 IRecordProcessorFactory 구현에 대한 참조를 전달합니다. KCL은 이 팩토리를 사용하여 데이터 스트림의 데이터를 처리하는 데 필요한 만큼의 새로운 레코드 프로세서를 생성합니다. KCL은 IRecordProcessor 인터페이스를 사용하여 이러한 레코드 프로세서와 통신합니다.

Q: Amazon Kinesis 클라이언트 라이브러리(KCL)는 어떻게 Amazon Kinesis 애플리케이션에서 처리되는 데이터 레코드를 추적합니까?

Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis 클라이언트 라이브러리(KCL)는 각 Amazon Kinesis 애플리케이션에 대한 Amazon DynamoDB 테이블을 자동으로 생성하여 리샤딩 이벤트와 시퀀스 번호 체크포인트와 같은 상태 정보를 추적하고 유지 관리합니다. DynamoDB 테이블은 애플리케이션과 동일한 이름을 공유하므로 애플리케이션 이름이 동일한 리전 내 동일한 계정에 있는 기존 DynamoDB 테이블과 충돌을 일으키지 않도록 해야 합니다.

동일한 애플리케이션 이름과 관련된 모든 작업자는 동일한 Amazon Kinesis 데이터 스트림에서 함께 작업을 수행하는 것으로 간주됩니다. 애플리케이션 코드는 동일하지만 애플리케이션 이름이 다른 추가 인스턴스를 실행하는 경우, KCL은 두 번째 인스턴스를 동일한 데이터 스트림에서 운영되는 완전히 독립된 애플리케이션으로 취급합니다.

계정에 Amazon Kinesis Data Streams와 관련된 비용뿐만 아니라 Amazon DynamoDB 테이블과 관련된 비용도 청구된다는 점에 유의하십시오.

KCL이 Amazon Kinesis 애플리케이션 상태를 추적하는 방법에 대한 자세한 내용은 Tracking Amazon Kinesis Application state를 참조하십시오.

Q: 어떻게 Amazon Kinesis 클라이언트 라이브러리(KCL)를 사용하여 Amazon Kinesis 애플리케이션의 처리 용량을 자동으로 확장할 수 있습니까?

Amazon Kinesis 애플리케이션의 인스턴스를 여러 개 생성할 수 있으며 이러한 애플리케이션 인스턴스가 Auto Scaling 그룹에 속한 Amazon EC2 인스턴스 집합 전반에서 실행되도록 할 수 있습니다. 처리 요구 사항이 증가함에 따라 애플리케이션 인스턴스를 실행하는 Amazon EC2 인스턴스는 자동으로 인스턴스화됩니다. Java | Python | Ruby | Node.js | .NET용 Amazon Kinesis 클라이언트 라이브러리(KCL)는 이러한 새로운 인스턴스에 대한 작업자를 생성하고 과부하된 기존 인스턴스에서 새 인스턴스로 레코드 프로세서를 자동으로 이동합니다.

Q: Amazon Kinesis 데이터 스트림 내에 데이터가 있는데도 GetRecords 호출이 아무 결과도 반환하지 않는 이유는 무엇입니까?

가능한 한 가지 이유는 현재 샤드 반복기가 지정한 위치에 레코드가 없기 때문일 수 있습니다. TRIM_HORIZON을 샤드 반복기 유형으로 사용하는 경우에도 이러한 일이 발생할 수 있습니다. Amazon Kinesis 데이터 스트림은 데이터의 지속적인 흐름을 보여줍니다. GetRecords 작업을 반복 호출하여 레코드가 저장된 위치로 샤드 반복기가 이동하게 되면 레코드가 반환됩니다.

Q: GetRecords 작업에 반환된 ApproximateArrivalTimestamp는 무엇입니까?

레코드ApproximateArrivalTimestamp라고 부르는 값을 포함합니다. Amazon Kinesis에서 레코드를 성공적으로 수신하고 저장할 때 설정됩니다. 이 타임스탬프는 밀리초 단위로 설정되며 타임스탬프의 정확도는 보장되지 않습니다. 예를 들어 샤드 또는 데이터 스트림의 레코드에 순서가 바뀐 타임스탬프가 있을 수 있습니다.

Q: Amazon Kinesis 애플리케이션이 데이터 스트림의 데이터를 읽는 동안 Amazon Kinesis 데이터 스트림의 용량 제한이 초과되면 어떻게 됩니까?

Amazon Kinesis 데이터 스트림의 용량 제한은 데이터 스트림 내의 샤드 수에 의해 결정됩니다. 데이터 처리량 또는 읽기 데이터 호출 수로 인해 제한이 초과될 수 있습니다. 용량 제한이 초과된 경우 읽기 데이터 호출은 거부되며 ProvisionedThroughputExceeded 예외가 발생합니다. 데이터 스트림의 출력 데이터 속도가 일시적으로 증가하여 용량 제한이 초과된 경우, Amazon Kinesis 애플리케이션에서 다시 시도하여 결국 요청이 완료됩니다. 데이터 스트림의 출력 데이터 속도가 지속적으로 증가하여 용량 제한이 초과된 경우, 데이터 스트림 내의 샤드 수를 늘려 읽기 데이터 호출이 계속 이루어질 수 있도록 충분한 용량을 확보해야 합니다. 두 가지 경우 모두 Amazon CloudWatch 지표를 통해 데이터 스트림의 출력 데이터 속도 변경 사항 및 ProvisionedThroughputExceeded 예외 발생을 확인할 수 있습니다.


Q: Amazon Kinesis 데이터 스트림의 처리량을 변경하려면 어떻게 해야 합니까?

데이터 스트림 처리량을 변경하는 방법은 두 가지가 있습니다. UpdateShardCount API 또는 AWS Management Console을 사용하여 스트림의 샤드 수를 확장하거나, 스트림 내 샤드 수를 조정(리샤딩)하여 Amazon Kinesis Data Streams의 처리량을 변경할 수 있습니다.  

Q: UpdateShardCount 또는 AWS Management Console을 사용하여 내 Amazon Kinesis Data Streams의 처리량을 변경하는 데 시간이 얼마나 걸립니까?

일반적인 확장 요청은 완료하는 데 몇 분 정도 소요됩니다. 큰 규모의 확장 요청은 적은 규모보다 시간이 좀 더 걸립니다.

Q: UpdateShardCount을 사용할 때 제한 사항에는 어떤 것이 있습니까?

UpdateShardCount의 제한 사항에 대한 정보는 Amazon Kinesis Data Streams Service API Reference를 참조하십시오.

Q: UpdateShardCount 또는 리샤딩을 통해 Amazon Kinesis 데이터 스트림의 처리량을 변경하는 경우 Amazon Kinesis Data Streams를 계속해서 사용할 수 있습니까?

예. 스트림의 처리량을 변경하기 위해 UpdateShardCount 또는 리샤딩을 수행하는 동안에도 계속 Amazon Kinesis 데이터 스트림에 데이터를 추가하거나 데이터 스트림의 데이터를 읽을 수 있습니다.

Q: 리샤딩이란 무엇입니까?

리샤딩은 일련의 샤드 분할 또는 병합을 통해 데이터 스트림을 확장하는 데 사용되는 프로세스입니다. 샤드 분할은 하나의 샤드를 2개의 샤드로 분리하여 데이터 스트림의 처리량을 늘립니다. 샤드 병합은 2개의 샤드를 하나의 샤드로 병합하여 데이터 스트림의 처리량을 줄입니다. 자세한 내용은 Amazon Kinesis Data Streams Developer Guide에서 Resharding a Stream을 참조하십시오.

Q: Amazon Kinesis Data Streams의 처리량을 얼마나 자주 변경할 수 있으며 변경하는 데 어느 정도의 시간이 소요됩니까?

샤드 분할 또는 샤드 병합과 같은 리샤딩 작업에는 몇 초가 걸립니다. 한 번에 하나의 리샤딩 작업만 수행할 수 있습니다. 그러므로 샤드가 하나만 있는 Amazon Kinesis 데이터 스트림의 경우, 1개의 샤드를 분할하여 처리량을 2배로 늘리는 데에는 몇 초밖에 소요되지 않습니다. 1,000개의 샤드가 있는 데이터 스트림의 경우, 1,000개의 샤드를 분할하여 처리량을 2배로 늘리는 데는 30,000초(8.3시간)가 소요됩니다. 처리량이 추가로 필요해지기 전에 데이터 스트림의 처리량을 늘리는 것이 좋습니다.

Q: Amazon Kinesis 데이터 스트림의 데이터 보존 기간을 어떻게 변경합니까?

Amazon Kinesis는 기본적으로 최대 24시간 동안 데이터를 저장합니다. 데이터 보존 기간 연장을 활성화하여 데이터 보존 기간을 최대 7일까지 연장할 수 있습니다.

데이터 보존 기간 변경에 대한 자세한 내용은 데이터 보존 기간 변경 페이지를 참조하십시오.

Q: Amazon Kinesis 데이터 스트림의 운영 및 성능을 모니터링하려면 어떻게 해야 합니까?

Amazon Kinesis Data Streams 관리 콘솔은 Amazon Kinesis 데이터 스트림의 데이터 입력 및 출력 처리량과 같은 핵심 운영 및 성능 지표를 표시합니다. 또한, Amazon Kinesis Data Streams는 Amazon CloudWatch와 통합되므로 데이터 스트림과 해당 데이터 스트림 내 샤드에 대한 CloudWatch 지표를 수집, 확인 및 분석할 수 있습니다. Amazon Kinesis Data Streams 지표에 대한 자세한 내용은 Monitoring Amazon Kinesis Data Streams with Amazon CloudWatch를 참조하십시오.

모든 스트림 수준의 지표는 무료로 제공됩니다. 모든 활성화된 샤드 수준의 지표는 Amazon CloudWatch 요금에 따라 비용이 부과됩니다.  

Q: Amazon Kinesis 데이터 스트림에 대한 액세스를 어떻게 관리하고 제어합니까?

Amazon Kinesis Data Streams는 AWS 서비스 및 리소스에 대한 사용자 액세스를 안전하게 제어할 수 있도록 지원하는 서비스인 AWS Identity and Access Management(IAM)와 통합됩니다. 예를 들어, 특정 사용자 또는 그룹만 Amazon Kinesis 데이터 스트림에 데이터를 추가할 수 있도록 허용하는 정책을 생성할 수 있습니다. 스트림의 액세스 관리 및 제어에 대한 자세한 내용은 Controlling Access to Amazon Kinesis Data Streams Resources using IAM을 참조하십시오.

Q: 보안 분석 및 운영 문제 해결을 위해 Amazon Kinesis 데이터 스트림에서 이루어진 API 호출을 기록하려면 어떻게 해야 합니까?

Amazon Kinesis는 계정에 대한 AWS API 호출을 기록하고 로그 파일을 사용자에게 전달하는 서비스인 Amazon CloudTrail과 통합됩니다. API 호출 로깅 및 지원되는 Amazon Kinesis API 작업 목록에 대한 자세한 내용은 Logging Amazon Kinesis API calls Using Amazon CloudTrail을 참조하십시오.

Q: Amazon Kinesis 데이터 스트림 및 이러한 데이터 스트림과 관련된 비용을 효율적으로 관리하려면 어떻게 해야 합니까?

Amazon Kinesis Data Streams에서는 간편한 리소스 및 비용 관리를 위해 사용자가 Amazon Kinesis 데이터 스트림에 태그를 지정할 수 있습니다. 태그는 키-값 페어로 표현되는 사용자 정의 레이블로 AWS 리소스를 정리하는 데 도움이 됩니다. 예를 들어 비용 센터별로 스트림에 태그를 지정하면, Amazon Kinesis Data Streams 비용을 비용 센터별로 분류하여 추적할 수 있습니다. Amazon Kinesis Data Streams 태그 지정에 대한 자세한 내용은 Tagging Your Amazon Kinesis Data Streams를 참조하십시오.

Q: 내 샤드 한도를 어떻게 사용하고 있는지 설명하려면 어떻게 해야 합니까?

DescribeLimits API를 사용하면 계정의 샤드 한도를 어떻게 사용하고 있는지 확인할 수 있습니다. DescribeLimits API는 계정의 샤드 한도와 사용 중인 샤드 수를 반환합니다. 샤드 한도를 높여야 하는 경우 한도 증가를 요청해주십시오.


Q: Kinesis Data Streams를 사용하는 경우 내 데이터는 얼마나 안전합니까?

기본적으로 Kinesis는 안전합니다. 계정 및 데이터 스트림 소유자만 자신이 생성한 Kinesis 리소스에 액세스할 수 있습니다. Kinesis는 데이터에 대한 액세스를 제어하기 위해 사용자 인증을 지원합니다. AWS IAM 정책을 사용하여 사용자 및 사용자 그룹에 개별적으로 권한을 부여할 수 있습니다. HTTPS 프로토콜을 사용하는 SSL 엔드포인트를 통해 Kinesis에서 안전하게 데이터를 가져오고 추가할 수 있습니다. 추가 보안이 필요한 경우, AWS KMS 마스터 키를 사용한 서버 측 암호화를 통해 데이터 스트림에 저장된 데이터를 암호화할 수 있습니다. AWS KMS를 사용하면 암호화에 AWS에서 생성한 KMS 마스터키를 사용할 수 있으며 원하는 경우 자체 마스터 키를 AWS KMS로 가져올 수도 있습니다. 마지막으로 자체 암호화 라이브러리를 사용하여 데이터를 Kinesis에 추가하기 전에 클라이언트 측에서 데이터를 암호화할 수 있습니다.

Q: 퍼블릭 IP를 사용하지 않고도 내 Amazon Virtual Private Cloud(VPC)에서 Kinesis Data Streams API에 비공개로 액세스할 수 있습니까?

예. VPC 엔드포인트를 생성하면 Amazon Virtual Private Cloud(VPC)에서 Kinesis Data Streams API에 비공개로 액세스할 수 있습니다. VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 게이트웨이 또는 VPN 연결을 사용할 필요 없이 AWS 네트워크에서 VPC와 Kinesis Data Streams 간 라우팅을 처리합니다. Kinesis Data Streams API가 사용하는 최신 세대 VPC 엔드포인트는 AWS PrivateLink에서 제공합니다. 이는 Elastic Network Interface(ENI)를 사용하는 AWS 서비스와 VPC 내 프라이빗 IP 간에 프라이빗 연결을 지원하는 기술입니다. PrivateLink에 대해 자세히 알아보려면 PrivateLink 설명서로 이동하십시오. 


Q: Kinesis 데이터 스트림에 추가하는 데이터를 암호화할 수 있습니까?

예. 두 가지 방법으로 Kinesis 데이터 스트림에 추가하는 데이터를 암호화할 수 있습니다. 완전관리형 기능인 서버 측 암호화를 사용하여 데이터 스트림에서 데이터를 추가하고 가져옴에 따라 자동으로 암호화하고 복호화할 수 있습니다. 또는 클라이언트 측에서 암호화하고 복호화하는 방법으로 암호화된 데이터를 데이터 스트림에 작성할 수 있습니다.

Q: 클라이언트 측 암호화 대신 서버 측 암호화를 사용해야 하는 이유는 무엇입니까?

고객은 다음 중 하나의 이유로 클라이언트 측 암호화 대신 서버 측 암호화를 주로 선택합니다.

  • 클라이언트 측 암호화를 적용하기가 어렵습니다.
  • 클라이언트 측 암호화 위에 추가 보안 계층을 적용하길 원합니다.
  • 클라이언트 측 키 관리 체계를 구현하기가 어렵습니다.

Q: 서버 측 암호화란 무엇입니까?

Kinesis Data Streams의 서버 측 암호화는 데이터가 데이터 스트림 스토리지 계층에 쓰여지기 전에 사용자 지정 AWS KMS 마스터 키(CMK)를 사용하여 자동으로 데이터를 암호화하고, 스토리지에서 데이터를 가져온 후에 복호화합니다. 암호화를 하면 데이터 스트림에 쓰기 또는 읽기 작업을 하는 사용자가 데이터 스트림의 암호화를 위해 선택된 키를 사용할 권한이 있지 않은 한, 쓰기가 불가능하고 페이로드와 파티션 키를 읽을 수 없습니다. 따라서 서버 측 암호화를 하면 데이터에 관한 내부 보안 및 규정 준수 요구 사항을 좀 더 쉽게 충족할 수 있습니다.

서버 측 암호화를 사용하면 클라이언트 측 애플리케이션(생산자 및 소비자)에서 암호화를 인식하거나 CMK 또는 암호화 작업을 관리할 필요가 없으며, 데이터는 Kinesis Data Streams 서비스 내에서 저장 및 전송 중에 암호화됩니다. 서버 측 암호화 기능에서 사용하는 모든 CMK는 AWS KMS에서 제공합니다. AWS KMS를 사용하면 AWS에서 Kinesis용으로 관리하는 CMK('원 클릭' 암호화 방법), 사용자 자체 AWS KMS 생성 CMK 또는 암호화를 위해 가져온 CMK를 손쉽게 사용할 수 있습니다.

Q: 서버 측 암호화 시작 안내서가 있습니까?

예. 사용자 설명서에 시작 안내서가 있습니다.

Q: 서버 측 암호화는 내 애플리케이션이 Kinesis Data Streams과 상호 작용하는 방법에 영향을 줍니까?

그럴 수도 있습니다. 이는 암호화에 사용하는 키와 해당 키에 대한 액세스를 관장하는 권한에 따라 다릅니다.

  • AWS에서 Kinesis용으로 관리하는 CMK(키 별칭 = aws/kinesis)를 사용하는 경우, 이 키로 암호화를 활성화하거나 비활성화하더라도 애플리케이션은 영향을 받지 않습니다.
  • 다른 마스터 키, 예를 들어 사용자 지정 AWS KMS 마스터 키 또는 사용자가 AWS KMS 서비스로 가져온 마스터 키를 사용하는 경우, 데이터 스트림의 생산자와 소비자가 암호화에 사용된 AWS KMS CMK를 사용할 권한이 없다면 PUT 및 GET 요청이 실패하게 됩니다. 서버 측 암호화를 사용할 수 있으려면 먼저 메시지의 암호화와 복호화를 허용하도록 AWS KMS 키 정책을 구성해야 합니다. AWS KSM 권한에 관한 예와 추가 정보는 AWS Key Management Service 개발자 안내서의 AWS KMS API 권한: 작업 및 리소스 참조 또는 Kinesis Data Streams 서버 측 암호화 사용자 설명서의 권한 지침을 참조하십시오.

Q: 서버 측 암호화 사용과 관련된 추가 비용이 있습니까?

예. 하지만 AWS에서 관리하는 Kinesis용 CMK를 사용하고 프리 티어 KMS API 사용 비용을 초과하지 않는다면 서버 측 암호화를 무료로 사용할 수 있습니다. 다음은 리소스별 비용에 대한 설명입니다.

키:

  • AWS에서 관리하는 Kinesis용 CMK(별칭 = “aws/kinesis”)는 무료입니다.
  • 사용자 생성 KMS 키에는 KMS 키 비용이 적용됩니다. 자세히 알아보기.

KMS API 사용량:

  • API 사용 비용은 사용자 지정 CMK를 비롯한 모든 CMK에 적용됩니다. Kinesis Data Streams는 데이터 키를 교체할 때 약 5분 간격으로 KMS를 호출합니다. 한 달이 30일인 경우 Kinesis Data Streams에서 수행한 KMS API 호출 총비용은 몇 달러를 넘지 않습니다. 이 비용은 데이터 생산자와 소비자에서 사용하는 사용자 자격 증명 수에 따라 변동됩니다. 각 사용자 자격 증명이 AWS KMS로 개별 API 호출을 수행해야 하기 때문입니다. 인증을 위해 IAM 역할을 사용하면, 각 assume-role-call이 개별 사용자 자격 증명이 되므로 assume-role-call에서 반환한 사용자 자격 증명을 캐시하여 KMS 비용을 절감하는 것이 좋을 수 있습니다.

Q: 어떤 AWS 리전에서 Kinesis Data Streams용 서버 측 암호화를 사용할 수 있습니까?

Kinesis Data Streams 서버 측 암호화는 중국(베이징) 리전을 제외한 모든 퍼블릭 리전과 AWS GovCloud 리전에서 사용할 수 있습니다.

Q: 데이터 스트림에서 서버 측 암호화를 시작, 업데이트 또는 제거하려면 어떻게 해야 합니까?

이 모든 작업은 AWS Management Console 또는 AWS SDK를 사용하여 수행할 수 있습니다. 자세한 내용은 Kinesis Data Streams 서버 측 암호화 시작 안내서를 참조하십시오.

Q: 서버 측 암호화에 사용된 암호화 알고리즘은 무엇입니까?

Kinesis Data Streams에서는 암호화에 AES-GCM 256 알고리즘을 사용합니다.

Q: 이미 작성된 데이터(평문 또는 암호문)가 있는 데이터 스트림을 암호화하는 경우, 암호화를 업데이트할 때 스트림의 모든 데이터가 암호화되거나 복호화됩니까?

아니요. 새로운 암호화 애플리케이션은 데이터 스트림에 새로 작성되는 데이터만 암호화(또는 복호화된 상태를 유지)합니다.

Q: Kinesis Data Streams용 서버 측 암호화에서 암호화하는 것은 무엇입니까?

서버 측 암호화에서는 메시지 페이로드와 더불어 데이터 스트림 생산자 애플리케이션에서 지정하는 파티션 키를 암호화합니다.

Q: 서버 측 암호화는 샤드별 기능입니까 아니면 스트림별 기능입니까?

서버 측 암호화는 스트림별 기능입니다.

Q: 특정 데이터 스트림을 암호화하는 데 사용된 CMK를 변경할 수 있습니까?

예. AWS Management Console 또는 AWS SDK를 사용하여 특정 데이터 스트림에 적용할 새로운 마스터 키를 선택할 수 있습니다.

Q: 서버 측 암호화가 활성화된 Kinesis 데이터 스트림에 데이터를 전송할 때부터 이를 가져올 때까지 내 데이터의 암호화 수명 주기를 설명해 주실 수 있습니까?

다음은 Kinesis Data Streams가 어떻게 AWS KMS CMK를 사용하여 PUT 경로에 저장되기 전에 메시지를 암호화하고 GET 경로로 가져온 후에 이를 복호화하는지 보여줍니다. 사용자가 서버 측 암호화가 활성화된 데이터 스트림에 대해 putRecord(s) 또는 getRecords를 호출하면 Kinesis와 AWS KMS는 다음 작업(복호화 포함)을 수행합니다.

  1. 데이터가 SSL을 사용하는 HTTPS를 통해 고객의 Kinesis 생산자 애플리케이션(클라이언트)에서 Kinesis로 전송됩니다.
  2. 데이터가 Kinesis에 수신되어 RAM에 저장되면 암호화가 레코드의 파티션 키와 페이로드에 적용됩니다.
  3. Kinesis가 평문 IKM(Input Keying Material)을 요청하고 IKM 복사본이 고객이 선택한 KMS 마스터 키로 암호화됩니다.
  4. AWS KMS에서 IKM을 생성하고, 마스터 키로 이를 암호화한 후, 평문 IKM과 암호화된 IKM 둘 다 Kinesis로 전송합니다.
  5. Kinesis에서 평문 IKM을 사용하여 레코드마다 고유한 데이터 키를 추출합니다.
  6. Kinesis가 데이터 키를 사용하여 페이로드와 파티션 키를 암호화하고 메모리에서 평문 키를 제거합니다.
  7. Kinesis가 암호화된 IKM을 암호화된 데이터에 추가합니다.
  8. 평문 IKM이 5분 후에 만료될 때까지 재사용할 수 있도록 메모리에 캐시됩니다.
  9. Kinesis가 암호화된 메시지를 백엔드 스토어로 전송합니다. 여기에 저장되며 getRecords 호출로 페치할 수 있습니다.

사용자가 getRecords를 호출하면 Kinesis와 AWS KMS는 다음 작업(복호화 포함)을 수행합니다.

  1. getRecords가 호출되면, Kinesis의 프런트 엔드가 암호화된 레코드를 백엔드 서비스에서 가져옵니다.
  2. Kinesis는 고객의 요청에서 생성된 토큰을 사용하여 KMS로 요청을 보냅니다. AWS KMS가 이를 승인합니다.
  3. Kinesis가 레코드에 저장된 암호화된 IKM을 복호화합니다.
  4. Kinesis가 복호화된 IKM으로부터 레코드별 데이터 키를 재생성합니다.
  5. 권한이 있는 경우, Kinesis가 페이로드를 복호화하고 메모리에서 평문 데이터 키를 제거합니다.
  6. Kinesis가 SSL 및 HTTPS를 통해 페이로드를 레코드를 요청한 Kinesis 소비자(클라이언트)로 전송합니다.

 


Q: AWS 프리 티어에서 Amazon Kinesis Data Streams를 사용할 수 있습니까?

아니요. Amazon Kinesis Data Streams는 현재 AWS 프리 티어에서 사용할 수 없습니다. AWS 프리 티어는 AWS 서비스 그룹을 무료로 체험해 볼 수 있도록 하는 프로그램입니다. AWS 프리 티어에 대한 자세한 내용은 AWS 프리 티어를 참조하십시오.

Q: Amazon Kinesis Data Streams의 요금은 어떻게 됩니까?

Amazon Kinesis Data Streams는 간편한 종량 과금제를 사용합니다. 선수금이나 최소 요금이 없으며 사용한 리소스에 대해서만 지불하면 됩니다. Amazon Kinesis Data Streams의 요금은 2개의 핵심 항목과 1개의 선택 항목으로 구성됩니다.

  • 시간당 샤드 비용은 Amazon Kinesis 데이터 스트림 내 샤드 수를 기준으로 결정됩니다.
  • PUT 페이로드 단위 비용은 데이터 생산자가 데이터 스트림에 추가하는 25KB 페이로드 단위 수를 기준으로 결정됩니다.
  • 선택 항목인 데이터 보존 기간 연장 비용은 데이터 스트림에서 발생한 샤드 시간 수를 기준으로 부과됩니다. 

Amazon Kinesis Data Streams 비용에 대한 자세한 내용은 Amazon Kinesis Data Streams 요금을 참조하십시오.

Q: PutRecords 작업 대신 PutRecord 작업을 사용하면 PUT 페이로드 단위 비용이 변합니까?

PUT 페이로드 단위 비용은 Amazon Kinesis 데이터 스트림에 추가한 25KB 페이로드 단위 수를 기준으로 계산됩니다. PUT 페이로드 단위 비용은 PutRecords 작업 또는 PutRecord 작업 사용 시 동일합니다.

Q: "CLOSED" 상태의 샤드에도 요금이 부과됩니까?

샤드는 리샤딩 후에 "CLOSED" 상태가 될 수 있습니다. "CLOSED" 상태의 샤드에는 요금이 부과되지 않습니다.

Q: Amazon Kinesis Data Streams 비용 외에 Amazon Kinesis Data Streams를 사용함에 따라 발생할 수 있는 다른 비용이 있습니까?

Amazon Kinesis 애플리케이션을 실행하는 데 Amazon EC2를 사용하는 경우, Amazon Kinesis Data Streams 비용에 Amazon EC2 리소스에 대한 비용이 추가됩니다.

Amazon Kinesis Client Library(KCL)Amazon DynamoDB 테이블을 사용하여 레코드 처리의 상태 정보를 추적합니다. Amazon Kinesis 애플리케이션에 KCL을 사용하는 경우 Amazon Kinesis Data Streams 비용에 Amazon DynamoDB 리소스에 대한 비용이 추가로 부과됩니다.

향상된 샤드 수준 지표를 활성화는 경우, Amazon Kinesis Data Streams 비용과 더불어 활성화된 샤드 수준 지표와 관련된 Amazon CloudWatch 비용이 부과됩니다.

위의 세 가지 예는 일반적인 사례이며, 이 외에도 다른 비용이 발생할 수 있습니다.