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