Общие вопросы

Вопрос: Что такое Amazon Kinesis Data Streams?

Сервис Amazon Kinesis Data Streams позволяет создавать собственные приложения для обработки или анализа потоковых данных при решении узкоспециальных задач. В поток данных Amazon Kinesis можно непрерывно добавлять данные разных типов (например, истории посещений веб-сайтов, журналы приложений и ленты социальных сетей) из сотен тысяч источников. Приложения Amazon Kinesis могут считывать и обрабатывать данные из потока уже через несколько секунд после поступления.

Вопрос: Какие виды управления берет на себя Amazon Kinesis Data Streams?

Amazon Kinesis Data Streams управляет инфраструктурой, обеспечивает хранение, передачу по сети и выполняет настройки для потоковой передачи данных с учетом скорости их поступления. Сервис избавляет от необходимости самостоятельно выполнять выделение, развертывание и текущее обслуживание аппаратного и программного обеспечения или иным образом поддерживать работу потоков данных. Кроме того, Amazon Kinesis Data Streams выполняет синхронную репликацию данных в трех зонах доступности AWS, обеспечивая высокую доступность и сохранность данных.

Вопрос: Для чего предназначен сервис 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). В этом сценарии данные из одного или нескольких приложений Amazon Kinesis поступают в другой поток данных Amazon Kinesis для дальнейшей обработки, создавая последовательность этапов потоковой обработки данных.

Вопрос: Как работать с Amazon Kinesis Data Streams?

Зарегистрировавшись в Amazon Web Services, можно начать работу с Amazon Kinesis Data Streams. Для этого нужно выполнить следующие действия.

Вопрос: Какие лимиты действуют для Amazon Kinesis Data Streams?

Формально наращивание пропускной способности потока данных Amazon Kinesis посредством увеличения количества сегментов в потоке может происходить до бесконечности. Тем не менее, существуют ограничения, о которых следует помнить при работе с Amazon Kinesis Data Streams.

  • По умолчанию записи в потоке доступны в пределах 24 часов с момента поступления в поток. Срок хранения данных в потоке можно увеличить до 7 дней.
  • Максимальный объем BLOB-объекта данных (полезных данных до их кодирования по схеме Base64) в одной записи составляет 1 МБ.
  • Один сегмент поддерживает до 1000 операций PUT в секунду.

Дополнительную информацию о других ограничениях на уровне API см. в разделе Лимиты Amazon Kinesis Data Streams.

Вопрос: Чем Amazon Kinesis Data Streams отличается от Amazon SQS?

Amazon Kinesis Data Streams предназначен для обработки потоков больших данных в режиме реального времени. Он поддерживает упорядочение записей и считывание и / или воспроизведение записей множеством приложений Amazon Kinesis в одном и том же порядке. Клиентская библиотека Amazon Kinesis (KCL) обеспечивает доставку всех записей с указанным ключом секции к одному и тому же обработчику записей, позволяя просто создавать разные приложения, считывающие данные из одного потока данных Amazon Kinesis (например, приложения для подсчета, агрегации и фильтрации).

Сервис Amazon Simple Queue Service (Amazon SQS) предлагает надежную и хорошо масштабируемую размещенную очередь для хранения сообщений во время их передачи от компьютера к компьютеру. Amazon SQS позволяет с легкостью перемещать данные между компонентами распределенных приложений и создавать приложения для независимой обработки сообщений (со встроенным анализом получения / неполучения), например автоматизированные рабочие процессы.

Вопрос: Когда следует использовать Amazon Kinesis Data Streams, а когда – Amazon SQS?

Amazon Kinesis Data Streams рекомендуется использовать в сценариях со следующими требованиями.

  • Направление связанных записей к одному и тому же обработчику записей (как в потоке MapReduce). Например, выполнить подсчет и агрегацию будет проще, если все записи с данным ключом направляются к одному и тому же обработчику записей.
  • Упорядочение записей. Например, можно передать данные лога с узла приложения на узел обработки/архивации с сохранением порядка его записей.
  • Одновременное использование одного потока множеством приложений. Предположим, существуют два приложения, одно из которых выполняет обновление панели статистики в режиме реального времени, а другое – архивирование данных в Amazon Redshift. Оба приложения должны иметь возможность получать данные из одного и того же потока одновременно и независимо друг от друга.
  • Получение упорядоченных записей через несколько часов. Например, если есть приложение, которое выполняет начисление платы, и приложение аудита, которое запускается через несколько часов после него, то второе приложение можно запускать с интервалом до 7 дней после первого, поскольку данные в Amazon Kinesis Data Streams хранятся не более 7 дней.

Amazon SQS рекомендуется использовать в сценариях, включающих следующие требования.

  • Семантика сообщений (например, оповещение о получении или неполучении на уровне сообщений) и тайм-аут видимости. Например, если вам нужно независимо отслеживать успешное выполнение каждого задания из очереди заданий, то Amazon SQS будет отслеживать оповещения о получении/неполучении. Таким образом, нет необходимости постоянно сохранять контрольные точки/указатели на уровне приложения. Amazon SQS удалит сообщения, получение которых подтверждено, и выполнит повторную доставку непринятых сообщений по истечении заданного тайм-аута видимости.
  • Задержка отдельных сообщений. Например, если отдельные задания в очереди должны быть выполнены с задержкой, с помощью Amazon SQS можно задать задержку выполнения до 15 минут.
  • Динамическое обеспечение одновременного считывания и повышение пропускной способности. Например, если требуется добавить приложения считывания к очереди заданий до того, как задания будут исчерпаны, то с помощью Amazon Kinesis Data Streams можно увеличить число сегментов до необходимого (при этом требуется заблаговременно выделить достаточное количество сегментов).
  • Но можно использовать возможности Amazon SQS выполнять масштабирование без участия пользователя. Например, если число буферных запросов и нагрузка меняются в результате случайных скачков нагрузки или по мере роста вашего бизнеса, то благодаря возможности независимой обработки каждого буферизованного запроса Amazon SQS может автоматически масштабироваться и обслуживать нагрузку без получения инструкций по выделению ресурсов с вашей стороны.

Основные понятия

Вопрос: Что такое сегмент?

Сегмент – это основная единица передачи данных потока Amazon Kinesis. Один сегмент обеспечивает передачу входных данных со скоростью 1 МБ/с и передачу выходных данных со скоростью 2 МБ/с. Один сегмент поддерживает до 1000 записей в секунду. При создании потока данных требуется указать нужное количество сегментов. К примеру, можно создать поток данных с двумя сегментами. Этот поток данных обеспечит передачу входящих данных со скоростью 2 МБ/с и передачу исходящих данных со скоростью 4 МБ/с с поддержкой до 2000 операций записи в секунду. Можно отслеживать метрики сегментов в Amazon Kinesis Data Streams и динамически добавлять или удалять сегменты по мере изменения пропускной способности с помощью изменения количества сегментов в потоке данных.

Вопрос: Что такое запись?

Запись – это единица данных, хранящихся в потоке данных Amazon Kinesis. Запись состоит из порядкового номера, ключа секции и BLOB-объекта данных. BLOB-объект данных – это содержательная составляющая данных, которые источник добавляет в поток данных. Максимальный размер BLOB-объекта данных (полезных данных до их кодирования по схеме Base64) составляет 1 МБ.

Вопрос: Что такое ключ секции?

Ключ секции используется для разделения и перенаправления записей в разные сегменты потока данных. Ключ секции указывается источником данных при добавлении им данных в поток Amazon Kinesis. Предположим, используется поток данных с двумя сегментами (сегмент 1 и сегмент 2). Это позволяет настроить источник данных для использования двух ключей секций (ключа A и ключа B), чтобы все записи с ключом A поступали в сегмент 1, а все записи с ключом B – в сегмент 2.

Вопрос: Что такое порядковый номер?

Порядковый номер – это уникальный идентификатор каждой записи. Порядковый номер назначается Amazon Kinesis в момент получения от источника данных вызова API PutRecord или PutRecords для добавления данных в поток Amazon Kinesis. Значения порядковых номеров для одного и того же ключа секции со временем обычно увеличиваются. Чем больше времени прошло между запросами PutRecord или PutRecords, тем большее значение будет у порядкового номера.

Создание потоков данных

Вопрос: Как создать поток данных Amazon Kinesis?

После регистрации в Amazon Web Services поток данных Amazon Kinesis можно создать с помощью консоли управления Amazon Kinesis или вызова API CreateStream.

Вопрос: Как выбрать оптимальную пропускную способность потока данных Amazon Kinesis?

Пропускная способность потока данных Amazon Kinesis определяется используемым в нем числом сегментов. Следующие шаги помогут приблизительно подсчитать, сколько сегментов потока данных потребуется для начала. Число сегментов в потоке данных можно динамически регулировать с помощью изменения количества сегментов.

  1. Оцените средний объем записи, добавляемой в поток данных, в килобайтах с округлением до ближайшего целого числа килобайтов. (average_data_size_in_KB)
  2. Оцените количество записей, добавляемых в поток данных за одну секунду. (number_of_records_per_second)
  3. Определите количество приложений Amazon Kinesis, которые должны одновременно и независимо получать данные из потока. (number_of_consumers)
  4. Вычислите пропускную способность для записи входящих данных в килобайтах (incoming_write_bandwidth_in_KB), которая равна значению average_data_size_in_KB, умноженному на значение number_of_records_per_seconds.
  5. Вычислите пропускную способность для чтения исходящих данных в килобайтах (outgoing_read_bandwidth_in_KB), которая равна значению incoming_write_bandwidth_in_KB, умноженному на значение number_of_consumers.

Теперь можно вычислить начальное количество сегментов (number_of_shards), которое потребуется для потока данных, по следующей формуле:

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

Вопрос: Какую минимальную пропускную способность можно настроить для потока данных Amazon Kinesis?

Пропускная способность потока данных Amazon Kinesis измеряется в сегментах. Наименьшая пропускная способность потока данных равна одному сегменту и обеспечивает передачу входных данных со скоростью 1 МБ/с и передачу выходных данных со скоростью 2 МБ/с.

Вопрос: Какова максимальная пропускная способность потока данных Amazon Kinesis?

Пропускная способность потока данных Amazon Kinesis может увеличиваться без ограничений. По умолчанию для каждого аккаунта можно выделить 10 сегментов на регион. С помощью формы Amazon Kinesis Data Streams Limits можно подать заявку на получение более 10 сегментов в регионе.

Вопрос: Как объем записи может повлиять на пропускную способностью потока данных Amazon Kinesis?

Один сегмент обеспечивает передачу входящих данных со скоростью 1 МБ/с и поддерживает до 1000 записей PUT в секунду. Таким образом, если объем записи будет менее 1 КБ, фактическая скорость передачи входных данных в сегменте составит менее 1 МБ/с и будет ограничена максимальным числом операций записи в секунду.

Добавление данных в потоки Kinesis Data Streams

Вопрос: Как добавлять данные в поток данных Amazon Kinesis?

Добавлять данные в поток данных Amazon Kinesis можно путем вызова API PutRecord или PutRecords, с помощью библиотеки источников Amazon Kinesis (KPL) или агента Amazon Kinesis.

Вопрос: В чем разница между API PutRecord и PutRecords?

Операция PutRecord позволяет одним вызовом API добавить одну запись данных, а операция PutRecords позволяет одним вызовом API добавить несколько записей данных. Дополнительные сведения об API PutRecord и PutRecords см. в разделах PutRecord и PutRecords.

Вопрос: Что такое библиотека источников Amazon Kinesis?

Библиотека источников Amazon Kinesis (KPL) – это удобная и легко настраиваемая библиотека, позволяющая добавлять данные в поток Amazon Kinesis. KPL предоставляет простой и надежный асинхронный интерфейс, позволяющий быстро достичь высокой скорости передачи данных от источника при минимальных клиентских ресурсах.

Вопрос: Какие языки программирования или платформы можно использовать для работы с API Amazon Kinesis?

API Amazon Kinesis доступны в пакетах SDK Amazon Web Services. Перечень языков программирования и платформ, поддерживаемых SDK Amazon Web Services, см. на странице Инструменты Amazon Web Services.

Вопрос: Для каких языков программирования доступна библиотека источников Amazon Kinesis?

Ядро библиотеки источников Amazon Kinesis (KPL) построено на основе модуля C++, и его можно скомпилировать для работы на любой платформе, для которой имеется актуальный компилятор C++. Для этой библиотеки в настоящее время доступен только интерфейс Java. Поддержка других языков программирования будет добавлена в перспективе.

Вопрос: Что такое агент Amazon Kinesis?

Агент Amazon Kinesis – это встроенное приложение Java, позволяющее легко собирать и отправлять данные в поток Amazon Kinesis. Агент можно устанавливать в серверных средах Linux, таких как веб-серверы, серверы журналов или баз данных. Агент отслеживает определенные файлы и непрерывно отправляет данные в поток. Дополнительные сведения см. на странице Запись с помощью агентов.

Вопрос: Какие платформы поддерживает агент Amazon Kinesis?

Агент Amazon Kinesis в настоящее время поддерживает Amazon Linux и Red Hat Enterprise Linux.

Вопрос: Как загрузить агент 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

Вопрос: Как использовать агент Amazon Kinesis?

После установки агента Amazon Kinesis на серверы следует настроить его для отслеживания определенных файлов на диске, после чего можно непрерывно отправлять новые данные в поток Amazon Kinesis. Дополнительную информацию см. на странице Запись с помощью агентов.

Вопрос: Что произойдет, если при добавлении данных в поток Amazon Kinesis будет превышен лимит пропускной способности потока?

Пропускная способность потока данных Amazon Kinesis определяется числом сегментов в нем. Лимит пропускной способности может быть превышен за счет скорости передачи данных либо количества операций записи. При превышении предела запрос на добавление данных будет отклонен с выдачей исключения ProvisionedThroughputExceeded. Если причина заключается во временном повышении скорости поступления данных в поток, выполнение запроса будет успешно завершено после очередной попытки добавления данных источником. Если причина в устойчивом повышении скорости поступления данных в поток, рекомендуется увеличить число сегментов в нем, чтобы обеспечить достаточную пропускную способность для успешного выполнения всех запросов на добавление данных. В обоих случаях можно воспользоваться метриками Amazon CloudWatch, чтобы узнать об изменении скорости поступления данных в поток и о появлении исключений типа ProvisionedThroughputExceeded.

Вопрос: Какая информация принимается во внимание при добавлении данных в поток Amazon Kinesis с помощью вызова PutRecord или PutRecords?

BLOB-объект данных, ключ секции и имя потока данных – это обязательные параметры вызовов PutRecord и PutRecords. При добавлении данных в поток Amazon Kinesis с пропускной способностью, определяемой числом сегментов, учитывается объем BLOB-объекта данных (до их кодирования по схеме Base64) и ключ секции.

Дополнительные копии данных

Вопрос: Что такое дополнительные копии данных?

Дополнительные копии данных – это необязательная возможность для потребителей Kinesis Data Streams, обеспечивающая выделение между потребителями и сегментами логических каналов с пропускной способностью 2 МБ/с. Такая возможность позволяет клиентам масштабировать число потребителей, параллельно считывающих данные из потока данных, и сохранять при этом высокую производительность.

Вопрос: Как потребители могут использовать дополнительные копии данных?

Потребители должны сначала зарегистрироваться в сервисе Kinesis Data Streams. По умолчанию дополнительные копии данных активируются при регистрации потребителей. Если используется библиотека KCL, то KCL версии 2.x обеспечивает автоматическую регистрацию потребителей и использует имя приложения KCL в качестве имени потребителя. После регистрации всем зарегистрированным потребителям будут выделены собственные логические каналы для создания дополнительных копий данных. Затем потребители смогут использовать API HTTP/2 SubscribeToShard для извлечения данных из этих каналов. API HTTP/1 GetRecords в настоящее время не поддерживает дополнительные копии данных, поэтому потребуется обновиться до KCL 2.x или зарегистрировать своего потребителя и использовать для него вызов API SubscribeToShard.

Вопрос: Как потребитель может использовать дополнительные копии данных?

Потребители используют дополнительные копии данных, извлекая данные с помощью API SubscribeToShard. Имя зарегистрированного потребителя используется в API SubscribeToShard, что приводит к использованию преимуществ от дополнительных копий данных, предоставляемых зарегистрированному потребителю.

Вопрос: В каких случаях следует использовать дополнительные копии данных?
Дополнительные копии данных следует использовать, если имеется или ожидается появление нескольких потребителей, которые будут параллельно извлекать данные из потока, или если у вас есть по меньшей мере один потребитель, для которого необходимо использовать API SubscribeToShard для обеспечения доставки данных между источниками и потребителями в пределах 200 мс.

Вопрос: Можно ли совмещать потребителей, получающих дополнительные копии данных, с потребителями, которым эта возможность не предоставляется?

Да, можно параллельно подключать к потоку потребителей, которые используют дополнительные копии данных, и тех, которые не используют эту возможность. Использование возможности дополнительных копий данных не влияет на ограничения сегментов при традиционном использовании GetRecords.

Вопрос: Существует ли ограничение на количество потребителей, использующих дополнительные копии данных для конкретного потока?

По умолчанию для каждого потока данных имеется ограничение на 5 потребителей, использующих дополнительные копии данных. Если необходимо более 5 потребителей, отправьте запрос на увеличение лимита в службу AWS Support. Имейте в виду, что общее число потребителей, считывающих данные из потока, может быть больше пяти, поскольку 5 потребителей могут использовать дополнительные копии данных, а другие потребители одновременно с ними могут не использовать эту возможность.

Вопрос: Как осуществляется регистрация потребителей для использования дополнительных копий данных и API HTTP/2 SubscribeToShard?

Рекомендуется использовать библиотеку KCL 2.x, которая обеспечивает автоматическую регистрацию потребителя и использование как возможности создания дополнительных копий данных, так и API HTTP/2 SubscribeToShard. В противном случае можно вручную зарегистрировать потребителя, используя API RegisterStreamConsumer, после чего выполнить вызов API SubscribeToShard с именем зарегистрированного потребителя.

Вопрос: Взимается ли плата за использование возможности создания дополнительных копий данных?

Да. Плата по требованию начисляется за каждый час для каждого сочетания сегмента в потоке и зарегистрированного потребителя, использующего дополнительную копию данных (плата за каждый час работы потребителя с сегментом). Кроме того, взимается плата за каждый гигабайт извлеченных данных. Подробнее см. на странице цен на Kinesis Data Streams.

Вопрос: Как рассчитывается час работы потребителя с сегментом?

Час работы потребителя с сегментом рассчитывается путем умножения числа зарегистрированных потребителей потока на количество сегментов в потоке. Например, если для потока данных, содержащего 10 сегментов, час работы потребителя с сегментом стоит 0,015 USD, то потребитель, использующий дополнительные копии данных, сможет считать данные из 10 сегментов. Таким образом, плата за час работы потребителя с сегментами составит 0,15 USD в час (1 потребитель x 10 сегментов х 0,015 USD за каждый час работы потребителя с сегментом). Если одновременно имеется два зарегистрированных потребителя, использующих возможность создания дополнительных копий данных, плата за час работы потребителей с сегментами составит 0,30 USD в час (2 потребителя x 10 сегментов х 0,015 USD).

Вопрос: Будет ли счет за час работы потребителя, использующего дополнительные копии данных, с сегментом автоматически выставлен на пропорциональной основе, если прекратить или начать получение данных в течение часа?

Да. Плата будет начислена пропорционально тому времени, в течение которого потребитель был зарегистрирован для использования возможности создания дополнительных копий данных.

Вопрос: Как начисляется плата за получение данных с использованием дополнительных копий?

Оплата начисляется по количеству гигабайтов по низкому тарифу, при этом учитывается каждый байт данных, который получен потребителями, использующими дополнительные копии данных. Округление полезной нагрузки или минимальный объем доставленных данных отсутствуют.

Вопрос: Нужно ли менять источники или поток данных для использования дополнительных копий данных?

Нет, возможность использования дополнительных копий данных может быть активирована без дополнительного воздействия на источники данных или потоки данных.

Чтение и обработка данных из потоков Kinesis Data Streams

Вопрос: Что такое приложение Amazon Kinesis?

Приложение Amazon Kinesis – это потребитель данных, который считывает и обрабатывает данные из потока Amazon Kinesis. Такие приложения можно создавать с помощью Amazon Kinesis Data Analytics, API Amazon Kinesis или с помощью клиентской библиотеки Amazon Kinesis (KCL).

Вопрос: Что такое клиентская библиотека Amazon Kinesis (KCL)?

Клиентская библиотека Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET – это встроенная библиотека, позволяющая просто создавать приложения Amazon Kinesis для считывания и обработки данных из потока Amazon Kinesis.

KCL берет на себя такие сложные задачи, как адаптация к изменениям объема потока данных, балансировка нагрузки потоковых данных, координация распределенных сервисов и отказоустойчивая обработка данных. В результате разработчик может сосредоточиться на функциональном коде создаваемого приложения. KCL 2.x поддерживает как API HTTP/1 GetRecords, так и HTTP/2 SubscribeToShard с возможностью использования дополнительных копий для извлечения данных из потока. KCL 1.x не поддерживает API SubscribeToShard или возможность использования дополнительных копий данных.

Вопрос: Как обновить KCL с 1.x до 2.x, чтобы можно было использовать SubscribeToShard и дополнительные копии данных?

Ознакомьтесь с документацией пользователя Kinesis Data Streams, чтобы узнать, как выполнить обновление с KCL 1.x до KCL 2.x.

Вопрос: Что такое API SubscribeToShard?

API SubscribeToShard – это API высокопроизводительной потоковой передачи, обеспечивающий передачу данных из сегментов к потребителям с помощью постоянного подключения, не требующего циклических запросов со стороны клиента. API SubscribeToShard использует протокол HTTP/2 для доставки данных зарегистрированным потребителям каждый раз, когда новые данные поступают в сегмент, что происходит обычно в течение 70 мс. По сравнению с использованием API GetRecords это ускоряет доставку данных на 65 %. Потребители не будут испытывать снижение производительности при доставке, даже если несколько зарегистрированных потребителей считывают данные из одного и того же сегмента.

Вопрос: Можно ли использовать SubscribeToShard без создания дополнительных копий данных?

Нет. Для работы SubscribeToShard требуется использование возможности создания дополнительных копий данных. Это также означает необходимость зарегистрировать потребителя в сервисе Kinesis Data Streams, прежде чем использовать SubscribeToShard.

Вопрос: Как долго поддерживается постоянное соединение SubscribeToShard?

Постоянное соединение может поддерживаться до 5 минут.

Вопрос: Поддерживает ли библиотека Kinesis Client Library (KCL) API SubscribeToShard?

Да, KCL версии 2.x использует SubscribeToShard и возможность создания дополнительных копий данных для извлечения данных из потока данных Kinesis с высокой производительностью.

Вопрос: Нужно ли платить за использование SubscribeToShard?

Нет, дополнительная плата за использование SubscribeToShard не взимается, но SubscribeToShard требуется использовать с дополнительными копиями данных, за которые начисляется почасовая плата для каждой комбинации потребитель-сегмент и плата за каждый гигабайт данных, доставленный с использованием дополнительных копий данных.

Вопрос: Нужно ли создавать дополнительные копии данных, если требуется использовать SubscribeToShard?

Да, для использования SubscribeToShard необходимо зарегистрировать потребителей, при этом создание дополнительных копий данных будет активировано при регистрации. По умолчанию, если данные запрашиваются с помощью SubscribeToShard, потребитель автоматически использует создание дополнительных копий данных.

Вопрос: Что такое связующая библиотека Amazon Kinesis?

Связующая библиотека Amazon Kinesis – это встроенная библиотека, которая позволяет легко интегрировать Amazon Kinesis Data Streams с другими сервисами AWS и инструментами сторонних разработчиков. Для использования связующей библиотеки Amazon Kinesis требуется клиентская библиотека Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET. Текущая версия этой библиотеки обеспечивает подключение к Amazon DynamoDB, Amazon Redshift, Amazon S3 и Elasticsearch. Кроме того, библиотека содержит примеры подключений для каждого типа, а также файлы компоновки Apache Ant для запуска примеров.

Вопрос: Что такое Amazon Kinesis Storm Spout?

Amazon Kinesis Storm Spout – это встроенная библиотека, позволяющая просто интегрировать Amazon Kinesis Data Streams с Apache Storm. Текущая версия Amazon Kinesis Storm Spout получает данные из потока данных Amazon Kinesis и выводит их в виде кортежей. Чтобы использовать Amazon Kinesis Data Streams в качестве надежного и масштабируемого сервиса захвата потока, хранения и воспроизведения, необходимо добавить Spout в топологию Storm.

Вопрос: Для каких языков программирования доступны клиентская библиотека Amazon Kinesis (KCL), связующая библиотека Amazon Kinesis и библиотека Amazon Kinesis Storm Spout?

Клиентская библиотека Amazon Kinesis в настоящее время доступна для Java, Python, Ruby, Node.js и .NET. Связующая библиотека Amazon Kinesis и Amazon Kinesis Storm Spout в настоящее время доступны только для Java. но планируется добавить поддержку других языков программирования.

Вопрос: Необходимо ли для создания приложений Amazon Kinesis использовать клиентскую библиотеку Amazon Kinesis (KCL)?

Нет, с помощью API Amazon Kinesis также можно создавать приложения Amazon Kinesis. Однако мы рекомендуем использовать клиентскую библиотеку Amazon Kinesis для Java | Python | Ruby | Node.js | .NET, поскольку она берет на себя выполнение трудоемких задач по распределенной обработке потоков, повышая эффективность процесса разработки приложений.

Вопрос: Как клиентская библиотека Amazon Kinesis взаимодействует с приложениями Amazon Kinesis?

Клиентская библиотека Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET выступает как посредник между сервисом Amazon Kinesis Data Streams и приложением Amazon Kinesis. Она взаимодействует с приложением через интерфейс IRecordProcessor. Приложение выполняет этот интерфейс, и посредством методов последнего библиотека KCL обращается к коду приложения.

Дополнительную информацию о создании приложений с KCL см. в руководстве Разработка приложений-потребителей для Amazon Kinesis с помощью клиентской библиотеки Amazon Kinesis.

Вопрос: Что собой представляют исполнитель и обработчик записей, создаваемые клиентской библиотекой Amazon Kinesis?

Приложение Amazon Kinesis может состоять из множества инстансов, а исполнитель – это модуль обработки, связанный с каждым из таки инстансов. Обработчик записей – это модуль обработки, выполняющий обработку данных из сегмента потока данных Amazon Kinesis. Один исполнитель может быть связан с одним или несколькими обработчиками записей. Один обработчик записей соответствует одному сегменту и выполняет обработку записей из этого сегмента.

Вначале приложение обращается к клиентской библиотеке Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET для создания исполнителя. С помощью этого вызова библиотека KCL получает данные конфигурации приложения, например имя потока данных и данные для доступа AWS. В этом вызове также передается ссылка на нужный интерфейс IRecordProcessorFactory. С помощью вызова этого интерфейса библиотека KCL создает новые обработчики записей в количестве, необходимом для обработки потоковых данных. В дальнейшем KCL взаимодействует с этими обработчиками посредством интерфейса IRecordProcessor.

Вопрос: Каким образом клиентская библиотека Amazon Kinesis продолжает отслеживать записи данных во время обработки приложением Amazon Kinesis?

Клиентская библиотека Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET автоматически создает для каждого приложения Amazon Kinesis таблицу Amazon DynamoDB, чтобы отслеживать и обрабатывать информацию о состоянии, например события изменения количества сегментов и контрольные точки порядковых номеров. Имя этой таблицы DynamoDB будет совпадать с именем приложения, поэтому убедитесь, что имя приложения не конфликтует с именами существующих таблиц DynamoDB того же аккаунта в том же регионе.

Все исполнители, связанные с одним именем приложения, работают с одним и тем же потоком данных Amazon Kinesis. При запуске дополнительного инстанса с кодом того же приложения, но с другим именем библиотека KCL будет рассматривать его как отдельное приложение, также работающее с этим потоком данных.

Обратите внимание на то, что использование таблиц Amazon DynamoDB не входит в стоимость пользования сервисом Amazon Kinesis Data Streams и оплачивается дополнительно.

Дополнительные сведения о том, как KCL контролирует состояние приложения, см. в разделе Контроль состояния приложения Amazon Kinesis.

Вопрос: Как автоматически масштабировать обрабатывающие ресурсы приложения Amazon Kinesis с помощью клиентской библиотеки Amazon Kinesis?

Сервис позволяет создать множество экземпляров приложения Amazon Kinesis, которые будут выполняться некоторым набором инстансов Amazon EC2, входящих в группу Auto Scaling. При возникновении потребности в дополнительных обрабатывающих ресурсах дополнительный инстанс Amazon EC2 для работы приложения будет создан автоматически. Клиентская библиотека Amazon Kinesis (KCL) для Java | Python | Ruby | Node.js | .NET сгенерирует исполнитель для этого нового инстанса и автоматически переместит обработчики записей с существующих перегруженных инстансов на новый инстанс.

Вопрос: Почему вызов GetRecords возвращает пустой результат, хотя поток данных Amazon Kinesis содержит данные?

Причина может быть в отсутствии записей на позиции, указанной как текущий итератор сегмента. Это может произойти даже в случае использования итератора типа TRIM_HORIZON. Поток данных Amazon Kinesis представляет собой непрерывный поток данных. Необходимо выполнить вызов API GetRecords в цикле, и при перемещении итератора сегмента на позицию, где присутствует запись, она будет возвращена.

Вопрос: Что представляет собой значение ApproximateArrivalTimestamp, возвращаемое в результате операции GetRecords?

Каждая запись содержит метку времени, называемую ApproximateArrivalTimestamp. Эта метка устанавливается при успешном получении и сохранении записи потоком Amazon Kinesis. Метка устанавливается с точностью до миллисекунд, однако полное соответствие действительности не гарантируется. К примеру, метки времени записей в отдельном сегменте или во всем потоке данных могут быть не упорядочены.

Вопрос: Что произойдет, если при считывании данных приложением Amazon Kinesis из потока Amazon Kinesis будет превышен предел пропускной способности потока данных?

Пропускная способность потока данных Amazon Kinesis определяется числом сегментов в нем. Предел пропускной способности может быть превышен за счет скорости передачи данных либо количества запросов чтения. При превышении предела запрос чтения данных будет отклонен с выдачей исключения ProvisionedThroughputExceeded. Если причина заключается во временном повышении скорости передачи исходящих данных, выполнение запроса будет успешно завершено после очередной попытки чтения приложением Amazon Kinesis. Если причина в устойчивом повышении скорости передачи исходящих данных, следует увеличить число сегментов в потоке данных, чтобы обеспечить достаточную пропускную способность для успешного выполнения всех запросов чтения данных. В обоих случаях можно воспользоваться метриками Amazon CloudWatch, чтобы узнать об изменении скорости передачи исходящих данных и о появлении исключений типа ProvisionedThroughputExceeded.

Управление потоками Kinesis Data Streams

Вопрос: Как изменить пропускную способность потока данных Amazon Kinesis?

Изменить пропускную способность потока данных можно двумя способами. Для увеличения или уменьшения количества сегментов в потоке данных можно использовать вызов API UpdateShardCount или Консоль управления AWS. Пропускную способность потока данных Amazon Kinesis можно также изменить путем изменения количества сегментов в существующем потоке данных.

Вопрос: Сколько времени занимает изменение пропускной способности потока данных Amazon Kinesis с помощью API UpdateShardCount или Консоли управления AWS?

Как правило, запросы на изменение пропускной способности потока выполняются в течение нескольких минут. Большие запросы выполняются дольше, чем небольшие.

Вопрос: Каковы ограничения API UpdateShardCount?

Сведения о лимитах API UpdateShardCount см. в Справке по API Amazon Kinesis Data Streams.

Вопрос: Можно ли продолжать работу с Amazon Kinesis Data Streams во время изменения пропускной способности потока данных Amazon Kinesis, выполняемого с помощью API UpdateShardCount либо путем изменения количества сегментов?

Да. Параллельно с изменением пропускной способности потока данных Amazon Kinesis с помощью API UpdateShardCount либо путем изменения числа сегментов потока можно добавлять в поток данные и считывать их из него.

Вопрос: Что представляет собой изменение количества сегментов потока?

Изменение количества сегментов потока данных позволяет уменьшать или увеличивать поток с помощью операций разделения или объединения сегментов. При выполнении операции разделения пропускная способность потока данных повышается за счет разделения одного сегмента на два. При выполнении операции объединения пропускная способность потока данных снижается за счет объединения двух сегментов в один. Дополнительную информацию см. в разделе Resharding a Data Stream Руководства по Amazon Kinesis Streams для разработчиков.

Вопрос: Как часто можно менять пропускную способность потока данных Amazon Kinesis путем изменения количества сегментов и сколько времени занимает эта операция?

Операция изменения числа сегментов (как при разделении сегментов, так и при их объединении) занимает несколько секунд. За один раз можно выполнить только одну такую операцию. Таким образом, чтобы вдвое повысить пропускную способность потока данных Amazon Kinesis из одного сегмента путем его разделения, требуется несколько секунд. Чтобы вдвое повысить пропускную способность потока данных из 1000 сегментов, потребуется 30 000 секунд (8,3 часа). Поэтому если требуется повышение пропускной способности потока данных, такую операцию рекомендуется выполнять заблаговременно.

Вопрос: Как изменить срок хранения данных потока Amazon Kinesis?

По умолчанию Amazon Kinesis хранит данные до 24 часов. Срок хранения данных в потоке можно увеличить до 7 дней.

Дополнительные сведения об изменении срока хранения данных см. в разделе «Изменение срока хранения данных».

Вопрос: Как отслеживать выполнение операций и производительность потока данных Amazon Kinesis?

В консоли управления Amazon Kinesis Data Streams отображаются основные метрики операций и производительности, такие как скорость передачи входящих и исходящих данных потока Amazon Kinesis. Кроме того, Amazon Kinesis Data Streams интегрирован с Amazon CloudWatch, что позволяет собирать, просматривать и анализировать метрики CloudWatch для потоков данных и сегментов. Дополнительную информацию о метриках Amazon Kinesis Data Streams см. на странице Мониторинг сервиса Amazon Kinesis Data Streams с помощью Amazon CloudWatch.

Все метрики потоков предоставляются бесплатно. Все включенные метрики на уровне сегментов оплачиваются по тарифам Amazon CloudWatch.

Вопрос: Как управлять доступом к потокам данных Amazon Kinesis?

Amazon Kinesis Data Streams интегрирован с сервисом AWS Identity and Access Management (IAM), который позволяет безопасно управлять доступом пользователей к сервисам и ресурсам AWS. Например, можно создать политику, которая позволит добавлять данные в поток Amazon Kinesis только определенному пользователю или группе. Дополнительную информацию об управлении доступом и контроле потока данных см. в разделе Управление доступом к ресурсам Amazon Kinesis Data Streams с помощью IAM.

Вопрос: Как вести журналы вызовов API к потоку данных Amazon Kinesis для анализа безопасности и решения операционных проблем?

Amazon Kinesis интегрируется с сервисом Amazon CloudTrail, который записывает вызовы AWS API для вашего аккаунта и предоставляет вам лог-файлы. Дополнительную информацию о регистрации вызовов API, а также список поддерживаемых API Amazon Kinesis см. на странице Регистрация вызовов API Amazon Kinesis с помощью Amazon CloudTrail.

Вопрос: Как контролировать ресурсы потоков данных Amazon Kinesis и связанные с ними расходы?

Amazon Kinesis Data Streams позволяет помечать потоки данных Amazon Kinesis с помощью тегов для упрощения управления ресурсами и расходами. Тег – это пользовательская метка, выраженная в виде пары «ключ-значение», которая упрощает организацию ресурсов AWS. Например, можно назначать потокам данных теги по центрам затрат, что позволит разделять их на категории и отслеживать расходы Amazon Kinesis Data Streams на основе центров затрат. Дополнительную информацию об использовании тегов в Amazon Kinesis Data Streams см. в разделе Использование тегов в Amazon Kinesis Data Streams.

Вопрос: Как контролировать уровень использования сегментов?

Для контроля использования отведенного аккаунту количества сегментов воспользуйтесь API DescribeLimits. API DescribeLimits возвращает значение лимита сегментов и число открытых сегментов в вашем аккаунте. Если вам необходимо повысить ограничение на количество сегментов, отправьте заявку на увеличение лимита.

Безопасность

Вопрос: Насколько защищены мои данные при использовании Kinesis Data Streams?

Сервисы Kinesis безопасны по умолчанию. Только владельцы аккаунтов и потоков данных имеют доступ к создаваемым ими ресурсам Kinesis. Kinesis поддерживает аутентификацию пользователей для управления доступом к данным. Можно использовать политики AWS IAM для выборочного предоставления разрешений пользователям и группам пользователей. Безопасно размещать данные в Kinesis и получать их можно через конечные точки SSL с использованием протокола HTTPS. Если требуется дополнительная защита, можно использовать шифрование на стороне сервера с помощью главных ключей AWS KMS для шифрования данных, сохраняемых в потоке. AWS KMS позволяет использовать для шифрования сгенерированные AWS главные ключи KMS; можно также использовать свой собственный главный ключ. Наконец, можно использовать свои собственные библиотеки шифрования для шифрования данных на стороне клиента, прежде чем вводить их в Kinesis.

Вопрос: Можно ли получить частный доступ к API Kinesis Data Streams из облака Amazon Virtual Private Cloud (VPC) без использования публичных IP-адресов?

Да, частный доступ к API Kinesis Data Streams можно получить из облака Amazon Virtual Private Cloud (VPC), создав адреса VPC. При использовании адресов VPC маршрутизация между VPC и Kinesis Data Streams осуществляется сетью AWS без помощи интернет-шлюза, шлюза NAT или VPN-подключения. Последнее поколение адресов VPC, применяемых Kinesis Data Streams, работает на основе AWS PrivateLink – технологии, которая обеспечивает частное соединение между сервисами AWS, используя в VPC эластичные сетевые интерфейсы (ENI) с частными IP-адресами. Подробнее об AWS PrivateLink см. в документации PrivateLink.

Шифрование

Вопрос: Можно ли шифровать данные, которые попадают в поток Kinesis?

Да. Есть два варианта шифрования данных, которые попадают в поток Kinesis. Можно использовать шифрование на стороне сервера, которое является полностью управляемой возможностью, выполняющей автоматическое шифрование и дешифрование данных по мере их попадания в поток данных и, соответственно, получения из него. Можно также записать в поток уже зашифрованные данные, применяя шифрование и дешифрование на стороне клиента.

Вопрос: Почему следует использовать шифрование на стороне сервера вместо шифрования на стороне клиента?

Клиенты часто выбирают шифрование на стороне сервера вместо шифрования на стороне клиента по одной из следующих причин.

  • Трудно принудительно обеспечить шифрование на стороне клиента.
  • В дополнение к шифрованию на стороне клиента требуется обеспечить дополнительный уровень безопасности.
  • Трудно реализовать схемы управления ключами на стороне клиента.

Вопрос: Что такое шифрование на стороне сервера?

При использовании в Kinesis Data Streams шифрования на стороне сервера данные автоматически шифруются с помощью указанного пользователем главного ключа AWS KMS (CMK) перед записью на уровень потокового хранилища и автоматически дешифруются после получения из хранилища. Шифрование делает возможным запись, а также чтение полезных данных и ключа раздела только в том случае, если пользователь, записывающий в поток данных или читающий из него, имеет права на использование ключа, выбранного для шифрования данных в потоке. Вследствие этого применение шифрования на стороне сервера может упростить соблюдение внутренних требований безопасности и обеспечение соответствия требованиям, предъявляемым к данным.

При шифровании на стороне сервера клиентские приложения (источники и потребители данных) могут никак не учитывать шифрование, им не нужно управлять ключами CMK или криптографическими операциями; при этом данные хранятся и пересылаются внутри сервиса Kinesis Data Streams в зашифрованном виде. Все ключи CMK, используемые функцией шифрования на стороне сервера, предоставляются AWS KMS. AWS KMS упрощает использование управляемых AWS ключей CMK для Kinesis (метод шифрования 1-click), собственных ключей CMS, сгенерированных AWS KMS, или ключей CMK, импортированных пользователем для шифрования.

Вопрос: Существует ли руководство по началу работы с шифрованием на стороне сервера?

Да, в документации пользователя есть руководство по началу работы.

Вопрос: Влияет ли шифрование на стороне сервера на то, как приложения взаимодействуют с Kinesis Data Streams?

Может влиять. Это зависит от ключа, который используется для шифрования, и от разрешений, управляющих правами доступа к ключу.

  • Если используется управляемый AWS ключ CMK для Kinesis (псевдоним ключа = aws/kinesis), на приложения не будет влиять включение или отключение шифрования с помощью этого ключа.
  • Если используется другой главный ключ, например настраиваемый главный ключ AWS KMS или тот, который был импортирован в сервис AWS KMS, и если производители и потребители потока данных не имеют разрешения использовать ключ CMK AWS KMS, применяемый для шифрования, запросы PUT и GET будут отклоняться. Прежде чем начать использовать шифрование на стороне сервера, необходимо настроить политики ключей AWS KMS, чтобы разрешить шифрование и дешифрование сообщений. Примеры и дополнительную информацию о разрешениях AWS KMS см. в разделе «Разрешения AWS KMS для API: справка по операциям и ресурсам» «Руководства для разработчиков по AWS Key Management Service» или в инструкциях по разрешениям в документации пользователя по шифрованию на стороне сервера сервиса Kinesis Data Streams.

Вопрос: Будут ли дополнительные затраты при использовании шифрования на стороне сервера?

Да, но если используется управляемый AWS ключ CMK для Kinesis и не превышаются ограничения уровня бесплатного пользования API KMS, использование шифрования на стороне сервера является бесплатным. Ниже описываются затраты по ресурсам.

Ключи

  • Управляемый AWS ключ CMK для Kinesis (псевдоним = aws/kinesis) является бесплатным.
  • Ключи KMS, созданные пользователем, оплачиваются по соответствующим тарифам сервиса KMS. Подробнее.

Использование API KMS

  • Стоимость использования API применяется ко всем ключам CMK, в том числе к пользовательским. Kinesis Data Streams обращается к KMS приблизительно раз в 5 минут для выполнения ротации ключа данных. Итоговая стоимость вызовов API KMS, инициированных одним потоком данных Kinesis, за 30-дневный месяц составит несколько долларов США. Учтите, что данная стоимость будет расти пропорционально количеству учетных данных пользователей, используемых источниками данных и потребителями, так как каждой единице учетных данных требуется уникальный вызов API к AWS KMS. Если для аутентификации используется роль IAM, каждый вызов предполагаемой роли приведет к формированию уникальных учетных данных пользователя. При этом может потребоваться настройка кэширования учетных данных пользователя, сформированных вызовом предполагаемой роли, чтобы сократить расходы на обращение к KMS.

Вопрос: В каких регионах AWS можно использовать для Kinesis Data Streams шифрование на стороне сервера?

Шифрование на стороне сервера для Kinesis Data Streams доступно в регионе AWS GovCloud и во всех публичных регионах, за исключением региона Китай (Пекин).

Вопрос: Как запустить, обновить или удалить шифрование потока данных на стороне сервера?

Все эти операции могут быть выполнены с помощью Консоли управления AWS или SDK AWS. Подробнее см. в Руководстве по началу работы с шифрованием потоков Kinesis Data Streams на стороне сервера.

Вопрос: Какой алгоритм используется для шифрования на стороне сервера?

Kinesis Data Streams использует для шифрования алгоритм AES-GCM 256.

Вопрос: Если зашифровать поток данных, в который уже были записаны данные, будь то незашифрованный или зашифрованный текст, будут ли все данные в потоке зашифрованы или дешифрованы при обновлении шифрования?

Нет, при новом применении шифрования будут зашифрованы (или дешифрованы) только новые данные, записываемые в поток.

Вопрос: Что именно шифруется при шифровании потоков Kinesis Data Streams на стороне сервера?

При шифровании на стороне сервера шифруются полезные данные вместе с ключом секции, который указан приложениями – источниками потока данных.

Вопрос: Шифрование на стороне сервера работает на уровне сегмента или потока?

Шифрование на стороне сервера работает на уровне потока.

Вопрос: Можно ли изменить ключ CMK, который используется для шифрования конкретного потока данных?

Да, используя Консоль управления AWS или SDK AWS, можно для применения к конкретному потоку данных выбрать новый главный ключ.

Вопрос: Можно ли получить подробное описание жизненного цикла шифрования данных с момента их отправки в поток данных Kinesis с включенным шифрованием на стороне сервера и до момента их извлечения?

Ниже описано, как сервис Kinesis Data Streams использует ключ CMK сервиса AWS KMS для шифрования сообщения перед его сохранением при выполнении запроса PUT и для дешифрования его после извлечения при выполнении запроса GET. При вызове PutRecord(s) или GetRecords для потока данных с включенным шифрованием на стороне сервера Kinesis и AWS KMS выполняют следующие действия (включая дешифрование).

  1. Данные отправляются от клиентского приложения-источника Kinesis (клиента) к Kinesis, используя SSL через протокол HTTPS.
  2. Данные принимаются Kinesis, сохраняются в оперативной памяти, а к полезным данным и ключу секции записи применяется шифрование.
  3. Kinesis запрашивает входной материал в виде простого текста для создания ключей шифрования (IKM), затем копия IKM зашифровывается с помощью выбранного клиентом главного ключа KMS.
  4. AWS KMS создает IKM, шифрует его с помощью главного ключа и отправляет как незашифрованный IKM, так и зашифрованный IKM в Kinesis.
  5. Kinesis использует незашифрованный IKM для получения ключей данных, которые являются уникальными для каждой записи.
  6. Kinesis шифрует ключ полезных данных и секции с помощью ключей данных и удаляет незашифрованный ключ из памяти.
  7. Kinesis присоединяет зашифрованный IKM к зашифрованным данным.
  8. Незашифрованный IKM кэшируется в памяти для повторного использования, пока срок его действия не истечет через 5 минут.
  9. Kinesis поставляет зашифрованное сообщение в серверное хранилище, где оно хранится и откуда извлекается с помощью вызова getRecords.

Kinesis и AWS KMS выполняют следующие действия (включая дешифрование) при вызове getRecords.

  1. Когда выполняется вызов getRecords, клиентская часть Kinesis извлекает зашифрованную запись из серверной части сервиса.
  2. Kinesis делает запрос в KMS с использованием токена, созданного клиентским запросом. AWS KMS авторизует его.
  3. Kinesis дешифрует зашифрованный IKM, хранящийся в записи.
  4. Kinesis воссоздает ключи данных для записи из дешифрованного IKM.
  5. Если авторизация прошла успешно, Kinesis дешифрует полезные данные и удаляет незашифрованный ключ данных из памяти.
  6. Kinesis предоставляет полезные данные через SSL и HTTPS потребителю (клиенту) Kinesis, запрашивающему записи.

Цены и оплата

Вопрос: Доступен ли сервис Amazon Kinesis Data Streams на уровне бесплатного пользования AWS?

Нет. В настоящее время сервис Amazon Kinesis Data Streams недоступен на уровне бесплатного пользования AWS. Уровень бесплатного пользования AWS – это программа, предлагающая бесплатную пробную версию ряда сервисов AWS. Подробнее об уровне бесплатного пользования см. раздел Уровень бесплатного пользования AWS.

Вопрос: Сколько стоит использование Amazon Kinesis Data Streams?

В Amazon Kinesis Data Streams вы платите только за используемые ресурсы. Сервис не предусматривает авансовых платежей или минимальных стартовых взносов. Расходы при использовании сервиса Amazon Kinesis Data Streams включают две основные составляющие и три дополнительных.

  • Почасовая стоимость сегментов определяется количеством сегментов в потоке данных Amazon Kinesis.
  • Стоимость на основе единиц полезной нагрузки записи определяется количеством единиц полезной нагрузки объемом по 25 КБ, добавляемых источниками данных в поток.

Дополнительно

  • Стоимость расширенного срока хранения данных – это дополнительная стоимость, определяемая временем работы сегмента потока данных (в часах). При использовании расширенного срока хранения данных взимается плата за расширенный срок хранения для каждого сегмента потока данных.
  • Стоимость расширенного срока хранения данных – это дополнительная стоимость, включающая две составляющие: стоимость часов работы потребителей с сегментами и стоимость извлечения данных. Часы работы потребителей с сегментами соответствуют числу сегментов в потоке, умноженному на число потребителей, использующих дополнительные копии данных. Объем извлеченных данных определяется объемом данных (в гигабайтах), доставленных потребителям с использованием дополнительных копий данных. 

Подробнее о стоимости Amazon Kinesis Data Streams см. на странице Цены на Amazon Kinesis Data Streams.

Вопрос: Меняется ли стоимость на основе единиц полезной нагрузки записи при использовании API PutRecords вместо API PutRecord?

Стоимость на основе единиц полезной нагрузки PUT рассчитывается по количеству единиц полезной нагрузки по 25 КБ, добавляемых в поток данных Amazon Kinesis. Это значение не зависит от использования API PutRecords или PutRecord.

Вопрос: Взимается ли плата за сегменты в состоянии CLOSED?

После изменения числа сегментов в потоке сегмент может находиться в состоянии CLOSED. За сегменты, пребывающие в состоянии CLOSED, плата не взимается.

Вопрос: Связаны ли с использованием Amazon Kinesis Data Streams какие-либо сопутствующие расходы, помимо стоимости самого сервиса Amazon Kinesis Data Streams?

Если вы используете сервис Amazon EC2 для работы приложений Amazon Kinesis, в дополнение к расходам на Amazon Kinesis Data Streams будет взиматься плата за использование ресурсов Amazon EC2.

Клиентская библиотека Amazon Kinesis (KCL) использует таблицы Amazon DynamoDB для отслеживания информации о состоянии обработки записей. При использовании библиотеки KCL для приложений Amazon Kinesis в дополнение к расходам на Amazon Kinesis Data Streams будет начисляться плата за использование ресурсов Amazon DynamoDB.

Если включены расширенные метрики сегментов, в дополнение к тарифам Amazon Kinesis Data Streams в счете будет учитываться работа сервиса Amazon CloudWatch, связанная с включением метрик сегментов.

Три указанных выше примера сопутствующих расходов являются самыми распространенными, но не исчерпывающими.

Подробнее о ценах на Amazon Kinesis Data Streams

Перейти на страницу цен
Готовы начать работу?
Регистрация
Есть вопросы?
Свяжитесь с нами