Criação de uma tarefa de despejo
Função
Essa API é usada para criar uma tarefa de despejo.
Esta API está desatualizada e pode não ser mantida no futuro. Use a API descrita em Ativação do Smart Connect (instância de pagamento por uso).
Método de chamada
Para obter detalhes, consulte Como chamar uma API.
URI
POST /v2/{project_id}/connectors/{connector_id}/sink-tasks
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
project_id |
Sim |
String |
ID do projeto. Para obter detalhes, consulte Obtenção de um ID de projeto. |
connector_id |
Sim |
String |
ID de despejo da instância. Para obter detalhes, consulte Consulta de IDs de instância. |
Parâmetros de solicitação
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
source_type |
Sim |
String |
Tipo de dados de origem. Atualmente, apenas BLOB é suportado. |
task_name |
Sim |
String |
Nome de uma tarefa de despejo. |
destination_type |
Sim |
String |
Tipo de armazenamento. Atualmente, apenas OBS é suportado. |
obs_destination_descriptor |
Sim |
ObsDestinationDescriptor object |
Descrição do despejo. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
topics |
Sim |
String |
Nomes dos tópicos a serem despejados. Vários tópicos podem ser separados por vírgulas (,). Expressões regulares são suportadas. |
topics_regex |
Não |
String |
Expressão regular dos tópicos a serem descartados. Defina o parâmetro topics_regex ou o parâmetro topics. Não defina ambos. Não defina como ".*". |
consumer_strategy |
Sim |
String |
Deslocamento.
O valor padrão é latest. |
destination_file_type |
Sim |
String |
Formato do arquivo de despejo. Atualmente, apenas arquivos TXT são suportados. |
access_key |
Sim |
String |
ID da chave de acesso (AK). |
secret_key |
Sim |
String |
Chave de acesso secreta (SK). |
obs_bucket_name |
Sim |
String |
Nome do bucket do OBS usado para armazenar os dados. |
obs_path |
Não |
String |
Caminho do OBS. Este parâmetro pode ser deixado em branco por padrão. O valor pode conter no máximo 64 caracteres, incluindo letras, dígitos, sublinhados (_), hifens (-) e barras (/). Este parâmetro é deixado vazio por padrão. |
partition_format |
Sim |
String |
Estrutura de diretório do arquivo de objeto gravado no OBS. A estrutura de diretórios está no formato de yyyy/MM/dd/HH/mm (hora em que a tarefa de despejo foi criada).
NOTA:
Depois que os dados são despejados com sucesso, a estrutura do diretório de armazenamento é obs_bucket_path/file_prefix/partition_format. O fuso horário padrão é GMT+08:00. |
record_delimiter |
Não |
String |
Delimitador para o arquivo de despejo, que é usado para separar os dados do usuário que são gravados no arquivo de despejo. Intervalo de valores:
Valor padrão: newline (\n). |
deliver_time_interval |
Sim |
Integer |
Nenhum arquivo de pacote será gerado se não houver dados dentro de um segmento de tempo. Intervalo de valores: 30 a 900 Unidade: segundo.
NOTA:
Esse parâmetro é obrigatório se os dados de streaming forem despejados no OBS. |
Parâmetros de resposta
Código de status: 200
Parâmetro |
Tipo |
Descrição |
---|---|---|
task_id |
String |
ID da tarefa. |
Exemplo de solicitação
Criação de uma tarefa de despejo para despejar dados em topic-test para OBS
POST https://{endpoint}/v2/{project_id}/connectors/{connector_id}/sink-tasks { "source_type" : "BLOB", "task_name" : "obsTransfer-1122976956", "destination_type" : "OBS", "obs_destination_descriptor" : { "consumer_strategy" : "earliest", "destination_file_type" : "TEXT", "access_key" : "XXXXXXXXXXXXXXXXXXXX", "secret_key" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "obs_bucket_name" : "6666", "obs_path" : "obsTransfer-1122976956", "partition_format" : "yyyy/MM/dd/HH/mm", "record_delimiter" : "", "deliver_time_interval" : 300, "topics" : "topic-test" } }
Exemplo de resposta
Código de status: 200
Criação bem-sucedida de uma tarefa de despejo
{ "task_id" : "2962882a-386c-4c9d-bb59-3b4f55d82961" }
Código de exemplo do SDK
O código de exemplo do SDK é o seguinte.
Java
Criação de uma tarefa de despejo para despejar dados em topic-test para OBS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.kafka.v2.region.KafkaRegion; import com.huaweicloud.sdk.kafka.v2.*; import com.huaweicloud.sdk.kafka.v2.model.*; public class CreateSinkTaskSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); KafkaClient client = KafkaClient.newBuilder() .withCredential(auth) .withRegion(KafkaRegion.valueOf("<YOUR REGION>")) .build(); CreateSinkTaskRequest request = new CreateSinkTaskRequest(); CreateSinkTaskReq body = new CreateSinkTaskReq(); ObsDestinationDescriptor obsDestinationDescriptorbody = new ObsDestinationDescriptor(); obsDestinationDescriptorbody.withTopics("topic-test") .withConsumerStrategy(ObsDestinationDescriptor.ConsumerStrategyEnum.fromValue("earliest")) .withDestinationFileType(ObsDestinationDescriptor.DestinationFileTypeEnum.fromValue("TEXT")) .withAccessKey("XXXXXXXXXXXXXXXXXXXX") .withSecretKey("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") .withObsBucketName("6666") .withObsPath("obsTransfer-1122976956") .withPartitionFormat(ObsDestinationDescriptor.PartitionFormatEnum.fromValue("yyyy/MM/dd/HH/mm")) .withRecordDelimiter("") .withDeliverTimeInterval(300); body.withObsDestinationDescriptor(obsDestinationDescriptorbody); body.withDestinationType(CreateSinkTaskReq.DestinationTypeEnum.fromValue("OBS")); body.withTaskName("obsTransfer-1122976956"); body.withSourceType(CreateSinkTaskReq.SourceTypeEnum.fromValue("BLOB")); request.withBody(body); try { CreateSinkTaskResponse response = client.createSinkTask(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
Criação de uma tarefa de despejo para despejar dados em topic-test para OBS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkkafka.v2.region.kafka_region import KafkaRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkkafka.v2 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = __import__('os').getenv("CLOUD_SDK_AK") sk = __import__('os').getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = KafkaClient.new_builder() \ .with_credentials(credentials) \ .with_region(KafkaRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateSinkTaskRequest() obsDestinationDescriptorbody = ObsDestinationDescriptor( topics="topic-test", consumer_strategy="earliest", destination_file_type="TEXT", access_key="XXXXXXXXXXXXXXXXXXXX", secret_key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", obs_bucket_name="6666", obs_path="obsTransfer-1122976956", partition_format="yyyy/MM/dd/HH/mm", record_delimiter="", deliver_time_interval=300 ) request.body = CreateSinkTaskReq( obs_destination_descriptor=obsDestinationDescriptorbody, destination_type="OBS", task_name="obsTransfer-1122976956", source_type="BLOB" ) response = client.create_sink_task(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Criação de uma tarefa de despejo para despejar dados em topic-test para OBS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" kafka "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/kafka/v2/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := kafka.NewKafkaClient( kafka.KafkaClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateSinkTaskRequest{} obsPathObsDestinationDescriptor:= "obsTransfer-1122976956" recordDelimiterObsDestinationDescriptor:= "" obsDestinationDescriptorbody := &model.ObsDestinationDescriptor{ Topics: "topic-test", ConsumerStrategy: model.GetObsDestinationDescriptorConsumerStrategyEnum().EARLIEST, DestinationFileType: model.GetObsDestinationDescriptorDestinationFileTypeEnum().TEXT, AccessKey: "XXXXXXXXXXXXXXXXXXXX", SecretKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", ObsBucketName: "6666", ObsPath: &obsPathObsDestinationDescriptor, PartitionFormat: model.GetObsDestinationDescriptorPartitionFormatEnum().YYYY_MM_DD_HH_MM, RecordDelimiter: &recordDelimiterObsDestinationDescriptor, DeliverTimeInterval: int32(300), } request.Body = &model.CreateSinkTaskReq{ ObsDestinationDescriptor: obsDestinationDescriptorbody, DestinationType: model.GetCreateSinkTaskReqDestinationTypeEnum().OBS, TaskName: "obsTransfer-1122976956", SourceType: model.GetCreateSinkTaskReqSourceTypeEnum().BLOB, } response, err := client.CreateSinkTask(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
Código de status
Código de status |
Descrição |
---|---|
200 |
Uma tarefa de despejo foi criada com sucesso. |
Códigos de erro
Consulte Códigos de erro.