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

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

Amazon Kinesis Data Firehose предоставляет простейший способ загрузки потоковых данных в хранилища и инструменты аналитики. Сервис позволяет захватывать, преобразовывать и загружать потоковые данные в Amazon S3, Amazon Redshift, Amazon Elasticsearch Service и Splunk, а затем в режиме, близком к реальному времени, выполнять их анализ с помощью уже имеющихся инструментов бизнес‑аналитики и панелей управления. Этот полностью управляемый сервис автоматически масштабируется в зависимости от пропускной способности потока данных и не требует постоянного администрирования. Кроме того, Amazon Kinesis Data Firehose позволяет создавать пакеты данных, а также сжимать и шифровать данные перед загрузкой, что сокращает объем памяти, используемый в целевом объекте, и повышает уровень безопасности.

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

Amazon Kinesis Data Firehose управляет базовой инфраструктурой, хранилищем, сетевой конфигурацией и настройками, которые используются для захвата данных и их загрузки в сервисы Amazon S3, Amazon Redshift, Amazon Elasticsearch Service и Splunk. Сервис избавляет от необходимости самостоятельно выполнять распределение, развертывание, текущее обслуживание аппаратного и программного обеспечения или разрабатывать дополнительные приложения для управления этим процессом. Firehose также обеспечивает эластичное масштабирование без вмешательства пользователя или сопутствующих расходов на разработку. Кроме того, Amazon Kinesis Data Firehose выполняет синхронную репликацию данных в трех ЦОД в рамках региона AWS, обеспечивая высокую доступность и сохранность данных в процессе их передачи на целевые объекты.

Вопрос: Как использовать Amazon Kinesis Data Firehose?

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

  • Создать поток доставки Amazon Kinesis Data Firehose с помощью консоли Firehose или операции CreateDeliveryStream. Дополнительно можно настроить в потоке доставки функцию AWS Lambda для подготовки и преобразования необработанных данных перед загрузкой.
  • Настроить источники данных для непрерывного добавления данных в поток доставки с помощью агента Amazon Kinesis или API Firehose.
  • Firehose будет непрерывно загружать данные в автоматическом режиме и передавать их в указанный целевой объект.

Вопрос: Что такое источник?

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

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

Информацию о лимитах см. в разделе Amazon Kinesis Data Firehose Limits руководства для разработчиков.

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

Вопрос: Что такое поток доставки?

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

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

Запись – это значимая единица данных, которые источник отправляет в поток доставки. Максимальный размер записи (до кодирования по схеме base64) составляет 1024 КБ.

Вопрос. Что такое целевой объект?

Целевой объект – это хранилище, в которое осуществляется доставка данных. Amazon Kinesis Data Firehose в настоящее время поддерживает использование в качестве целевых объектов Amazon S3, Amazon Redshift, Amazon Elasticsearch Service и Splunk.

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

Вопрос: Как создать поток доставки?

Поток доставки Amazon Kinesis Data Firehose можно создать с помощью консоли Firehose или операции CreateDeliveryStream. Подробнее см. в разделе Creating a Delivery Stream.

Вопрос: Какой формат сжатия можно использовать?

Amazon Kinesis Data Firehose позволяет сжимать данные перед их доставкой в Amazon S3. Сервис в настоящее время поддерживает форматы сжатия GZIP, ZIP и SNAPPY. Если данные предназначены для загрузки в Amazon Redshift, поддерживается только формат GZIP.

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

Возможность подписки на CloudWatch Logs можно использовать для потоковой передачи данных журналов CloudWatch Logs в Kinesis Data Firehose. Все события из журналов CloudWatch Logs уже сжаты в формате gzip, поэтому рекомендуется отключить сжатие в настройках Firehose, чтобы избежать двойного сжатия. Дополнительную информацию о возможности подписки на CloudWatch Logs см. в разделе Subscription Filters with Amazon Kinesis Data Firehose руководства пользователя Amazon CloudWatch Logs.

Вопрос: Какие типы шифрования можно использовать?

Amazon Kinesis Data Firehose позволяет шифровать данные после доставки в корзину Amazon S3. При создании потока доставки можно настроить шифрование данных с помощью принадлежащего пользователю ключа AWS Key Management Service (KMS). Дополнительные сведения о KMS см. на странице AWS Key Management Service.

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

Сервис Firehose может вызывать функцию AWS Lambda для преобразования входных данных перед их доставкой в целевые объекты. С этой целью можно настроить новую функцию Lambda, используя одну из предоставляемых нами схем Lambda, или выбрать существующую функцию Lambda.

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

Если используется преобразование данных с помощью Lambda, можно включить резервное копирование исходных записей, после чего сервис Amazon Kinesis Data Firehose будет сохранять входные данные (до преобразования) в отдельную корзину S3. Можно указать для этих записей дополнительный префикс, который будет добавляться перед префиксом времени UTC в формате «ГГГГ/ММ/ДД/ЧЧ», генерируемым Firehose.

Вопрос: Что представляет собой регистрация ошибок?

Если включить преобразование данных с помощью Lambda, сервис Firehose может регистрировать любые ошибки, связанные с вызовами функций Lambda и доставкой данных, в журналах Amazon CloudWatch Logs, поэтому при сбое вызова функции Lambda или доставки в журналах можно посмотреть, какая именно ошибка произошла. Дополнительную информацию см. в разделе Monitoring with Amazon CloudWatch Logs.

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

Amazon Kinesis Data Firehose выполняет буферизацию определенного объема входящих потоковых данных в течение определенного периода времени перед их доставкой в целевой объект. Размер и интервал буфера можно задать при создании потока доставки. Размер буфера задается в мегабайтах в диапазоне от 1 МБ до 128 МБ, если целевым объектом является Amazon S3, и в диапазоне от 1 МБ до 100 МБ, если данные передаются в Amazon Elasticsearch Service. Интервал буфера задается в секундах в диапазоне от 60 до 900 с. Обратите внимание, что, если доставка данных в целевой объект отстает от записи в поток доставки, Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект.

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

Размер буфера вычисляется до сжатия данных. В результате, если данные будут сжаты, размер объектов в корзине Amazon S3 может оказаться меньше заданного размера буфера.

Вопрос: Что представляет собой роль IAM, которую необходимо указать при создании потока доставки?

Amazon Kinesis Data Firehose применяет определенную для него роль IAM для доступа к ресурсам, таким как корзина Amazon S3 или домен Amazon Elasticsearch. Подробнее см. в разделе Controlling Access with Amazon Kinesis Data Firehose руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Какие права нужны пользователю Amazon Redshift, который указывается при создании потока доставки?

Пользователь Amazon Redshift должен обладать правом на выполнение операции Redshift INSERT для копирования данных из корзины Amazon S3 в кластер Redshift.

Вопрос: Что нужно сделать, если кластер Amazon Redshift находится в VPC?

Если кластер Amazon Redshift находится в VPC, для предоставления сервису Amazon Kinesis Data Firehose доступа к этому кластеру Redshift требуется разблокировать IP‑адреса Firehose в данном VPC. Дополнительную информацию о разблокировании IP‑адресов в VPC см. в разделе Grant Firehose Access to an Amazon Redshift Destination руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Зачем указывать корзину Amazon S3, если в качестве целевого объекта используется Amazon Redshift?

Если в качестве целевого объекта выбран сервис Amazon Redshift, Amazon Kinesis Data Firehose доставляет данные сначала в корзину Amazon S3, а затем исполняет команду Redshift COPY для загрузки данных из корзины S3 в кластер Redshift.

Вопрос: Что такое ротация индекса при использовании в качестве целевого объекта Amazon Elasticsearch Service?

Amazon Kinesis Data Firehose может выполнять ротацию индекса Amazon Elasticsearch Service на основе интервалов времени. Интервал времени можно настроить при создании потока доставки. Подробнее см. в разделе Index Rotation for the Amazon ES Destination руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Зачем указывать корзину Amazon S3, если в качестве целевого объекта используется Amazon Elasticsearch Service?

При загрузке данных в Amazon Elasticsearch Service Amazon Kinesis Data Firehose может создавать резервную копию всех данных или только тех данных, которые не удалось доставить. Чтобы воспользоваться этой возможностью и предотвратить потерю данных, необходимо выделить корзину Amazon S3 для резервного копирования.

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

Конфигурацию потока доставки после его создания можно менять в любое время. Это можно делать с помощью консоли Firehose или операции UpdateDestination. В процессе обновления конфигурации поток доставки будет оставаться в АКТИВНОМ состоянии, что позволяет продолжать отправку данных в поток доставки. Обновленные конфигурации обычно вступают в действие в течение нескольких минут.

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

Вопрос. Можно ли использовать поток доставки Firehose в одном аккаунте, чтобы доставить данные в пункт назначения VPC домена сервиса Amazon Elasticsearch Service в другом аккаунте?

Нет. Поток доставки Firehose и целевой домен сервиса Amazon Elasticsearch Service должны находиться в одном аккаунте.

Вопрос. Можно ли использовать поток доставки Firehose в одном регионе, чтобы доставить данные в пункт назначения VPC домена сервиса Amazon Elasticsearch Service в другом регионе?

Нет. Поток доставки Firehose и целевой домен сервиса Amazon Elasticsearch Service должны находиться в одном регионе.

Подготовка и преобразование данных

Вопрос: Как подготовить и преобразовать необработанные данные в Amazon Kinesis Data Firehose?

Amazon Kinesis Data Firehose позволяет использовать функцию AWS Lambda для подготовки и преобразования необработанных входных данных в потоке доставки перед их загрузкой в целевые объекты. Настроить функцию AWS Lambda для преобразования данных можно при создании нового потока доставки или при изменении существующего потока доставки.

Вопрос: Как вернуть подготовленные и преобразованные данные из функции AWS Lambda обратно в Amazon Kinesis Data Firehose?

Все преобразованные записи из Lambda должны возвращаться в Firehose с указанными ниже тремя параметрами, иначе сервис Firehose будет отклонять эти записи и обрабатывать их как сбой, произошедший во время преобразования данных.

  • recordId. Firehose передает параметр recordId вместе с каждой записью в Lambda во время вызова функции. Каждая преобразованная запись должна быть возвращена с точно таким же параметром recordId. Любое несоответствие между исходным параметром recordId и возвращенным параметром recordId будет рассматриваться как сбой при преобразовании данных.
  • result. Статус результата преобразования каждой записи. Для этого параметра допустимы следующие значения. «Ok», если запись была успешно преобразована в штатном режиме. «Dropped», если в используемом алгоритме обработки запись была намеренно пропущена в штатном режиме. «ProcessingFailed», если преобразовать запись в штатном режиме не удалось. Когда сервис Firehose генерирует метрики SucceedProcessing.Records и SucceedProcessing.Bytes, он рассматривает возвращенные записи со статусами «Ok» и «Dropped» как успешно обработанные записи, а записи со статусом «ProcessingFailed» – как записи, обработанные с ошибкой. 
  • data. Преобразованные полезные данные после кодирования по схеме Base64.

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

Сервис Firehose предоставляет следующие схемы Lambda, которые можно использовать при создании функции Lambda для преобразования данных.

  • General Firehose Processing. Эта схема содержит модель преобразования данных и состояния, описанную выше. Используйте эту схему для любых специальных алгоритмов преобразования.
  • Apache Log to JSON. Эта схема используется для анализа и преобразования строк журнала Apache в объекты JSON с предопределенными названиями полей JSON.
  • Apache Log to CSV. Эта схема используется для анализа и преобразования строк журнала Apache в формат CSV.
  • Syslog to JSON. Эта схема используется для анализа и преобразования строк системного журнала в объекты JSON с предопределенными названиями полей JSON.
  • Syslog to CSV. Эта схема используется для анализа и преобразования строк системного журнала в формат CSV.

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

Да. Сервис Firehose может создавать резервную копию всех непреобразованных записей в корзине S3 параллельно с доставкой преобразованных записей в целевые объекты. Резервное копирование исходной записи можно включить при создании или обновлении потока доставки.

Добавление данных в потоки доставки

Вопрос: Как добавить данные в поток доставки Amazon Kinesis Data Firehose?

Добавить данные в поток доставки Amazon Kinesis Data Firehose можно с помощью агента Amazon Kinesis или операций PutRecord и PutRecordBatch сервиса Firehose. Кроме того, Kinesis Data Firehose интегрирован с другими источниками данных AWS, такими как Kinesis Data Streams, AWS IoT, Amazon CloudWatch Logs и Amazon CloudWatch Events.

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

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

Вопрос: Какие платформы поддерживаются агентом 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 на серверах его можно настроить для мониторинга определенных файлов на диске и непрерывной передачи новых данных в поток доставки. Дополнительную информацию см. в разделе Writing with Agent.

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

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

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

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

Вопрос: Как добавить данные в поток доставки Firehose из потока Kinesis?

При создании или обновлении потока доставки данных через консоль AWS или API Firehose можно настроить поток Kinesis в качестве источника потока доставки. После настройки Firehose будет автоматически считывать данные из потока Kinesis и загружать их в указанные целевые объекты.

Вопрос: Как часто Kinesis Data Firehose считывает данные из потока Kinesis?

Kinesis Data Firehose выполняет вызов GetRecords() к Kinesis Data Streams один раз в секунду для каждого сегмента Kinesis.

Вопрос: С какого момента Kinesis Data Firehose начинает считывать данные, если настроить поток Kinesis как источник потока доставки данных?

Если поток Kinesis настроен как источник потока доставки данных, Kinesis Data Firehose начинает считывать данные с самой ПОСЛЕДНЕЙ позиции потока. Для получения дополнительной информации о позиции в потоке Kinesis см. раздел GetShardIterator в справочнике по API сервиса Kinesis Data Streams.

Вопрос: Можно ли настроить поток данных Kinesis в качестве источника для нескольких потоков доставки данных Firehose?

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

Вопрос: Можно ли добавить данные в поток доставки с помощью агента Kinesis или операций Firehose PutRecord и PutRecordBatch, если в качестве источника настроен поток данных Kinesis?

Нет, нельзя. Если в качестве источника потока доставки Firehose настроен поток данных Kinesis, операции PutRecord и PutRecordBatch сервиса Firehose отключаются. Добавлять данные в поток данных Kinesis следует через операции PutRecord и PutRecords сервиса Kinesis Data Streams.

Вопрос: Как добавить в поток доставки данные сервиса AWS IoT?

Добавление в поток доставки данных из AWS IoT выполняется созданием действия AWS IoT, с помощью которого события отправляются в поток доставки данных. Подробнее см. в разделе Writing to Amazon Kinesis Data Firehose Using AWS IoT руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Как добавить в поток доставки данные журналов CloudWatch Logs?

Добавить в поток доставки Firehose данные журналов CloudWatch Logs можно, создав фильтр подписки на журналы CloudWatch Logs, который отправляет события в поток доставки. Дополнительную информацию см. в разделе Using CloudWatch Logs Subscription Filters руководства пользователя по Amazon CloudWatch.

Вопрос: Как добавить в поток доставки Amazon Kinesis Data Firehose данные CloudWatch Events?

Чтобы добавить в поток доставки Firehose данные CloudWatch Events, требуется создать правило CloudWatch Events с потоком доставки в качестве целевого объекта. Дополнительную информацию см. в разделе Writing to Amazon Kinesis Data Firehose Using CloudWatch Events руководства по Amazon Kinesis Data Firehose для разработчиков.

Доставка данных

Вопрос: Как часто Amazon Kinesis Data Firehose доставляет данные в корзину Amazon S3?

Частота доставки данных в Amazon S3 определяется значениями размера и интервала буфера корзины S3, настроенными для потока доставки. Прежде чем доставить входящие данные в Amazon S3, Amazon Kinesis Data Firehose выполняет их буферизацию. Можно настроить размер буфера корзины S3 (от 1 до 128 МБ) или интервал буферизации (от 60 до 900 секунд), в результате условие, выполненное первым, будет инициировать доставку данных в Amazon S3. Обратите внимание: в том случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Amazon Kinesis Data Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект.

Вопрос: Как часто сервис Amazon Kinesis Data Firehose доставляет данные в кластер Amazon Redshift?

Если в качестве целевого объекта выбран сервис Amazon Redshift, Amazon Kinesis Data Firehose доставляет данные сначала в корзину Amazon S3, а затем исполняет команду Redshift COPY для загрузки данных из корзины S3 в кластер Redshift. Частота операций копирования данных из Amazon S3 в Amazon Redshift определяется скоростью исполнения команды COPY кластером Redshift. При наличии данных для копирования сервис Firehose начнет исполнение новой команды COPY, как только кластер Redshift успешно завершит исполнение предыдущей команды COPY.

Вопрос: Как часто сервис Amazon Kinesis Data Firehose доставляет данные в домен Amazon Elasticsearch?

Частота доставки данных в Amazon Elasticsearch Service определяется значениями размера и интервала буфера Elasticsearch, заданными для потока доставки. Firehose выполняет буферизацию входящих данных, прежде чем выполнить их доставку в Amazon Elasticsearch Service. При доставке в Elasticsearch можно настроить размер буфера (от 1 до 100 МБ) или интервал буферизации (от 60 до 900 секунд), и условие, исполненное первым, будет инициировать передачу данных в Amazon Elasticsearch Service. Обратите внимание: в том случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Amazon Kinesis Data Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект.

Вопрос: Как организованы данные в корзине Amazon S3?

Перед помещением объектов в корзину Amazon S3 сервис Amazon Kinesis Data Firehose добавляет к ним префикс времени UTC в формате ГГГГ/ММ/ДД/ЧЧ. Префикс отражается в структуре папок Amazon S3, где каждая метка, отделенная косой чертой (/), становится вложенной папкой. Эту структуру папок можно изменить, добавив собственную папку верхнего уровня с помощью косой черты (например, myApp/ГГГГ/ММ/ДД/ЧЧ) или предварив имя папки верхнего уровня ГГГГ текстом (например, myApp ГГГГ/ММ/ДД/ЧЧ). Для этого требуется указать префикс S3 на этапе создания потока доставки.

Вопрос: Какова схема наименования объектов Amazon S3, доставляемых сервисом Amazon Kinesis Data Firehose?

Наименования объектов Amazon S3 следуют схеме НазваниеПотокаДоставки‑ВерсияПотокаДоставки‑ГГГГ‑ММ‑ДД‑ЧЧ‑ММ‑СС‑СлучайнаяСтрока, где ВерсияПотокаДоставки начинается с 1 и увеличивается на 1 при каждом изменении конфигурации потока доставки. Конфигурацию потока доставки (например, название корзины S3, буферизацию, сжатие и шифрование) можно изменить с помощью консоли Firehose или операции UpdateDestination.

Вопрос: Зачем нужна папка manifests в корзине Amazon S3?

Если в качестве целевого объекта используется сервис Amazon Redshift, Amazon Kinesis Data Firehose создает файлы манифеста, чтобы выполнить пакетную загрузку объектов Amazon S3 в кластер Redshift. В папке manifests хранятся файлы манифеста, созданные Firehose.

Вопрос: В каком формате в корзине Amazon S3 хранится резервная копия документов Elasticsearch?

Если используется режим «all documents», Amazon Kinesis Data Firehose объединяет несколько входящих записей (в зависимости от настроек буферизации для потока доставки), а затем передает их в корзину S3 как объект S3. Независимо от настроек режима резервного копирования, документы, при доставке которых произошел сбой, передаются в корзину S3 в определенном формате JSON, который предоставляет дополнительную информацию, например код ошибки и время попытки доставки. Дополнительную информацию см. в разделе Amazon S3 Backup for the Amazon ES Destination руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Можно ли с помощью одного потока доставки доставлять данные в несколько корзин Amazon S3?

В настоящее время поток доставки может доставлять данные только в одну корзину Amazon S3. Если необходимо доставлять данные в несколько корзин S3, можно создать несколько потоков доставки.

Вопрос: Можно ли с помощью одного потока доставки доставлять данные в несколько кластеров или таблиц Amazon Redshift?

В настоящее время поток доставки может доставлять данные только в один кластер и одну таблицу Amazon Redshift. Если необходимо доставлять данные в несколько кластеров или таблиц Amazon Redshift, можно создать несколько потоков доставки.

Вопрос: Можно ли с помощью одного потока доставки доставлять данные в несколько доменов Amazon Elasticsearch Service?

В настоящее время поток доставки может доставлять данные только в один домен и один индекс Amazon Elasticsearch Service. Если необходимо доставлять данные в несколько доменов и индексов Amazon Elasticsearch, можно создать несколько потоков доставки.

Вопрос. Как сервис Amazon Kinesis Data Firehose доставляет данные в домен сервиса Amazon Elasticsearch Service в VPC?

При включении сервиса Kinesis Data Firehose для доставки данных в пункт назначения в сервисе Amazon Elasticsearch Service в VPC сервис Amazon Kinesis Data Firehose создает один или несколько эластичных сетевых интерфейсов нескольких аккаунтов (ENI) в VPC для каждой подсети по вашему выбору. Сервис Amazon Kinesis Data Firehose использует эластичные сетевые интерфейсы для доставки данных в VPC. Количество ENI автоматически масштабируется в соответствии с требованиями сервиса.

Управление потоками доставки и устранение неполадок

Вопрос: Почему происходят пропуски при отправке данных в поток доставки Amazon Kinesis Data Firehose?

По умолчанию каждый поток доставки может принимать до 2000 транзакций в секунду, 5000 записей в секунду и 5 МБ данных в секунду. Эти пороговые значения можно легко увеличить, отправив форму запроса на повышение ограничений.

Вопрос. Почему появляются дублирующиеся записи в корзине Amazon S3, таблице Amazon Redshift, индексе Amazon Elasticsearch или кластерах Splunk?

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

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

Если доставка данных в корзину Amazon S3 заканчивается сбоем, Amazon Kinesis Data Firehose повторяет попытки доставки каждые 5 секунд на протяжении необходимого времени (до 24 часов). Если проблема сохраняется по истечении 24‑часового периода времени, данные удаляются.

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

Если доставка данных в кластер Amazon Redshift заканчивается сбоем, Amazon Kinesis Data Firehose повторяет попытки доставки каждые 5 минут на протяжении необходимого времени (до 60 минут). По истечении 60 минут Amazon Kinesis Data Firehose пропускает текущий пакет объектов S3, подготовленных для копирования, и переходит к следующему пакету. Информация о пропущенных объектах будет доставлена в корзину S3 в виде файла манифеста, сохраненного в папке ошибок; его можно использовать для последующей загрузки объектов вручную. Дополнительные сведения о копировании данных вручную с использованием файлов манифеста см. в разделе Using a Manifest to Specify Data Files.

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

Если целевым объектом является Amazon Elasticsearch Service, при создании потока доставки можно задать период повторных попыток в диапазоне от 0 до 7200 секунд. Если доставка данных в домен Amazon ES заканчивается сбоем, Amazon Kinesis Data Firehose повторяет попытки доставки в течение заданного периода времени. По истечении периода повторных попыток Amazon Kinesis Data Firehose пропускает текущий пакет данных и переходит к следующему пакету. Подробные сведения о пропущенных документах передаются в корзину S3 в папку elasticsearch_failed; ими можно воспользоваться для загрузки документов вручную.

Вопрос: Что происходит в случае сбоя во время преобразования данных?

При попытке сервиса Firehose вызвать функцию Lambda для преобразования данных возможны два варианта возникновения сбоя.

  • В первом случае сбой при вызове функции возникает из‑за превышения времени ожидания сети или при достижении лимита вызовов функции Lambda. В подобных случаях возникновения сбоя сервис Firehose по умолчанию повторит вызов три раза, а затем пропустит этот конкретный пакет записей. Пропущенные записи обрабатываются как записи, обработка которых закончилась ошибкой. С помощью API CreateDeliveryStream и UpdateDeliveryStream можно настроить количество попыток вызова (от 0 до 300). Для подобных случаев возникновения сбоя можно также использовать функцию регистрации ошибок Firehose для передачи данных об ошибках в журналы CloudWatch. Дополнительную информацию см. в разделе Monitoring with Amazon CloudWatch Logs.
  • Во втором случае сбой возникает, когда в результате преобразования записи при возвращении данных из функции Lambda устанавливается статус «ProcessingFailed». Firehose обрабатывает эти записи как записи, обработка которых закончилась ошибкой. В подобном случае возникновения сбоя можно использовать возможности журналов Lambda для передачи данных об ошибках в CloudWatch Logs. Подробнее см. в разделе Accessing Amazon CloudWatch Logs for AWS Lambda.

В обоих случаях возникновения сбоя записи, обработка которых завершилась ошибкой, записываются в корзину S3 в папку processing_failed.

Вопрос: Почему размер доставленных объектов S3 превышает размер буфера, указанный в конфигурации потока доставки?

Размер доставленных объектов S3 в большинстве случаев должен отражать указанный размер буфера, если условие размера буфера удовлетворяется до того, как будет удовлетворено условие интервала буфера. Однако в случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект. В этом случае размер доставленных объектов S3 может быть больше указанного размера буфера.

Вопрос: Зачем нужна папка errors в корзине Amazon S3?

В папку errors попадают файлы манифеста с информацией об объектах S3, не загруженных в кластер Amazon Redshift из‑за возникновения сбоев. Эти объекты можно впоследствии загрузить вручную с помощью команды COPY сервиса Redshift. Дополнительные сведения о копировании данных вручную с использованием файлов манифеста см. в разделе Using a Manifest to Specify Data Files.

Вопрос: Зачем нужна папка elasticsearch_failed в корзине Amazon S3?

Папка elasticsearch_failed хранит документы, доставка которых в домен Amazon Elasticsearch закончилась сбоем. Эти документы можно переиндексировать для загрузки вручную.

Вопрос: Зачем нужна папка processing_failed в корзине Amazon S3?

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

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

Консоль Firehose отображает основные метрики операций и производительности, например объем входящих данных и объем доставленных данных. К тому же сервис Amazon Kinesis Data Firehose интегрирован с метриками Amazon CloudWatch, что позволяет собирать, просматривать и анализировать метрики потоков доставки. Подробнее о метриках сервиса Amazon Kinesis Data Firehose см. в разделе Monitoring with Amazon CloudWatch Metrics руководства по Amazon Kinesis Data Firehose для разработчиков.

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

Сервис Amazon Kinesis Data Firehose интегрирован с Amazon CloudWatch Logs, поэтому при сбое преобразования или доставки данных можно посмотреть соответствующие журналы ошибок. При создании потока доставки можно включить регистрацию ошибок. Подробнее см. в разделе Monitoring with Amazon CloudWatch Logs руководства по Amazon Kinesis Data Firehose для разработчиков.

Вопрос: Как управлять доступом к потоку доставки Amazon Kinesis Data Firehose?

Amazon Kinesis Data Firehose интегрирован с сервисом AWS Identity and Access Management, который позволяет безопасно управлять доступом пользователей к сервисам и ресурсам AWS. Например, можно создать политику, которая позволит только определенному пользователю или группе пользователей добавлять данные в поток доставки Firehose. Дополнительные сведения об управлении доступом к потоку и контроле такого доступа см. в разделе Controlling Access with Amazon Kinesis Data Firehose.

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

Amazon Kinesis Data Firehose интегрирован с сервисом Amazon CloudTrail, который записывает вызовы API AWS для определенного аккаунта и доставляет пользователю файлы журналов. Дополнительную информацию о регистрации вызовов API, а также список поддерживаемых API Amazon Kinesis Data Firehose см. в разделе Logging Amazon Kinesis Data Firehose API calls Using AWS CloudTrail.

Цены и оплата

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

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

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

С Amazon Kinesis Data Firehose вы платите только за используемые ресурсы. Сервис не предусматривает авансовой оплаты или минимальных стартовых взносов. Стоимость Amazon Kinesis Data Firehose зависит от объема переданных в Firehose данных (в гигабайтах), при этом размер каждой записи округляется в большую сторону до ближайшего значения, кратного 5 КБ. Во время доставки в пункт назначения в VPC оплачивается также каждый час выделения потока доставки в каждой зоне доступности и каждый гигабайт обрабатываемых данных. Дополнительные сведения о стоимости Amazon Kinesis Data Firehose см. на странице Цены на Amazon Kinesis Data Firehose.

Вопрос: Каким образом происходит округление до ближайшего значения, кратного 5 КБ, при использовании для отправки данных в Amazon Kinesis Data Firehose операции PutRecordBatch?

Округление до ближайшего значения, кратного 5 КБ, происходит на уровне записи, а не на уровне операций API. Например, если вызов PutRecordBatch содержит две записи по 1 КБ, объем данных для этого вызова составит 10 КБ (5 КБ на каждую запись).

Вопрос: Включены ли в стоимость Amazon Kinesis Data Firehose расходы на использование Amazon S3, Amazon Redshift, Amazon Elasticsearch Service и AWS Lambda?

Нет. Расходы, связанные с использованием сервисов Amazon S3, Amazon Redshift, Amazon Elasticsearch Service и AWS Lambda, в том числе стоимость хранилища и запросов, необходимо оплачивать отдельно. Дополнительную информацию см. на страницах Цены на Amazon S3, Цены на Amazon Redshift, Цены на Amazon Elasticsearch Service и Цены на AWS Lambda.

Соглашение об уровне обслуживания

Вопрос: Что гарантирует соглашение об уровне обслуживания Amazon Kinesis Data Firehose?

Соглашение об уровне обслуживания (SLA) Amazon Kinesis Data Firehose гарантирует бесперебойную ежемесячную работу сервиса Amazon Kinesis Data Firehose на уровне не менее 99,9 %.

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

Компенсация по соглашению об уровне обслуживания Amazon Kinesis Data Firehose по условиям нашего соглашения об уровне обслуживания в отношении Amazon Kinesis Data Firehose предоставляется, если бесперебойная ежемесячная работа сервиса в рамках нескольких зон доступности одного региона, в которых запущено задание, составила менее 99,9 % в течение любого оплачиваемого месяца.

С условиями и положениями соглашения, а также подробностями оформления заявки на компенсацию можно ознакомиться на странице сведений о соглашении об уровне обслуживания Amazon Kinesis Data Firehose.

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

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