Понятие ETL для обычных и потоковых данных
Вопрос. Что такое ETL потоковых данных?
ETL потоковых данных – это обработка и перемещение данных из одного места в другое в режиме реального времени. ETL – это сокращение названий функций базы данных: извлечение (extract), преобразование (transform) и загрузка (load). Извлечение означает сбор данных из некого источника. Преобразование означает любые процессы, выполняемые с этими данными. Загрузка означает отправку обработанных данных в целевой объект, например на склад, в озеро данных или инструмент для аналитики.
Вопрос. Что такое Amazon Kinesis Data Firehose?
Kinesis Data Firehose – это решение для выполнения ETL потоковых данных. Это простейший способ загрузки потоковых данных в хранилища и инструменты аналитики. Этот сервис позволяет захватывать, преобразовывать и загружать потоковые данные в Amazon S3, Amazon Redshift, Amazon OpenSearch Service и Splunk, а затем в режиме, близком к реальному времени, выполнять их анализ с помощью уже имеющихся инструментов бизнес‑аналитики и панелей управления. Этот полностью управляемый сервис автоматически масштабируется в зависимости от пропускной способности потока данных и не требует постоянного администрирования. Кроме того, он позволяет создавать пакеты данных, а также сжимать и шифровать данные перед загрузкой, что сокращает объем памяти, используемой в целевом расположении, и повышает уровень безопасности.
Вопрос. Что такое источник в Kinesis Data Firehose?
Источник – это место непрерывного генерирования и захвата данных для потоковой передачи. Источником может быть сервер регистрации, работающий на инстансах Amazon EC2, приложение, работающее на мобильных устройствах, или датчик на устройстве IoT. Вы можете подключать свои источники к Kinesis Data Firehose с помощью следующих сервисов. 1) Amazon Kinesis Data Firehose API, в котором используется AWS SDK для Java, .NET, Node.js, Python или Ruby. 2) Kinesis Data Stream, в котором Kinesis Data Firehose легко считывает данные из существующего потока данных Kinesis и загружает их в целевые объекты Kinesis Data Firehose. 3) Сервисы со встроенной поддержкой AWS, например AWS Cloudwatch, AWS EventBridge, AWS IOT или AWS Pinpoint. Полный список см. в руководстве для разработчиков Amazon Kinesis Data Firehose. 4) Агенты Kinesis – это независимое приложение Java, которое непрерывно отслеживает наборы файлов и отправляет новые данные в ваш поток. 5) Fluentbit – это программа для обработки и пересылки журналов с открытым исходным кодом. 6) AWS Lambda – это бессерверный вычислительный сервис, с помощью которого можно выполнять код, не выделяя серверы и не управляя ими. Функцию Lambda можно использовать для отправки трафика из S3 или DynamoDB в Kinesis Data Firehose в зависимости от запускаемого события.
Вопрос. Что такое место назначения в Kinesis Data Firehose?
Целевой объект – это хранилище, в которое осуществляется доставка данных. Kinesis Data Firehose в настоящее время поддерживает такие целевые объекты: Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Splunk, Datadog, NewRelic, Dynatrace, Sumologic, LogicMonitor, MongoDB и HTTP End Point.
Вопрос. Какие виды управления берет на себя Kinesis Data Firehose?
Kinesis Data Firehose управляет базовой инфраструктурой, хранилищем, сетевой конфигурацией и настройками, которые используются для захвата данных и их загрузки в сервисы Amazon S3, Amazon Redshift, Amazon OpenSearch Service и Splunk. Сервис избавляет от необходимости самостоятельно выполнять распределение, развертывание, текущее обслуживание аппаратного и программного обеспечения или разрабатывать дополнительные приложения для управления этим процессом. Kinesis Data Firehose также обеспечивает эластичное масштабирование без вмешательства пользователя или сопутствующих расходов на разработку. Кроме того, Kinesis Data Firehose выполняет синхронную репликацию данных в трех ЦОД в рамках региона AWS, обеспечивая высокую доступность и сохранность данных в процессе их передачи в целевые объекты.
Вопрос. Как использовать Kinesis Data Firehose?
Зарегистрировавшись в Amazon Web Services, можно начать работу с Kinesis Data Firehose, выполнив следующие шаги.
- Создать поток доставки Kinesis Data Firehose с помощью консоли Firehose или операции CreateDeliveryStream. Дополнительно можно настроить в потоке доставки функцию AWS Lambda для подготовки и преобразования необработанных данных перед загрузкой.
- Настроить источники данных для непрерывного добавления данных в поток доставки можно с помощью агента Amazon Kinesis или API Firehose.
- Firehose будет непрерывно загружать данные в автоматическом режиме и передавать их в указанный целевой объект.
Вопрос. Что такое поток доставки в Kinesis Data Firehose?
Поток доставки – это базовая сущность сервиса Kinesis Data Firehose. Сервис Firehose используется для создания потока доставки и отправке в него данных. Поток доставки Kinesis Data Firehose можно создать с помощью консоли Firehose или операции CreateDeliveryStream. Подробнее см. в разделе Создании потока доставки.
Вопрос. Что такое запись в Kinesis Data Firehose?
Запись – это значимая единица данных, которые источник отправляет в поток доставки. Максимальный размер записи (до кодирования по схеме Base64) составляет 1024 КБ.
Вопрос. Какие лимиты действуют для Kinesis Data Firehose?
Информацию о лимитах см. в разделе Лимиты Amazon Kinesis Data Firehose руководства для разработчиков.
Источники данных
Вопрос. Какие языки программирования или платформы можно использовать для работы с API Kinesis Data Firehose?
API Kinesis Data Firehose доступны в пакетах SDK Amazon Web Services. Перечень языков и платформ программирования, поддерживаемых SDK Amazon Web Services, см. на странице Инструменты для работы с Amazon Web Services.
Вопрос. Что такое агент Amazon Kinesis?
Агент Kinesis – это готовое приложение Java, позволяющее легко собирать и отправлять данные в поток доставки. Этот агент можно устанавливать в серверных средах Linux, включая веб‑серверы, серверы журналов или баз данных. Агент выполняет мониторинг определенных файлов и непрерывно отправляет данные в поток доставки. В настоящее время агент Amazon Kinesis поддерживает Amazon Linux, Red Hat Enterprise Linux и Microsoft Windows. Дополнительную информацию см. на странице Запись с помощью агентов.
Вопрос. Как загрузить агент Amazon Kinesis?
Чтобы загрузить и установить агент 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
- В Windows: https://docs.aws.amazon.com/kinesis-agent-windows/latest/userguide/getting-started.html#getting-started-installation
Вопрос. В чем разница между операциями PutRecord и PutRecordBatch?
Добавить данные в поток доставки Kinesis Data Firehose можно с помощью агента Kinesis или операций PutRecord и PutRecordBatch сервиса Firehose. Операция PutRecord позволяет одним вызовом API добавить одну запись данных, а операция PutRecordBatch позволяет одним вызовом API добавить несколько записей данных. Дополнительную информацию см. в разделах PutRecord и PutRecordBatch.
Вопрос. Как добавить данные в поток доставки Kinesis Data Firehose из потока Kinesis Data Stream?
При создании или обновлении потока доставки данных через консоль AWS или API Firehose можно настроить Kinesis Data Stream в качестве источника потока доставки. После настройки Firehose будет автоматически считывать данные из Kinesis Data Stream и загружать их в указанные места назначения.
Вопрос. Как часто Kinesis Data Firehose считывает данные из потока Kinesis?
Kinesis Data Firehose выполняет вызов GetRecords() к Kinesis Data Streams один раз в секунду для каждого сегмента Kinesis.
Вопрос. С какого момента Kinesis Data Firehose начинает считывать данные, если настроить поток Kinesis как источник потока доставки данных?
Если поток Kinesis Data Stream настроен как источник потока доставки данных, Kinesis Data Firehose начинает считывать данные с самой ПОСЛЕДНЕЙ позиции потока. Для получения дополнительной информации о позиции в Kinesis Data Stream см. раздел GetShardIterator в справочнике по API сервиса Kinesis Data Streams.
Вопрос. Можно ли настроить поток данных Kinesis в качестве источника для нескольких потоков доставки данных Kinesis Data Firehose?
Да, можно. Однако имейте в виду, что вызов GetRecords() от Kinesis Data Firehose учитывается при сравнении параметров потока с установленными лимитами для сегмента Kinesis, поэтому следует планировать работу потока доставки данных с учетом других приложений Kinesis, чтобы убедиться, что лимиты не превышены. Дополнительную информацию см. в разделе Kinesis Data Streams Limits руководства для разработчиков Kinesis Data Streams.
Вопрос. Можно ли добавить данные в поток доставки с помощью агента Kinesis или операций Firehose PutRecord и PutRecordBatch, если в качестве источника настроен поток Kinesis Data Stream?
Нет, нельзя. Если в качестве источника потока доставки Kinesis Data Firehose настроен поток Kinesis Data Stream, операции PutRecord и PutRecordBatch сервиса Firehose отключаются. Добавлять данные в поток Kinesis Data Stream следует через операции PutRecord и PutRecords сервиса Kinesis Data Streams.
Вопрос. Как добавить в поток доставки данные сервиса AWS IoT?
Добавление в поток доставки данных из AWS IoT выполняется созданием действия AWS IoT, с помощью которого события отправляются в поток доставки данных. Подробнее См. раздел Запись в Amazon Kinesis Data Firehose с использованием AWS IoT руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос: Как я могу передавать журналы потоков VPC в Firehose?
При создании или обновлении потока доставки через консоль AWS или API Firehose вы можете настроить Direct PUT в качестве источника потока доставки. После создания потока вы можете настроить созданный поток Firehose в качестве потока доставки в разделе Vended Logs консоли VPC Flow logs.
Вопрос. Как добавить в поток доставки данные журналов CloudWatch Logs?
Добавить данные журналов CloudWatch Logs в поток доставки Kinesis Data Firehose можно, создав фильтр подписки на журналы CloudWatch Logs, который отправляет события в поток доставки. Дополнительную информацию см. в разделе Использование фильтров подписки на журналы CloudWatch Logs руководства пользователя Amazon CloudWatch.
Вопрос. Как добавить в поток доставки Kinesis Data Firehose данные CloudWatch Events?
Чтобы добавить в поток доставки Kinesis Data Firehose данные CloudWatch Events, требуется создать правило CloudWatch Events с потоком доставки в качестве целевого объекта. Дополнительную информацию см. в разделе Запись в Amazon Kinesis Data Firehose с использованием CloudWatch Events руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос Как добавить в поток доставки Amazon Kinesis Data Firehose данные AWS Eventbridge?
Добавить данные в поток доставки Kinesis Data Firehose можно с помощью консоли AWS EventBridge. Дополнительные сведения см. в документации по AWS EventBridge.
Вопрос. Какие типы шифрования можно использовать?
Kinesis Data Firehose позволяет шифровать данные после доставки в корзину Amazon S3. При создании потока доставки можно настроить шифрование данных с помощью принадлежащего пользователю ключа AWS Key Management Service (KMS). Дополнительные сведения о KMS см. на странице AWS Key Management Service.
Вопрос. Что такое роль IAM, которую необходимо указать при создании потока доставки?
Kinesis Data Firehose применяет указанную роль IAM для доступа к ресурсам, таким как корзина Amazon S3 или домен Amazon OpenSearch. Подробнее см. в разделе Управление доступом с помощью Kinesis Data Firehose руководства для разработчиков Kinesis Data Firehose.
Преобразование данных и форматов
Вопрос. Как подготовить и преобразовать необработанные данные в Kinesis Data Firehose?
Kinesis Data Firehose может преобразовать необработанные данные или данные Json в форматы, необходимые для целевых хранилищ данных (например, Apache Parquet и Apache ORC), без необходимости создания собственных конвейеров обработки данных. С помощью Kinesis Data Firehose вы можете динамически разделять данные потоковой передачи перед их доставкой в S3 с помощью статически или динамически определенных ключей, например «customer_id» или «transaction_id». Kinesis Data Firehose группирует данные по этим ключам и доставляет их в уникальные префиксы S3, что упрощает выполнение высокопроизводительного и экономичного анализа в S3 с помощью Athena, EMR и Redshift Spectrum.
В дополнение к встроенной функции конвертации формата данных в Amazon Kinesis Data Firehose вы также можете использовать функцию AWS Lambda для подготовки и преобразования необработанных входных данных в потоке доставки перед их загрузкой в места назначения. Настроить функцию AWS Lambda для преобразования данных можно при создании нового потока доставки или при изменении существующего потока доставки. Amazon создал несколько версий Lambda, так что вы можете выбрать ту, что подходит вам для быстрого старта. Полный список см. в руководстве для разработчиков Amazon Kinesis Data Firehose.
Вопрос. Какой формат сжатия можно использовать?
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 см. в разделе Фильтры подписки с использованием Amazon Kinesis Data Firehose руководства для пользователей Amazon CloudWatch Logs.
Вопрос. Как вернуть подготовленные и преобразованные данные из функции 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 и доставкой данных, в журналах Amazon CloudWatch Logs, поэтому при сбое вызова функции Lambda или доставки в журналах можно посмотреть, какая именно ошибка произошла. Дополнительную информацию см. в разделе Мониторинг с помощью Amazon CloudWatch Logs.
Вопрос. Что такое резервное копирование исходных записей?
Если используется преобразование данных с помощью Lambda, можно включить резервное копирование исходных записей, после чего сервис Amazon Kinesis Data Firehose будет сохранять входные данные (до преобразования) в отдельную корзину S3. Можно указать для этих записей дополнительный префикс, который будет добавляться перед префиксом времени UTC в формате «ГГГГ/ММ/ДД/ЧЧ», генерируемым Firehose.
Встроенное преобразование данных для Amazon S3
Вопрос. Когда следует использовать динамическое разделение Kinesis Data Firehose?
Динамическое разделение Kinesis Data Firehose устраняет сложности и задержки, связанные с ручным разделением в источнике или после сохранения данных, а также обеспечивает более быструю аналитику для запросов, касающихся оптимизированных наборов данных. Благодаря этому наборы данных немедленно становятся доступными для инструментов аналитики для эффективного выполнения запросов, а контроль доступа к данным становится жестче. Например, клиенты, занимающиеся автоматизацией маркетинга, могут на ходу разделять данные по идентификаторам клиентов, что позволяет конкретным клиентам запрашивать оптимизированные наборы данных и быстрее получать результаты. Клиенты, занимающиеся ИТ-операциями или мониторингом безопасности, могут создавать группы на основе меток времени событий, встроенных в журналы, чтобы иметь возможность запрашивать оптимизированные наборы данных и быстрее получать результаты. Эта функция в сочетании с существующей функцией Amazon Kinesis Data Firehose для преобразования формата JSON в Parquet делает Amazon Kinesis Data Firehose идеальным вариантом потокового ETL для S3.
Вопрос. Как настроить динамическое разделение в Kinesis Data Firehose?
Настроить динамическое разделение данных в Kinesis Data Firehose можно с помощью консоли управления AWS, CLI или SDK. После создания или обновления потока доставки Kinesis Data Firehose выберите Amazon S3 в качестве места доставки для потока доставки и включите динамическое разделение. Вы можете указать ключи или создать выражение, которое будет оцениваться во время работы для определения ключей, используемых для разделения. Например, вы можете выбрать поле данных в потоке входящих данных, таких как ID пользователя, и определить выражение префикса S3, например customer_id=!{partitionKey:customer_id}/, которое будет оцениваться во время работы на основе полученных записей, чтобы определить, для каких префиксов S3 доставляются записи.
Вопрос. Какие виды преобразований и обработки данных можно выполнять с помощью динамического разделения и ключей для разделения?
Kinesis Data Firehose поддерживает преобразование форматов Parquet и Orc без предварительной настройки при записи данных в Amazon S3. Kinesis Data Firehose также имеет встроенную функцию Lambda, поэтому вы можете написать свой код для преобразования. Кроме того, с помощью Kinesis Data Firehose можно извлекать ключевые поля данных из записей в формате JSON. Kinesis Data Firehose также поддерживает язык синтаксического анализа JQ для преобразования этих ключей для разделения. Дополнительную информацию см. в руководстве для разработчиков Kinesis Data Firehose.
Доставка данных и места назначения
Вопрос. Можно ли сохранять в корзине S3 копию всех необработанных данных?
Да. Сервис Kinesis Data Firehose может создавать резервную копию всех непреобразованных записей в корзине S3 параллельно с доставкой преобразованных записей в целевые объекты. Резервное копирование исходной записи можно включить при создании или обновлении потока доставки.
Вопрос. Как часто Kinesis Data Firehose доставляет данные в корзину Amazon S3?
Частота доставки данных в Amazon S3 определяется значениями размера и интервала буфера корзины S3, настроенными для потока доставки. Прежде чем доставить входящие данные в Amazon S3, Kinesis Data Firehose выполняет их буферизацию. Можно настроить размер буфера корзины S3 (от 1 до 128 МБ) или интервал буферизации (от 60 до 900 секунд), в результате условие, выполненное первым, будет инициировать доставку данных в Amazon S3. Если включено динамическое разделение данных Apache Parquet, размер буфера определяется в МБ в диапазоне от 64 МБ до 128 МБ для места назначения Amazon S3 при значении по умолчанию 128 МБ. Обратите внимание: в том случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Kinesis Data Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект.
Вопрос. Каким образом вычисляется размер буфера, если выполняется сжатие данных?
Размер буфера вычисляется до сжатия данных. В результате, если данные будут сжаты, размер объектов в корзине Amazon S3 может оказаться меньше заданного размера буфера.
Вопрос. Какие права нужны пользователю 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 см. в разделе Предоставление Firehose доступа к сервису Amazon Redshift в качестве целевого объекта руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос: Зачем указывать корзину Amazon S3, если в качестве целевого объекта используется Amazon Redshift?
Если в качестве целевого объекта выбран сервис Amazon Redshift, Amazon Kinesis Data Firehose доставляет данные сначала в корзину Amazon S3, а затем исполняет команду Redshift COPY для загрузки данных из корзины S3 в кластер Redshift.
Вопрос. Что такое Amazon OpenSearch Service (преемник Amazon Elasticsearch Service)?
Amazon OpenSearch Service упрощает интерактивный анализ журналов, мониторинг приложений в режиме реального времени, поиск на веб-сайтах и многие другие процессы. OpenSearch – это комплект с открытым исходным кодом для распределенного поиска и аналитики, созданный на базе Elasticsearch. В Amazon OpenSearch Service включены последние версии OpenSearch, поддержка 19 версий Elasticsearch (от версии 1.5 до 7.10) и возможности визуализации на базе панелей OpenSearch и Kibana (версии от 1.5 до 7.10). Щелкните здесь, чтобы получить дополнительную информацию об Amazon OpenSearch.
Вопрос. Что такое ротация индекса при использовании в качестве целевого объекта Amazon OpenSearch Service?
Kinesis Data Firehose может выполнять ротацию индекса Amazon OpenSearch Service на основе интервалов времени. Интервал времени можно настроить при создании потока доставки. Подробнее см. в разделе Ротация индекса для Amazon OpenSearch Destination руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос. Зачем указывать корзину Amazon S3, если в качестве целевого объекта используется Amazon OpenSearch Service?
При загрузке данных в Amazon OpenSearch Service Kinesis Data Firehose может создавать резервную копию всех данных или только тех данных, которые не удалось доставить. Чтобы воспользоваться этой возможностью и предотвратить потерю данных, необходимо выделить корзину Amazon S3 для резервного копирования.
Вопрос: Можно ли изменять конфигурацию потока доставки после его создания?
Конфигурацию потока доставки после его создания можно менять в любое время. Это можно делать с помощью консоли Firehose или операции UpdateDestination. В процессе обновления конфигурации поток доставки будет оставаться в АКТИВНОМ состоянии, что позволяет продолжать отправку данных в поток доставки. Обновленные конфигурации обычно вступают в действие в течение нескольких минут.
При доставке в пункт назначения VPC можно изменить URL-адрес конечной точки пункта назначения, если новый пункт назначения доступен в тех же VPC, подсетях и группах безопасности. Чтобы изменить VPC, подсети и группы безопасности, необходимо повторно создать поток доставки Firehose.
Вопрос. Можно ли использовать поток доставки Kinesis Data Firehose в одном аккаунте, чтобы доставить данные в пункт назначения VPC домена сервиса Amazon OpenSearch Service в другом аккаунте?
Нет. Поток доставки Kinesis Data Firehose и целевой домен сервиса Amazon OpenSearch Service должны находиться в одном аккаунте.
Вопрос. Можно ли использовать поток доставки Kinesis Data Firehose в одном регионе, чтобы доставить данные в пункт назначения VPC домена сервиса Amazon OpenSearch Service в другом регионе?
Нет. Поток доставки Kinesis Data Firehose и целевой домен сервиса Amazon OpenSearch Service должны находиться в одном регионе.
Вопрос. Как часто сервис Kinesis Data Firehose доставляет данные в домен Amazon OpenSearch?
Частота доставки данных в Amazon OpenSearch Service определяется значениями размера и интервала буфера OpenSearch, заданными для потока доставки. Firehose выполняет буферизацию входящих данных, прежде чем выполнить их доставку в Amazon OpenSearch Service. При доставке в OpenSearch можно настроить размер буфера (от 1 до 100 МБ) или интервал буферизации (от 60 до 900 секунд), и условие, исполненное первым, будет инициировать передачу данных в Amazon OpenSearch Service. Обратите внимание: в том случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Amazon Kinesis Data Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект.
Вопрос. Зачем нужна папка manifests в корзине Amazon S3?
Если в качестве целевого объекта используется сервис Amazon Redshift, Amazon Kinesis Data Firehose создает файлы манифеста, чтобы выполнить пакетную загрузку объектов Amazon S3 в кластер Redshift. В папке manifests хранятся файлы манифеста, созданные Firehose.
Вопрос. В каком формате в корзине Amazon S3 хранится резервная копия документов OpenSearch?
Если используется режим «all documents», Amazon Kinesis Data Firehose объединяет несколько входящих записей (в зависимости от настроек буферизации для потока доставки), а затем передает их в корзину S3 как объект S3. Независимо от настроек режима резервного копирования, документы, при доставке которых произошел сбой, передаются в корзину S3 в определенном формате JSON, который предоставляет дополнительную информацию, например код ошибки и время попытки доставки. Дополнительную информацию см. в разделе Резервное копирование в Amazon S3 при использовании Amazon ES в качестве целевого объекта руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос: Можно ли с помощью одного потока доставки доставлять данные в несколько корзин Amazon S3?
В настоящее время поток доставки может доставлять данные только в одну корзину Amazon S3. Если необходимо доставлять данные в несколько корзин S3, можно создать несколько потоков доставки.
Вопрос: Можно ли с помощью одного потока доставки доставлять данные в несколько кластеров или таблиц Amazon Redshift?
В настоящее время поток доставки может доставлять данные только в один кластер и одну таблицу Amazon Redshift. Если необходимо доставлять данные в несколько кластеров или таблиц Amazon Redshift, можно создать несколько потоков доставки.
Вопрос. Можно ли с помощью одного потока доставки доставлять данные в несколько доменов или индексов Amazon OpenSearch Service?
В настоящее время поток доставки может доставлять данные только в один домен и один индекс Amazon OpenSearch Service. Если необходимо доставлять данные в несколько доменов и индексов Amazon OpenSearch, можно создать несколько потоков доставки.
Вопрос. Как сервис Amazon Kinesis Data Firehose доставляет данные в домен сервиса Amazon OpenSearch Service в VPC?
При включении сервиса Kinesis Data Firehose для доставки данных в пункт назначения в сервисе Amazon OpenSearch Service в VPC сервис Amazon Kinesis Data Firehose создает один или несколько эластичных сетевых интерфейсов нескольких аккаунтов (ENI) в VPC для каждой подсети по вашему выбору. Сервис Amazon Kinesis Data Firehose использует интерфейсы ENI для доставки данных в VPC. Количество ENI автоматически масштабируется в соответствии с требованиями сервиса.
Управление потоками доставки и устранение неполадок
Вопрос: Почему происходят пропуски при отправке данных в поток доставки Amazon Kinesis Data Firehose?
По умолчанию каждый поток доставки может принимать до 2000 транзакций в секунду, 5000 записей в секунду и 5 МБ данных в секунду. Эти пороговые значения можно легко увеличить, отправив форму запроса на повышение ограничений.
Вопрос. Почему появляются дублирующиеся записи в корзине Amazon S3, таблице Amazon Redshift, индексе Amazon OpenSearch или кластерах Splunk?
Сервис Amazon Kinesis Data Firehose использует при доставке данных принцип «не менее одного раза». В редких случаях (например, при тайм‑ауте запроса в момент попытки доставки данных) повторная попытка доставки данных сервисом Firehose может привести к возникновению дубликатов, если предыдущий запрос все‑таки завершился успешно.
Вопрос: Что происходит, если доставка данных в корзину Amazon S3 заканчивается сбоем?
Если источник данных размещен в Direct, а доставка данных в корзину Amazon S3 заканчивается сбоем, то Amazon Kinesis Data Firehose будет повторять попытки доставки каждые 5 секунд на протяжении необходимого времени (до 24 часов). Если проблема сохраняется по истечении 24‑часового периода времени, Amazon Kinesis Data Firehose удаляет данные.
Если источником данных является Kinesis Data Streams, а доставка данных в корзину Amazon S3 заканчивается сбоем, то Amazon Kinesis Data Firehose будет повторять попытки доставки каждые 5 секунд на протяжении времени, заданного в Kinesis Data Streams.
Вопрос. Что происходит, если доставка данных в кластер Amazon Redshift заканчивается сбоем?
Если доставка данных в кластер Amazon Redshift заканчивается сбоем, Amazon Kinesis Data Firehose повторяет попытки доставки каждые 5 минут на протяжении необходимого времени (до 120 минут). По истечении 120 минут Amazon Kinesis Data Firehose пропускает текущий пакет объектов S3, подготовленных для копирования, и переходит к следующему пакету. Информация о пропущенных объектах будет доставлена в корзину S3 в виде файла манифеста, сохраненного в папке ошибок; его можно использовать для последующей загрузки объектов вручную. Дополнительные сведения о копировании данных вручную с использованием файлов манифеста см. в разделе Определение файлов данных с помощью манифеста.
Вопрос: Что происходит, если доставка данных в домен Amazon OpenSearch заканчивается сбоем?
Если целевым объектом является Amazon OpenSearch Service, при создании потока доставки можно задать период повторных попыток в диапазоне от 0 до 7200 секунд. Если доставка данных в домен Amazon ES заканчивается сбоем, Amazon Kinesis Data Firehose повторяет попытки доставки в течение заданного периода времени. По истечении периода повторных попыток Amazon Kinesis Data Firehose пропускает текущий пакет данных и переходит к следующему пакету. Подробные сведения о пропущенных документах передаются в корзину S3 в папку opensearch_failed; ими можно воспользоваться для загрузки документов вручную.
Вопрос: Что происходит в случае сбоя во время преобразования данных?
При попытке сервиса Firehose вызвать функцию Lambda для преобразования данных возможны два варианта возникновения сбоя.
- В первом случае сбой при вызове функции возникает из‑за превышения времени ожидания сети или при достижении лимита вызовов функции Lambda. В подобных случаях возникновения сбоя сервис Firehose по умолчанию повторит вызов три раза, а затем пропустит этот конкретный пакет записей. Пропущенные записи обрабатываются как записи, обработка которых закончилась ошибкой. С помощью API CreateDeliveryStream и UpdateDeliveryStream можно настроить количество попыток вызова (от 0 до 300). Для подобных случаев возникновения сбоя можно также использовать функцию регистрации ошибок Firehose для передачи данных об ошибках в журналы CloudWatch. Дополнительную информацию см. в разделе Мониторинг с помощью Amazon CloudWatch Logs.
- Во втором случае сбой возникает, когда в результате преобразования записи при возвращении данных из функции Lambda устанавливается статус «ProcessingFailed». Firehose обрабатывает эти записи как записи, обработка которых закончилась ошибкой. В подобном случае возникновения сбоя можно использовать возможности журналов Lambda для передачи данных об ошибках в CloudWatch Logs. Подробнее см. в разделе Доступ к Amazon CloudWatch Logs для AWS Lambda.
В обоих случаях возникновения сбоя записи, обработка которых завершилась ошибкой, записываются в корзину S3 в папку processing_failed.
Вопрос: Почему размер доставленных объектов S3 превышает размер буфера, указанный в конфигурации потока доставки?
Размер доставленных объектов S3 в большинстве случаев должен отражать указанный размер буфера, если условие размера буфера удовлетворяется до того, как будет удовлетворено условие интервала буфера. Однако в случае, когда доставка данных в целевой объект отстает от записи в поток доставки, Firehose динамически увеличивает размер буфера, чтобы ликвидировать отставание и обеспечить доставку всех данных в целевой объект. В этом случае размер доставленных объектов S3 может быть больше указанного размера буфера.
Вопрос: Зачем нужна папка errors в корзине Amazon S3?
В папку errors попадают файлы манифеста с информацией об объектах S3, не загруженных в кластер Amazon Redshift из‑за возникновения сбоев. Эти объекты можно впоследствии загрузить вручную с помощью команды COPY сервиса Redshift. Дополнительные сведения о копировании данных вручную с использованием файлов манифеста см. в разделе Определение файлов данных с помощью манифеста.
Вопрос. Зачем нужна папка opensearch_failed в корзине Amazon S3?
В папке opensearch_failed хранятся документы, которые не удалось загрузить в Amazon OpenSearch. Что произойдет в случае сбоя доставки данных в домен Amazon OpenSearch? Эти документы можно переиндексировать для загрузки вручную.
Вопрос: Зачем нужна папка processing_failed в корзине Amazon S3?
В папке processing_failed хранятся записи, которые не удалось преобразовать с помощью функции AWS Lambda. Обработку этих записей можно повторить вручную.
Вопрос: Как отслеживать выполнение операций и производительность потока доставки Amazon Kinesis Data Firehose?
Консоль Firehose отображает основные метрики операций и производительности, например объем входящих данных и объем доставленных данных. К тому же сервис Amazon Kinesis Data Firehose интегрирован с метриками Amazon CloudWatch, что позволяет собирать, просматривать и анализировать метрики потоков доставки. Подробнее о метриках сервиса Amazon Kinesis Data Firehose см. в разделе Мониторинг с помощью метрик Amazon CloudWatch руководства по Amazon Kinesis Data Firehose для разработчиков.
Вопрос: Как отслеживать сбои при преобразовании и доставке данных потоком доставки Amazon Kinesis Data Firehose?
Сервис Amazon Kinesis Data Firehose интегрирован с Amazon CloudWatch Logs, поэтому при сбое преобразования или доставки данных можно посмотреть соответствующие журналы ошибок. При создании потока доставки можно включить регистрацию ошибок. Подробнее см. в разделе Мониторинг с помощью Amazon CloudWatch Logs руководства для разработчиков Amazon Kinesis Data Firehose.
Вопрос: Как управлять доступом к потоку доставки Amazon Kinesis Data Firehose?
Amazon Kinesis Data Firehose интегрирован с сервисом AWS Identity and Access Management, который позволяет безопасно управлять доступом пользователей к сервисам и ресурсам AWS. Например, можно создать политику, которая позволит только определенному пользователю или группе пользователей добавлять данные в поток доставки Firehose. Дополнительные сведения об управлении доступом к потоку и контроле такого доступа см. в разделе Управление доступом к Amazon Kinesis Data Firehose.
Вопрос: Как создать журналы вызовов API к потоку доставки Amazon Kinesis Data Firehose для анализа безопасности и решения операционных проблем?
Amazon Kinesis Data Firehose интегрирован с сервисом AWS CloudTrail, который записывает вызовы API AWS для определенного аккаунта и доставляет пользователю файлы журналов. Дополнительную информацию о регистрации вызовов API, а также список поддерживаемых API Amazon Kinesis Data Firehose см. в разделе Регистрация вызовов API Amazon Kinesis Data Firehose с помощью AWS CloudTrail.
Цены и оплата
Вопрос. Доступен ли сервис Kinesis Data Firehose на уровне бесплатного пользования AWS?
Нет. В настоящее время сервис Kinesis Data Firehose недоступен на уровне бесплатного пользования AWS. Уровень бесплатного пользования AWS – это программа, в рамках которой предлагается бесплатно воспользоваться пробной версией ряда сервисов AWS. Подробнее см. в разделе Уровень бесплатного пользования AWS.
Вопрос. Сколько стоит использование Kinesis Data Firehose?
В Kinesis Data Firehose вы платите только за используемые ресурсы. Сервис не предусматривает авансовой оплаты или минимальных стартовых взносов. Цены на Amazon Kinesis Data Firehose основаны на объеме данных (ГБ), поступающих в Firehose, с округлением каждой записи до ближайших 5 КБ для Direct PUT и потока данных Kinesis в качестве источников. Для Vended Logs в качестве источника ценообразование основано на объеме данных (ГБ), поступающих в Firehose. Дополнительные сведения о стоимости Amazon Kinesis Data Firehose см. на странице Цены на Amazon Kinesis Data Firehose.
Вопрос: Каким образом происходит округление до ближайшего значения, кратного 5 КБ, при использовании для отправки данных в Amazon Kinesis Data Firehose операции PutRecordBatch?
Округление до ближайшего значения, кратного 5 КБ, происходит на уровне записи, а не на уровне операций API. Например, если вызов PutRecordBatch содержит две записи по 1 КБ, объем данных для этого вызова составит 10 КБ (5 КБ на каждую запись)
Вопрос. Включены ли в стоимость Kinesis Data Firehose расходы на использование Amazon S3, Amazon Redshift, Amazon OpenSearch Service и AWS Lambda?
Нет. Расходы, связанные с использованием сервисов Amazon S3, Amazon Redshift, Amazon OpenSearch Service и AWS Lambda, в том числе стоимость хранилища и запросов, необходимо оплачивать отдельно. Дополнительную информацию см. на страницах Цены на Amazon S3, Цены на Amazon Redshift, Цены на Amazon OpenSearch 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