Интеграция ClickHouse GCS в изолированный кластер AWS через проксиPython

Программы на Python
Ответить
Anonymous
 Интеграция ClickHouse GCS в изолированный кластер AWS через прокси

Сообщение Anonymous »

Мне нужна помощь с запросом ClickHouse, которому требуется доступ к данным Google Cloud Storage (GCS) из изолированной среды AWS. Вот подробное описание проблемы:
Текущая настройка
Среда : кластер AWS с воздушным зазором.
Прокси: собственный прокси-сервер Golang, работающий на экземпляре EC2 с доступом в Интернет< /p>
Прокси Конфигурация: HTTPS_PROXY=http://10.0.x.x:8080
Запрос
Мы пытаемся выполнить следующий запрос ClickHouse, чтобы вставить данные из сегмента GCS:
INSERT INTO my_clickhouse_table (
column_1, column_2, column_3 ... column_n
)
SELECT
column_1, column_2, column_3 ... column_n

FROM gcs(
'https://storage.googleapis.com/test_buc ... 82.parquet',
'access_key_id',
'secret_access_key'
)

Проблема
Хотя конфигурация прокси работает для создания клиентов BigQuery и GCS в приложениях на основе Python внутри модуля , происходит сбой при выполнении вышеуказанного запроса ClickHouse. Запрос не может получить доступ к сегменту GCS. Вызов API https://storage.googleapis.com не проходит через прокси-сервер и блокируется.
Требование
Мой запрос должен быть выполнен и получить данные из файла GCS. Поскольку это защищенная среда, связь https://storage.googleapis.com должна осуществляться через прокси.
Нужны ли какие-либо конкретные настройки или конфигурации в ClickHouse для маршрутизации запросов GCS через прокси-сервер? ? Я не смог найти ничего в документе.
Вот ссылка из документа, которая бесполезна в приведенном выше сценарии:
Поддержка HTTP-прокси
ClickHouse Connect добавляет базовую поддержку HTTP-прокси с использованием библиотеки urllib 3
. Он распознает стандартные переменные среды HTTP_PROXY и HTTPS_PROXY
. Обратите внимание, что использование этих переменных среды
будет применяться к любому клиенту, созданному с помощью метода
clickhouse_connect.get_client. В качестве альтернативы, чтобы настроить
клиент, вы можете использовать аргументы http_proxy или https_proxy` метода
get_client. Подробную информацию о реализации поддержки HTTP-прокси
см. в документации urllib3.

Ссылка: https://clickhouse.com/docs/ en/integrations/python#http-proxy-support

В AWS (с воздушным зазором — нет внешнего доступа в Интернет, но есть доступ через прокси):
Приложение в модуле K8S
Сервер Clickhouse в настройке K8S
В GCP :
Корзина GCS, в которой находятся данные.
Случай использования — получение данных из этой области. GCS в Clickhouse через прокси

Я также пробовал использовать приведенный ниже код, но он не сработал:
ch_client = clickhouse_connect.get_client(
host = 'localhost',
port = 8123,
username = 'default',
password = '',
http_proxy='http://10.0.x.x:8080',
https_proxy='http://10.0.x.x:8080'
)

query = """
select * FROM
gcs('https://storage.googleapis.com/test_buc ... der/16-01-
2025_18:08:35/data-127823782.parquet', 'access-key', 'secret-key')
"""

result = ch_client.query(query)

Также пробовал установить переменную env, но безрезультатно.
os.environ['HTTPS_PROXY'] = "http://10.0.x.x:8080"


Подробнее здесь: https://stackoverflow.com/questions/793 ... -via-proxy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»