Todos os tipos de ClickPipes podem ser criados, atualizados e excluídos programaticamente usando a OpenAPI do ClickHouse Cloud. Esta página aborda a autenticação e os endpoints disponíveis do ClickPipes, com exemplos de requisições curl para cada tipo de ClickPipe.
Autenticação
A API do ClickHouse Cloud usa autenticação Basic por HTTP. Você precisa de uma API key (ID da key + segredo da key) com permissões no serviço de destino. Consulte Gerenciando API keys para obter instruções sobre como criar uma.
Configure as seguintes variáveis de ambiente antes de executar qualquer um dos exemplos abaixo:
export KEY_ID=<your_key_id>
export KEY_SECRET=<your_key_secret>
export ORG_ID=<your_organization_id>
export SERVICE_ID=<your_service_id>URL base
https://api.clickhouse.cloud/v1Endpoints
Todos os endpoints do ClickPipes são vinculados a um serviço do ClickHouse Cloud:
| Método | Caminho | Descrição |
|---|---|---|
GET |
/organizations/{organizationId}/services/{serviceId}/clickpipes |
Listar todos os ClickPipes |
POST |
/organizations/{organizationId}/services/{serviceId}/clickpipes |
Criar um ClickPipe |
GET |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId} |
Obter um ClickPipe |
PATCH |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId} |
Atualizar um ClickPipe |
DELETE |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId} |
Excluir um ClickPipe |
GET |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/settings |
Obter as configurações do ClickPipe |
PUT |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/settings |
Atualizar as configurações do ClickPipe |
PATCH |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/scaling |
Atualizar a escala do ClickPipe |
PATCH |
/organizations/{organizationId}/services/{serviceId}/clickpipes/{clickPipeId}/state |
Atualizar o estado do ClickPipe (iniciar/parar) |
Para ClickPipes de CDC (Postgres, MySQL, MongoDB), há endpoints adicionais no nível da organização para a escala da infraestrutura compartilhada de CDC:
| Método | Caminho | Descrição |
|---|---|---|
GET |
/organizations/{organizationId}/clickpipes/cdcScaling |
Obter a escala dos ClickPipes de CDC |
PATCH |
/organizations/{organizationId}/clickpipes/cdcScaling |
Atualizar a escala dos ClickPipes de CDC |
Para ver os esquemas completos de solicitação e resposta de cada endpoint, consulte a referência da API.
Exemplos
Listar ClickPipes
curl -u "$KEY_ID:$KEY_SECRET" \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Obter um ClickPipe
CLICKPIPE_ID=<your_clickpipe_id>
curl -u "$KEY_ID:$KEY_SECRET" \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes/$CLICKPIPE_ID"Parar ou iniciar um ClickPipe
# Parar
curl -u "$KEY_ID:$KEY_SECRET" \
-X PATCH \
-H "Content-Type: application/json" \
-d '{"action": "stop"}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes/$CLICKPIPE_ID/state"
# Iniciar
curl -u "$KEY_ID:$KEY_SECRET" \
-X PATCH \
-H "Content-Type: application/json" \
-d '{"action": "start"}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes/$CLICKPIPE_ID/state"Excluir um ClickPipe
curl -u "$KEY_ID:$KEY_SECRET" \
-X DELETE \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes/$CLICKPIPE_ID"Criando ClickPipes
O corpo da solicitação POST /clickpipes varia conforme o tipo de origem. Os exemplos abaixo mostram a estrutura de cada tipo de ClickPipe suportado. Para consultar os esquemas JSON oficiais, consulte a referência da API.
Kafka
As seguintes fontes compatíveis com Kafka são suportadas: kafka, confluent, msk, azureeventhub, redpanda, warpstream.
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My Kafka ClickPipe",
"source": {
"kafka": {
"type": "confluent",
"format": "JSONEachRow",
"brokers": "broker.example.com:9092",
"topics": "my_topic",
"consumerGroup": "clickpipes-consumer-group",
"authentication": "PLAIN",
"credentials": {
"username": "my_user",
"password": "my_password"
}
}
},
"destination": {
"table": "my_table",
"managedTable": true,
"tableDefinition": {
"engine": { "type": "MergeTree" }
},
"columns": [
{ "name": "id", "type": "UInt64" },
{ "name": "message", "type": "String" },
{ "name": "timestamp", "type": "DateTime" }
]
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Amazon Kinesis
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My Kinesis ClickPipe",
"source": {
"kinesis": {
"format": "JSONEachRow",
"streamName": "my-stream",
"region": "us-east-1",
"iteratorType": "TRIM_HORIZON",
"authentication": "IAM_USER",
"accessKey": {
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretKey": "<secret_key>"
}
}
},
"destination": {
"table": "my_table",
"managedTable": true,
"tableDefinition": {
"engine": { "type": "MergeTree" }
},
"columns": [
{ "name": "id", "type": "UInt64" },
{ "name": "message", "type": "String" }
]
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Amazon S3
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My S3 ClickPipe",
"source": {
"objectStorage": {
"type": "s3",
"url": "https://my-bucket.s3.amazonaws.com/data/*.json",
"format": "JSONEachRow",
"authentication": "IAM_USER",
"accessKey": {
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretKey": "<secret_key>"
}
}
},
"destination": {
"table": "my_table",
"managedTable": true,
"tableDefinition": {
"engine": { "type": "MergeTree" }
},
"columns": [
{ "name": "id", "type": "UInt64" },
{ "name": "message", "type": "String" }
]
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Google Cloud Storage
serviceAccountKey deve ser o conteúdo codificado em base64 de um arquivo de chave JSON de uma conta de serviço do GCP.
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My GCS ClickPipe",
"source": {
"objectStorage": {
"type": "gcs",
"url": "gs://my-bucket/data/*.json",
"format": "JSONEachRow",
"authentication": "SERVICE_ACCOUNT",
"serviceAccountKey": "<base64_encoded_service_account_json>"
}
},
"destination": {
"table": "my_table",
"managedTable": true,
"tableDefinition": {
"engine": { "type": "MergeTree" }
},
"columns": [
{ "name": "id", "type": "UInt64" },
{ "name": "message", "type": "String" }
]
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Azure Blob Storage
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My Azure Blob ClickPipe",
"source": {
"objectStorage": {
"type": "azureblobstorage",
"azureContainerName": "my-container",
"path": "data/*.json",
"format": "JSONEachRow",
"authentication": "CONNECTION_STRING",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net"
}
},
"destination": {
"table": "my_table",
"managedTable": true,
"tableDefinition": {
"engine": { "type": "MergeTree" }
},
"columns": [
{ "name": "id", "type": "UInt64" },
{ "name": "message", "type": "String" }
]
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"Postgres CDC
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My Postgres CDC ClickPipe",
"source": {
"postgres": {
"host": "postgres.example.com",
"port": 5432,
"database": "mydb",
"credentials": {
"username": "postgres_user",
"password": "<password>"
},
"settings": {
"replicationMode": "cdc"
},
"tableMappings": [
{
"sourceSchemaName": "public",
"sourceTable": "users",
"targetTable": "public_users"
}
]
}
},
"destination": {
"database": "default"
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"CDC do MySQL
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My MySQL CDC ClickPipe",
"source": {
"mysql": {
"host": "mysql.example.com",
"port": 3306,
"credentials": {
"username": "mysql_user",
"password": "<password>"
},
"settings": {
"replicationMode": "cdc"
},
"tableMappings": [
{
"sourceSchemaName": "mydb",
"sourceTable": "orders",
"targetTable": "mydb_orders"
}
]
}
},
"destination": {
"database": "default"
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"CDC do MongoDB
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My MongoDB CDC ClickPipe",
"source": {
"mongodb": {
"uri": "mongodb+srv://cluster0.example.mongodb.net",
"readPreference": "secondaryPreferred",
"credentials": {
"username": "mongo_user",
"password": "<password>"
},
"settings": {
"replicationMode": "cdc"
},
"tableMappings": [
{
"sourceDatabaseName": "mydb",
"sourceCollection": "users",
"targetTable": "mydb_users"
}
]
}
},
"destination": {
"database": "default"
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"BigQuery
serviceAccountFile deve ser o conteúdo em base64 de um arquivo de chave JSON de uma conta de serviço do GCP.
curl -u "$KEY_ID:$KEY_SECRET" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "My BigQuery ClickPipe",
"source": {
"bigquery": {
"snapshotStagingPath": "gs://my-staging-bucket/staging/",
"credentials": {
"serviceAccountFile": "<base64_encoded_service_account_json>"
},
"settings": {
"replicationMode": "snapshot"
},
"tableMappings": [
{
"sourceDatasetName": "my_dataset",
"sourceTable": "my_table",
"targetTable": "my_bigquery_table"
}
]
}
},
"destination": {
"database": "default"
}
}' \
"https://api.clickhouse.cloud/v1/organizations/$ORG_ID/services/$SERVICE_ID/clickpipes"