Справочник подключения к S3
Подключаемый модуль Elastic S3 — это подключаемый модуль для источников данных Amazon S3.
Справочник по управляемому подключаемому модулю Elastic
Просмотр справочника по управляемому подключаемому модулю Elastic
Доступность и предварительные требования
Этот подключаемый модуль доступен в Elastic Cloud начиная с версии 8.12.0. Для использования этого подключаемого модуля выполните все требования к управляемым подключаемым модулям.
Создание подключаемого модуля Amazon S3
Использование пользовательского интерфейса
Чтобы создать новый подключаемый модуль Amazon S3:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Подключаемые модули в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям, чтобы создать новый родной подключаемый модуль Amazon S3.
Дополнительные операции см. в Пользовательском интерфейсе подключаемых модулей в Kibana.
Использование API
Вы можете использовать Elasticsearch API для создания подключаемого модуля, чтобы создать новый родной подключаемый модуль Amazon S3.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
is_native=True,
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
is_native: true,
});
console.log(response); PUT _connector/my-s3-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Amazon S3",
"service_type": "s3",
"is_native": true
} Вам также потребуется создать ключ API для использования подключаемым модулем.
Пользователь нуждается в правах кластера manage_api_key, manage_connector и write_connector_secrets для программного создания ключей API.
Чтобы создать ключ API для подключаемого модуля:
-
Выполните следующую команду, заменив значения там, где это необходимо. Обратите внимание на
idиencodedзначения, возвращаемые из ответа:resp = client.security.create_api_key( name="my-connector-api-key", role_descriptors={ "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "my-connector-api-key", role_descriptors: { "my-connector-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "my-connector-api-key", "role_descriptors": { "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } -
Используйте значение
encodedдля хранения секрета подключаемого модуля и обратите внимание наidзначение, возвращаемое из этого ответа:resp = client.perform_request( "POST", "/_connector/_secret", headers={"Content-Type": "application/json"}, body={ "value": "encoded_api_key" }, ) print(resp)const response = await client.transport.request({ method: "POST", path: "/_connector/_secret", body: { value: "encoded_api_key", }, }); console.log(response);POST _connector/_secret { "value": "encoded_api_key" } -
Используйте ключ API
idи секрет подключаемого модуляidдля обновления подключаемого модуля:resp = client.connector.update_api_key_id( connector_id="my_connector_id>", api_key_id="API key_id", api_key_secret_id="secret_id", ) print(resp)const response = await client.connector.updateApiKeyId({ connector_id: "my_connector_id>", api_key_id: "API key_id", api_key_secret_id: "secret_id", }); console.log(response);PUT /_connector/my_connector_id>/_api_key_id { "api_key_id": "API key_id", "api_key_secret_id": "secret_id" }
Подробные сведения обо всех доступных API для подключаемых модулей см. в документации API Elasticsearch.
Использование
Чтобы использовать этот управляемый подключаемый модуль, см. Управляемые подключаемые модули Elastic.
Дополнительные операции см. в Пользовательском интерфейсе подключаемых модулей в Kibana.
Пользователям S3 также потребуется создать идентификатор IAM
Создание идентификатора IAM
Пользователи должны создать идентификатор IAM для использования этого подключаемого модуля как самостоятельно управляемого подключаемого модуля. Обратитесь к документации AWS.
Политика, связанная с идентификатором IAM, должна иметь следующие права AWS:
-
ListAllMyBuckets -
ListBucket -
GetBucketLocation -
GetObject
Совместимость
В настоящее время подключаемый модуль не поддерживает совместимые с S3 поставщики.
Конфигурация
Для настройки подключаемого модуля требуются следующие поля конфигурации:
- AWS Buckets
-
Список имен ведер S3.
*будет получать данные со всех ведер. Примеры:-
testbucket, prodbucket -
testbucket -
*
-
Это поле игнорируется при использовании расширенных правил синхронизации.
- AWS Access Key ID
- Идентификатор доступа AWS, который будет использоваться для доступа к ведрам.
- AWS Secret Key
- Секретный ключ доступа AWS, который будет использоваться для доступа к ведрам.
Документы и синхронизации
- Содержимое файлов размером более 10 МБ не будет извлекаться. (Самостоятельно управляемые подключаемые модули могут использовать сервис локального извлечения для обработки больших двоичных файлов.)
- Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Правила синхронизации
Основные правила синхронизации одинаковы для всех подключаемых модулей и доступны по умолчанию.
Расширенные правила синхронизации
Для вступления в силу расширенных правил синхронизации требуется полная синхронизация.
Расширенные правила синхронизации определяются с помощью JSON-фрагмента DSL, специфичного для источника.
Используйте расширенные правила синхронизации для фильтрации данных, которые необходимо извлечь из ведер Amazon S3. Они принимают следующие параметры:
-
bucket: Ведро S3, к которому применяется правило. -
extension(необязательно): Список типов файлов для синхронизации. По умолчанию синхронизируются все типы. -
prefix(необязательно): Строка префиксных символов. Подключаемый модуль будет извлекать данные о файлах и папках, которые соответствуют строке. По умолчанию""(синхронизирует все объекты ведра).
Примеры расширенных правил синхронизации
Рекурсивное извлечение файлов и папок по префиксу
Пример: Извлечь файлы/папки в folder1/docs.
[
{
"bucket": "bucket1",
"prefix": "folder1/docs"
}
] Пример: Извлечь файлы/папки, начинающиеся с folder1.
[
{
"bucket": "bucket2",
"prefix": "folder1"
}
] Извлечение файлов и папок с указанием расширений
Пример: Извлечь все объекты, начинающиеся с abc, а затем отфильтровать по расширениям файлов.
[
{
"bucket": "bucket2",
"prefix": "abc",
"extension": [".txt", ".png"]
}
] Извлечение содержимого
Известные проблемы
Для этого подключаемого модуля нет известных проблем.
См. Известные проблемы для проблем, влияющих на все подключаемые модули.
Устранение неполадок
См. Устранение неполадок.
Безопасность
См. Безопасность.
Фреймворк и источник
Этот подключаемый модуль создан с помощью фреймворка Elastic для подключаемых модулей.
Просмотреть исходный код этого подключаемого модуля (ветвь 8.17, совместимая с Elastic 8.17).
Справочник по самостоятельно управляемому подключаемому модулю
Ссылка на просмотр самоуправляемого подключения
Доступность и предварительные условия
Это подключение доступно в виде самоуправляемого самоуправляемого подключения. Это самоуправляемое подключение совместимо с версиями Elastic 8.6.0+. Чтобы использовать это подключение, выполните все требования к самоуправляемым подключениям.
Создание подключения к Amazon S3
Использование пользовательского интерфейса
Чтобы создать новое подключение к Amazon S3:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Подключения в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям для создания нового самоуправляемого подключения Amazon S3.
Использование API
Вы можете использовать Elasticsearch API для создания подключения для создания нового самоуправляемого подключения Amazon S3.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
});
console.log(response); PUT _connector/my-s3-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Amazon S3",
"service_type": "s3"
} Вам также потребуется создать ключ API для использования подключением.
Пользователю необходимы права кластера manage_api_key, manage_connector и write_connector_secrets для программного создания ключей API.
Чтобы создать ключ API для подключения:
-
Выполните следующую команду, заменив указанные значения. Обратите внимание на возвращаемые значения
encodedиз ответа:resp = client.security.create_api_key( name="connector_name-connector-api-key", role_descriptors={ "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "connector_name-connector-api-key", role_descriptors: { "connector_name-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "connector_name-connector-api-key", "role_descriptors": { "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } - Обновите свой файл
config.ymlс ключом APIencoded.
Обратитесь к документации API Elasticsearch для получения подробной информации обо всех доступных API подключения.
Использование
Чтобы использовать это подключение как самоуправляемое подключение, см. Самоуправляемые подключения.
Для дополнительных операций см. Интерфейс пользователя подключений в Kibana.
Пользователям S3 также потребуется создать идентификатор IAM
Создание идентификатора IAM
Пользователям необходимо создать идентификатор IAM для использования этого подключения как самоуправляемого подключения. Обратитесь к документации AWS.
Политика, связанная с идентификатором IAM, должна иметь следующие разрешения AWS:
-
ListAllMyBuckets -
ListBucket -
GetBucketLocation -
GetObject
Совместимость
В настоящее время подключение не поддерживает совместимые с S3 поставщиков.
Настройка
При использовании процесса самоуправляемого подключения эти поля будут использовать настройки по умолчанию, установленные в коде источника подключения. Эти настраиваемые поля будут отображаться с соответствующими метками в пользовательском интерфейсе Kibana. После подключения вы сможете обновить эти значения в Kibana.
Следующие поля настроек необходимы для настройки подключения:
-
buckets - Список имен ведер S3.
*будет получать данные со всех ведер. Примеры: -
testbucket, prodbucket -
testbucket -
*
Это поле игнорируется при использовании расширенных правил синхронизации.
-
aws_access_key_id - Идентификатор ключа доступа для идентификатора AWS, который будет использоваться для доступа к ведрам.
-
aws_secret_access_key - Секретный ключ доступа для идентификатора AWS, который будет использоваться для доступа к ведрам.
-
read_timeout -
read_timeoutдля Amazon S3. Значение по умолчанию —90. -
connect_timeout - Тайм-аут подключения для сканирования S3. Значение по умолчанию —
90. -
max_attempts - Максимальное количество попыток повтора. Значение по умолчанию —
5. -
page_size - Размер страницы для итерации объектов ведра в Amazon S3. Значение по умолчанию —
100.
Развертывание с помощью Docker
Вы можете развернуть подключение Amazon S3 как самоуправляемое подключение с помощью Docker. Следуйте этим инструкциям.
Шаг 1: Загрузка образца файла конфигурации
Загрузите образец файла конфигурации. Вы можете загрузить его вручную или выполнить следующую команду:
curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml
Не забудьте обновить значение аргумента --output, если имя вашей директории отличается или вы хотите использовать другое имя файла конфигурации.
Шаг 2: Обновление файла конфигурации для вашего самоуправляемого подключения
Обновите файл конфигурации следующими параметрами, чтобы он соответствовал вашей среде:
-
elasticsearch.host -
elasticsearch.api_key -
connectors
Если вы запускаете службу подключения к Docker-версии Elasticsearch и Kibana, ваш файл конфигурации будет выглядеть так:
# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>
connectors:
-
connector_id: <CONNECTOR_ID_FROM_KIBANA>
service_type: s3
api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead Использование elasticsearch.api_key является рекомендуемым методом аутентификации. Однако вы также можете использовать elasticsearch.username и elasticsearch.password для аутентификации с вашим экземпляром Elasticsearch.
Примечание: Вы можете изменить другие параметры по умолчанию, просто раскомментировав определенные параметры в файле конфигурации и изменив их значения.
Шаг 3: Запуск Docker-образа
Запустите Docker-образ со службой подключения с помощью следующей команды:
docker run \ -v ~/connectors-config:/config \ --network "elastic" \ --tty \ --rm \ docker.elastic.co/enterprise-search/elastic-connectors:8.17.3 \ /app/bin/elastic-ingest \ -c /config/config.yml
Обратитесь к DOCKER.md в репозитории elastic/connectors для получения дополнительной информации.
Найдите все доступные Docker-образы в официальном репозитории.
У нас также есть быстрый самоуправляемый вариант с использованием Docker Compose, позволяющий одновременно запустить все необходимые службы: Elasticsearch, Kibana и службу подключений. Обратитесь к этому README в репозитории elastic/connectors для получения дополнительной информации.
Документы и синхронизация
- Содержимое файлов размером более 10 МБ по умолчанию не будет извлекаться. Вы можете использовать самоуправляемую локальную службу извлечения для обработки больших бинарных файлов.
- Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Правила синхронизации
Основные правила синхронизации одинаковы для всех подключений и доступны по умолчанию.
Расширенные правила синхронизации
Для применения расширенных правил синхронизации требуется полная синхронизация.
Расширенные правила синхронизации определяются через специфичный для источника фрагмент JSON DSL.
Используйте расширенные правила синхронизации для фильтрации данных, подлежащих извлечению из ведер Amazon S3. Они принимают следующие параметры:
-
bucket: Ведро S3, к которому применяется правило. -
extension(необязательно): Список типов файлов для синхронизации. По умолчанию синхронизируются все типы. -
prefix(необязательно): Строка префиксных символов. Коннектор получит данные о файлах и папках, соответствующие строке. По умолчанию""(синхронизируются все объекты ведра).
Примеры расширенных правил синхронизации
Получение файлов и папок рекурсивно по префиксу
Пример: Получение файлов/папок в folder1/docs.
[
{
"bucket": "bucket1",
"prefix": "folder1/docs"
}
] Пример: Получение файлов/папок, начинающихся с folder1.
[
{
"bucket": "bucket2",
"prefix": "folder1"
}
] Получение файлов и папок, указав расширения
Пример: Получение всех объектов, начинающихся с abc, а затем фильтрация по расширениям файлов.
[
{
"bucket": "bucket2",
"prefix": "abc",
"extension": [".txt", ".png"]
}
] Извлечение содержимого
Конечное тестирование
Фреймворк коннекторов позволяет операторам запускать функциональные тесты на реальном источнике данных. Подробнее см. Тестирование коннекторов.
Для выполнения функционального теста для Amazon S3 коннектора с собственным управлением, выполните следующую команду:
make ftest NAME=s3
По умолчанию это будет использовать набор данных среднего размера. Для ускорения теста добавьте аргумент DATA_SIZE=small:
make ftest NAME=s3 DATA_SIZE=small
Известные проблемы
Для данного коннектора известных проблем нет.
См. Известные проблемы для проблем, влияющих на все коннекторы.
Поиск решения проблем
Безопасность
См. Безопасность.
Фреймворк и исходный код
Этот коннектор создан с использованием фреймворка коннекторов Elastic.
Посмотреть исходный код этого коннектора (ветвь 8.17, совместима с Elastic 8.17).
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/es-connectors-s3.html