Help Center/ Log Tank Service/ API Reference/ APIs/ Log Transfer/ Creating a Log Transfer Task (New Version)
Updated on 2024-06-13 GMT+08:00

Creating a Log Transfer Task (New Version)

Function

This API is used to transfer logs to OBS, DIS, and DMS.

Calling Method

For details, see Calling APIs.

URI

POST /v2/{project_id}/transfers

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain a project ID, see Obtaining the Project ID, Account ID, Log Group ID, and Log Stream ID.

Minimum: 32

Maximum: 32

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token obtained from IAM. For details about how to obtain a user token, see Obtaining a User Token.

Minimum: 1000

Maximum: 2000

Content-Type

Yes

String

Set this parameter to application/json;charset=UTF-8.

Minimum: 30

Maximum: 30

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

log_group_id

Yes

String

Log group ID. Minimum length: 36 characters. Maximum length: 36 characters

Minimum: 36

Maximum: 36

log_streams

Yes

Array of LogStreams objects

Log stream list.

log_transfer_info

Yes

log_transfer_info object

Log transfer information.

Table 4 LogStreams

Parameter

Mandatory

Type

Description

log_stream_id

Yes

String

Log stream ID.

Minimum: 36

Maximum: 36

log_stream_name

No

String

Log stream name.

Table 5 log_transfer_info

Parameter

Mandatory

Type

Description

log_transfer_type

Yes

String

Log transfer type. You can transfer logs to OBS, DIS, and DMS.

log_transfer_mode

Yes

String

Log transfer mode. cycle indicates periodical transfer, and realTime indicates real-time transfer. cycle is available to OBS transfer tasks and realTime is available to DIS and DMS transfer tasks.

Enumeration values:

  • cycle

  • realTime

log_storage_format

Yes

String

Log transfer format. The value can be RAW or JSON. RAW indicates the raw log format, and JSON indicates the JSON format. JSON and RAW are supported for OBS and DIS transfer tasks, but only RAW is supported for DMS transfer tasks.

Enumeration values:

  • JSON

  • RAW

log_transfer_status

Yes

String

Log transfer status. The value can be ENABLE, DISABLE, or EXCEPTION. ENABLE indicates that log transfer is enabled, DISABLE indicates that log transfer is disabled, and EXCEPTION indicates that log transfer is abnormal.

Enumeration values:

  • ENABLE

  • DISABLE

  • EXCEPTION

log_agency_transfer

No

log_agency_transfer object

Information about delegated log transfer. This parameter is required if you transfer logs for another account.

log_transfer_detail

Yes

log_transfer_detail object

Log transfer details.

Table 6 log_agency_transfer

Parameter

Mandatory

Type

Description

agency_domain_id

Yes

String

Delegator account ID.

Minimum: 1

Maximum: 128

agency_domain_name

Yes

String

Delegator account name.

Minimum: 1

Maximum: 128

agency_name

Yes

String

Name of the agency created by the delegator.

Minimum: 1

Maximum: 128

agency_project_id

Yes

String

Project ID of the delegator.

Minimum: 32

Maximum: 32

be_agency_domain_id

Yes

String

Account ID of the delegated party (ID of the account that created the log transfer task).

Minimum: 1

Maximum: 128

be_agency_project_id

Yes

String

Project ID of the delegated party (project ID of the account that created the log transfer task).

Minimum: 32

Maximum: 32

Table 7 log_transfer_detail

Parameter

Mandatory

Type

Description

obs_period

Yes

Integer

Length of the transfer interval for an OBS transfer task. This parameter is required when you create an OBS transfer task. The log transfer interval is specified by the combination of the values of obs_period and obs_period_unit, and must be set to one of the following: 2 min, 5 min, 30 min, 1 hour, 3 hours, 6 hours, and 12 hours.

Enumeration values:

  • 1

  • 2

  • 3

  • 5

  • 6

  • 12

  • 30

obs_period_unit

Yes

String

Unit of the transfer interval for an OBS transfer task. This parameter is required when you create an OBS transfer task. The log transfer interval is specified by the combination of the values of obs_period and obs_period_unit, and must be set to one of the following: 2 min, 5 min, 30 min, 1 hour, 3 hours, 6 hours, and 12 hours.

Enumeration values:

  • min

  • hour

obs_bucket_name

Yes

String

OBS bucket name. This parameter is required when you create an OBS transfer task.

Minimum: 3

Maximum: 63

obs_encrypted_id

No

String

KMS key ID for an OBS transfer task. Required if encryption is enabled for the target OBS bucket.

Minimum: 36

Maximum: 36

obs_dir_pre_fix_name

No

String

Custom transfer path of an OBS transfer task. This parameter is optional.

Minimum: 1

Maximum: 64

obs_prefix_name

No

String

Transfer file prefix of an OBS transfer task. This parameter is optional.

Minimum: 1

Maximum: 64

obs_time_zone

No

String

Time zone for an OBS transfer task. For details, see Time Zone List for OBS Transfer. If this parameter is specified, obs_time_zone_id must also be specified.

obs_time_zone_id

No

String

ID of the time zone for an OBS transfer task. For details, see Time Zone List for OBS Transfer. If this parameter is specified, obs_time_zone must also be specified.

dis_id

No

String

DIS stream ID. This parameter is required when you create a DIS transfer task.

Minimum: 1

Maximum: 128

dis_name

No

String

DIS stream ID. This parameter is required when you create a DIS transfer task.

Minimum: 1

Maximum: 64

kafka_id

No

String

Kafka ID of a DMS transfer task. This parameter is required when you create a DMS transfer task. Before creating a DMS transfer task, register your Kafka instance with Kafka ID and Kafka topic first. For details, see Registering a DMS Kafka Instance.

kafka_topic

No

String

Kafka topic of a DMS transfer task. This parameter is required when you create a DMS transfer task. Before creating a DMS transfer task, register your Kafka instance with Kafka ID and Kafka topic first. For details, see Registering a DMS Kafka Instance.

obs_transfer_path

No

String

OBS bucket path, which is the log transfer destination.

obs_eps_id

No

String

Enterprise project ID of an OBS transfer task.

obs_encrypted_enable

No

Boolean

Whether OBS bucket encryption is enabled.

tags

No

Array of strings

If tag delivery is enabled, this field must contain the following host information: hostIP, hostId, hostName, pathFile, and collectTime. The common fields are logStreamName, regionName, logGroupName, and projectId, which are optional. The tag for enabling transfer is streamTag, which is optional.

Response Parameters

Status code: 200

Table 8 Response body parameters

Parameter

Type

Description

log_group_id

String

Log group ID.

Minimum: 36

Maximum: 36

log_group_name

String

Log group name.

Minimum: 1

Maximum: 64

log_streams

Array of log_streams objects

Log stream list.

log_transfer_id

String

Log transfer task ID.

Minimum: 36

Maximum: 36

log_transfer_info

log_transfer_info_RespBody object

Log transfer information.

Table 9 log_streams

Parameter

Type

Description

log_stream_id

String

Log stream ID.

Minimum: 36

Maximum: 36

log_stream_name

String

Log stream name.

Minimum: 1

Maximum: 64

Table 10 log_transfer_info_RespBody

Parameter

Type

Description

log_agency_transfer

log_agency_transfer object

Information about delegated log transfer. This parameter is returned for a delegated log transfer task.

log_create_time

Integer

Time when the log transfer task was created.

Minimum: 0

Maximum: 2147483647

log_storage_format

String

Log transfer format. The value can be RAW or JSON. RAW indicates the raw log format, and JSON indicates the JSON format. JSON and RAW are supported for OBS and DIS transfer tasks, but only RAW is supported for DMS transfer tasks.

Enumeration values:

  • JSON

  • RAW

log_transfer_detail

TransferDetail object

Log transfer details.

log_transfer_mode

String

Log transfer mode. cycle indicates periodical transfer, and realTime indicates real-time transfer. cycle is available to OBS transfer tasks and realTime is available to DIS and DMS transfer tasks.

Enumeration values:

  • cycle

  • realTime

log_transfer_status

String

Log transfer status. ENABLE indicates that log transfer is enabled, DISABLE indicates that log transfer is disabled, and EXCEPTION indicates that log transfer is abnormal.

Enumeration values:

  • ENABLE

  • DISABLE

  • EXCEPTION

log_transfer_type

String

Log transfer type. You can transfer logs to OBS, DIS, and DMS.

Enumeration values:

  • OBS

  • DIS

  • DMS

Table 11 log_agency_transfer

Parameter

Type

Description

agency_domain_id

String

Delegator account ID.

Minimum: 1

Maximum: 128

agency_domain_name

String

Delegator account name.

Minimum: 1

Maximum: 128

agency_name

String

Name of the agency created by the delegator.

Minimum: 1

Maximum: 128

agency_project_id

String

Project ID of the delegator.

Minimum: 32

Maximum: 32

be_agency_domain_id

String

Account ID of the delegated party (ID of the account that created the log transfer task).

Minimum: 1

Maximum: 128

be_agency_project_id

String

Project ID of the delegated party (project ID of the account that created the log transfer task).

Minimum: 32

Maximum: 32

Table 12 TransferDetail

Parameter

Type

Description

obs_period

Integer

Length of the transfer interval for an OBS transfer task. This parameter is required when you create an OBS transfer task. The log transfer interval is specified by the combination of the values of obs_period and obs_period_unit, and must be set to one of the following: 2 min, 5 min, 30 min, 1 hour, 3 hours, 6 hours, and 12 hours.

Enumeration values:

  • 1

  • 2

  • 3

  • 5

  • 6

  • 12

  • 30

obs_period_unit

String

Unit of the transfer interval for an OBS transfer task. This parameter is required when you create an OBS transfer task. The log transfer interval is specified by the combination of the values of obs_period and obs_period_unit, and must be set to one of the following: 2 min, 5 min, 30 min, 1 hour, 3 hours, 6 hours, and 12 hours.

Enumeration values:

  • "min"

  • "hour"

obs_bucket_name

String

OBS log bucket name. This parameter is required when you create an OBS transfer task. Minimum length: 3 characters. Maximum length: 63 characters.

Minimum: 3

Maximum: 63

obs_encrypted_id

String

KMS key ID for an OBS transfer task. Required if encryption is enabled for the target OBS bucket. Minimum length: 36 characters. Maximum length: 36 characters.

Minimum: 36

Maximum: 36

obs_dir_pre_fix_name

String

Custom transfer path of an OBS transfer task. This parameter is optional. The value must match the regular expression: ^(/)?([a-zA-Z0-9.-]+)(/[a-zA-Z0-9.-]+)*(/)?$ Minimum length: 1 character. Maximum length: 64 characters.

Minimum: 1

Maximum: 64

obs_prefix_name

String

Transfer file prefix of an OBS transfer task. This parameter is optional. The value must match the regular expression: ^[a-zA-Z0-9._-]*$ Minimum length: 1 character. Maximum length: 64 characters.

Minimum: 1

Maximum: 64

obs_time_zone

String

Time zone for an OBS transfer task (https://support.huaweicloud.com/intl/en-us/api-lts/lts_api_0111.html). If this parameter is specified, obs_time_zone_id must also be specified.

obs_time_zone_id

String

Time zone ID for an OBS transfer task (https://support.huaweicloud.com/intl/en-us/api-lts/lts_api_0111.html). For details, see Time Zone List for OBS Transfer. If this parameter is specified, obs_time_zone must also be specified.

dis_id

String

DIS stream ID. This parameter is required when you create a DIS transfer task. Minimum length: 1 character. Maximum length: 128 characters.

Minimum: 1

Maximum: 128

dis_name

String

DIS stream ID. This parameter is required when you create a DIS transfer task. Minimum length: 1 character. Maximum length: 128 characters.

Minimum: 1

Maximum: 128

kafka_id

String

Kafka ID of a DMS transfer task. This parameter is required when you create a DMS transfer task. Before creating a DMS transfer task, register your Kafka instance with Kafka ID and Kafka topic first. For details, see Registering a DMS Kafka Instance.

Minimum: 36

Maximum: 36

kafka_topic

String

Kafka topic of a DMS transfer task. Before creating a DMS transfer task, register your Kafka instance with Kafka ID and Kafka topic first. For details, see Registering a DMS Kafka Instance.

Minimum: 1

Maximum: 128

obs_transfer_path

String

OBS bucket path, which is the log transfer destination.

Minimum: 0

Maximum: 256

obs_eps_id

String

Enterprise project ID of an OBS transfer task.

Minimum: 0

Maximum: 128

obs_encrypted_enable

Boolean

Whether OBS bucket encryption is enabled.

Enumeration values:

  • true

  • false

tags

Array of strings

If tag delivery is enabled, this field must contain the following host information: hostIP, hostId, hostName, pathFile, and collectTime.

The common fields include logStreamName, regionName, logGroupName and projectId, which are optional.

The transfer tag streamTag is optional.

Status code: 400

Table 13 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

Minimum: 8

Maximum: 8

error_msg

String

Error message.

Status code: 500

Table 14 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

Minimum: 8

Maximum: 8

error_msg

String

Error message.

Example Requests

  • Transferring logs to OBS

    POST https://{endpoint}/v2/{project_id}/transfers
    
    {
      "log_group_id" : "8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx",
      "log_streams" : [ {
        "log_stream_id" : "c776e1a7-8548-430a-afe5-xxxxxxxxxxxx"
      } ],
      "log_transfer_info" : {
        "log_transfer_type" : "OBS",
        "log_transfer_mode" : "xxxxx",
        "log_storage_format" : "XXX",
        "log_transfer_status" : "XXXXX",
        "log_agency_transfer" : {
          "agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "agency_domain_name" : "paas_apm_z004xxxxx_xx",
          "agency_name" : "test20210325",
          "agency_project_id" : "2a473356cca5487f8373be891bfxxxxx",
          "be_agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "be_agency_project_id" : "2a473356cca5487f8373be891bfxxxxx"
        },
        "log_transfer_detail" : {
          "obs_period" : 2,
          "obs_period_unit" : "min",
          "obs_bucket_name" : "xxxxx",
          "obs_encrypted_id" : "1bd90032-1424-481f-8558-ba49854xxxxx",
          "obs_dir_pre_fix_name" : "xx",
          "obs_prefix_name" : "xxxxx",
          "obs_time_zone" : "UTC+01:00",
          "obs_time_zone_id" : "Africa/Lagos"
        }
      }
    }
  • Creating a DIS transfer task

    POST https://{endpoint}/v2/{project_id}/transfers
    
    {
      "log_group_id" : "8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx",
      "log_streams" : [ {
        "log_stream_id" : "c776e1a7-8548-430a-afe5-xxxxxxxxxxxx"
      } ],
      "log_transfer_info" : {
        "log_transfer_type" : "DIS",
        "log_transfer_mode" : "xxxxx",
        "log_storage_format" : "XXX",
        "log_transfer_status" : "XXXXX",
        "log_agency_transfer" : {
          "agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "agency_domain_name" : "paas_apm_z004xxxxx_xx",
          "agency_name" : "test20210325",
          "agency_project_id" : "2a473356cca5487f8373be891bfxxxxx",
          "be_agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "be_agency_project_id" : "2a473356cca5487f8373be891bfxxxxx"
        },
        "log_transfer_detail" : {
          "dis_id" : "i1y8vfMTvf4LQzxxxxx",
          "dis_name" : "xxxxx"
        }
      }
    }

Example Responses

Status code: 200

The log transfer task is created.

  • The following parameters are returned for an OBS transfer task:

    {
      "log_group_id" : "9a7e2183-2d6d-4732-9a9b-e897fd4e49e0",
      "log_group_name" : "lts-group-kafka",
      "log_streams" : [ {
        "log_stream_id" : "839dac89-35af-4db2-ab4a-a7dda0d0d3f8",
        "log_stream_name" : "lts-topic-kafka"
      } ],
      "log_transfer_id" : "ddced522-233a-4181-a5fc-7b458c819afc",
      "log_transfer_info" : {
        "log_create_time" : 1634802241847,
        "log_storage_format" : "JSON",
        "log_agency_transfer" : {
          "agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "agency_domain_name" : "paas_apm_z004xxxxx_xx",
          "agency_name" : "test20210325",
          "agency_project_id" : "2a473356cca5487f8373be891bfxxxxx",
          "be_agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "be_agency_project_id" : "2a473356cca5487f8373be891bfxxxxx"
        },
        "log_transfer_detail" : {
          "obs_period" : 2,
          "obs_prefix_name" : "",
          "obs_period_unit" : "min",
          "obs_transfer_path" : "/0002/LogTanks/cn-north-7/",
          "obs_bucket_name" : "0002",
          "obs_encrypted_enable" : false,
          "obs_dir_pre_fix_name" : "",
          "obs_time_zone" : "UTC+01:00",
          "obs_time_zone_id" : "Africa/Lagos",
          "tags" : [ ]
        },
        "log_transfer_mode" : "cycle",
        "log_transfer_status" : "ENABLE",
        "log_transfer_type" : "OBS"
      }
    }
  • The following parameters are returned for a DIS transfer task:

    {
      "log_group_id" : "9a7e2183-2d6d-4732-9a9b-e897fd4e49e0",
      "log_group_name" : "lts-group-kafka",
      "log_streams" : [ {
        "log_stream_id" : "839dac89-35af-4db2-ab4a-a7dda0d0d3f8",
        "log_stream_name" : "lts-topic-kafka"
      } ],
      "log_transfer_id" : "ddced522-233a-4181-a5fc-7b458c819afc",
      "log_transfer_info" : {
        "log_create_time" : 1634802241847,
        "log_storage_format" : "JSON",
        "log_agency_transfer" : {
          "agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "agency_domain_name" : "paas_apm_z004xxxxx_xx",
          "agency_name" : "test20210325",
          "agency_project_id" : "2a473356cca5487f8373be891bfxxxxx",
          "be_agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "be_agency_project_id" : "2a473356cca5487f8373be891bfxxxxx"
        },
        "log_transfer_detail" : {
          "dis_id" : "xxxxx",
          "dis_name" : "xxxxxx",
          "tags" : [ ]
        },
        "log_transfer_mode" : "cycle",
        "log_transfer_status" : "ENABLE",
        "log_transfer_type" : "OBS"
      }
    }
  • The following parameters are returned for a DMS transfer task:

    {
      "log_group_id" : "9a7e2183-2d6d-4732-9a9b-e897fd4e49e0",
      "log_group_name" : "lts-group-kafka",
      "log_streams" : [ {
        "log_stream_id" : "839dac89-35af-4db2-ab4a-a7dda0d0d3f8",
        "log_stream_name" : "lts-topic-kafka"
      } ],
      "log_transfer_id" : "ddced522-233a-4181-a5fc-7b458c819afc",
      "log_transfer_info" : {
        "log_create_time" : 1634802241847,
        "log_storage_format" : "JSON",
        "log_agency_transfer" : {
          "agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "agency_domain_name" : "paas_apm_z004xxxxx_xx",
          "agency_name" : "test20210325",
          "agency_project_id" : "2a473356cca5487f8373be891bfxxxxx",
          "be_agency_domain_id" : "1d26cc8c86a840e28a4f8d0d078xxxxx",
          "be_agency_project_id" : "2a473356cca5487f8373be891bfxxxxx"
        },
        "log_transfer_detail" : {
          "kafka_id" : "xxxxxx",
          "kafka_topic" : "xxxxx",
          "tags" : [ ]
        },
        "log_transfer_mode" : "cycle",
        "log_transfer_status" : "ENABLE",
        "log_transfer_type" : "OBS"
      }
    }

Status code: 400

Invalid request. Modify the request based on the description in error_msg before a retry.

{
  "error_code" : "LTS.0207",
  "error_msg" : "The log stream is associated by transfer"
}

Status code: 500

InternalServerError. The server has received the request but encountered an internal error.

{
  "error_code" : "LTS.0207",
  "error_msg" : "The log stream is associated by transfer"
}

SDK Sample Code

The SDK sample code is as follows.

  • Transferring logs to 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    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.lts.v2.region.LtsRegion;
    import com.huaweicloud.sdk.lts.v2.*;
    import com.huaweicloud.sdk.lts.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class CreateTransferSolution {
    
        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);
    
            LtsClient client = LtsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(LtsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateTransferRequest request = new CreateTransferRequest();
            CreateTransferRequestBody body = new CreateTransferRequestBody();
            TransferDetail logTransferDetailLogTransferInfo = new TransferDetail();
            logTransferDetailLogTransferInfo.withObsPeriod(TransferDetail.ObsPeriodEnum.NUMBER_2)
                .withObsEncryptedId("1bd90032-1424-481f-8558-ba49854xxxxx")
                .withObsPrefixName("xxxxx")
                .withObsPeriodUnit("min")
                .withObsBucketName("xxxxx")
                .withObsDirPreFixName("xx")
                .withObsTimeZone("UTC+01:00")
                .withObsTimeZoneId("Africa/Lagos");
            CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer logAgencyTransferLogTransferInfo = new CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer();
            logAgencyTransferLogTransferInfo.withAgencyDomainId("1d26cc8c86a840e28a4f8d0d078xxxxx")
                .withAgencyDomainName("paas_apm_z004xxxxx_xx")
                .withAgencyName("test20210325")
                .withAgencyProjectId("2a473356cca5487f8373be891bfxxxxx")
                .withBeAgencyDomainId("1d26cc8c86a840e28a4f8d0d078xxxxx")
                .withBeAgencyProjectId("2a473356cca5487f8373be891bfxxxxx");
            CreateTransferRequestBodyLogTransferInfo logTransferInfobody = new CreateTransferRequestBodyLogTransferInfo();
            logTransferInfobody.withLogTransferType("OBS")
                .withLogTransferMode(CreateTransferRequestBodyLogTransferInfo.LogTransferModeEnum.fromValue("xxxxx"))
                .withLogStorageFormat(CreateTransferRequestBodyLogTransferInfo.LogStorageFormatEnum.fromValue("XXX"))
                .withLogTransferStatus(CreateTransferRequestBodyLogTransferInfo.LogTransferStatusEnum.fromValue("XXXXX"))
                .withLogAgencyTransfer(logAgencyTransferLogTransferInfo)
                .withLogTransferDetail(logTransferDetailLogTransferInfo);
            List<CreateTransferRequestBodyLogStreams> listbodyLogStreams = new ArrayList<>();
            listbodyLogStreams.add(
                new CreateTransferRequestBodyLogStreams()
                    .withLogStreamId("c776e1a7-8548-430a-afe5-xxxxxxxxxxxx")
            );
            body.withLogTransferInfo(logTransferInfobody);
            body.withLogStreams(listbodyLogStreams);
            body.withLogGroupId("8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx");
            request.withBody(body);
            try {
                CreateTransferResponse response = client.createTransfer(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());
            }
        }
    }
    
  • Creating a DIS transfer task

     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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    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.lts.v2.region.LtsRegion;
    import com.huaweicloud.sdk.lts.v2.*;
    import com.huaweicloud.sdk.lts.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class CreateTransferSolution {
    
        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);
    
            LtsClient client = LtsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(LtsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateTransferRequest request = new CreateTransferRequest();
            CreateTransferRequestBody body = new CreateTransferRequestBody();
            TransferDetail logTransferDetailLogTransferInfo = new TransferDetail();
            logTransferDetailLogTransferInfo.withDisId("i1y8vfMTvf4LQzxxxxx")
                .withDisName("xxxxx");
            CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer logAgencyTransferLogTransferInfo = new CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer();
            logAgencyTransferLogTransferInfo.withAgencyDomainId("1d26cc8c86a840e28a4f8d0d078xxxxx")
                .withAgencyDomainName("paas_apm_z004xxxxx_xx")
                .withAgencyName("test20210325")
                .withAgencyProjectId("2a473356cca5487f8373be891bfxxxxx")
                .withBeAgencyDomainId("1d26cc8c86a840e28a4f8d0d078xxxxx")
                .withBeAgencyProjectId("2a473356cca5487f8373be891bfxxxxx");
            CreateTransferRequestBodyLogTransferInfo logTransferInfobody = new CreateTransferRequestBodyLogTransferInfo();
            logTransferInfobody.withLogTransferType("DIS")
                .withLogTransferMode(CreateTransferRequestBodyLogTransferInfo.LogTransferModeEnum.fromValue("xxxxx"))
                .withLogStorageFormat(CreateTransferRequestBodyLogTransferInfo.LogStorageFormatEnum.fromValue("XXX"))
                .withLogTransferStatus(CreateTransferRequestBodyLogTransferInfo.LogTransferStatusEnum.fromValue("XXXXX"))
                .withLogAgencyTransfer(logAgencyTransferLogTransferInfo)
                .withLogTransferDetail(logTransferDetailLogTransferInfo);
            List<CreateTransferRequestBodyLogStreams> listbodyLogStreams = new ArrayList<>();
            listbodyLogStreams.add(
                new CreateTransferRequestBodyLogStreams()
                    .withLogStreamId("c776e1a7-8548-430a-afe5-xxxxxxxxxxxx")
            );
            body.withLogTransferInfo(logTransferInfobody);
            body.withLogStreams(listbodyLogStreams);
            body.withLogGroupId("8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx");
            request.withBody(body);
            try {
                CreateTransferResponse response = client.createTransfer(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());
            }
        }
    }
    
  • Transferring logs to 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
    63
    64
    65
    66
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdklts.v2.region.lts_region import LtsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdklts.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = LtsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(LtsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateTransferRequest()
            logTransferDetailLogTransferInfo = TransferDetail(
                obs_period=2,
                obs_encrypted_id="1bd90032-1424-481f-8558-ba49854xxxxx",
                obs_prefix_name="xxxxx",
                obs_period_unit="min",
                obs_bucket_name="xxxxx",
                obs_dir_pre_fix_name="xx",
                obs_time_zone="UTC+01:00",
                obs_time_zone_id="Africa/Lagos"
            )
            logAgencyTransferLogTransferInfo = CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer(
                agency_domain_id="1d26cc8c86a840e28a4f8d0d078xxxxx",
                agency_domain_name="paas_apm_z004xxxxx_xx",
                agency_name="test20210325",
                agency_project_id="2a473356cca5487f8373be891bfxxxxx",
                be_agency_domain_id="1d26cc8c86a840e28a4f8d0d078xxxxx",
                be_agency_project_id="2a473356cca5487f8373be891bfxxxxx"
            )
            logTransferInfobody = CreateTransferRequestBodyLogTransferInfo(
                log_transfer_type="OBS",
                log_transfer_mode="xxxxx",
                log_storage_format="XXX",
                log_transfer_status="XXXXX",
                log_agency_transfer=logAgencyTransferLogTransferInfo,
                log_transfer_detail=logTransferDetailLogTransferInfo
            )
            listLogStreamsbody = [
                CreateTransferRequestBodyLogStreams(
                    log_stream_id="c776e1a7-8548-430a-afe5-xxxxxxxxxxxx"
                )
            ]
            request.body = CreateTransferRequestBody(
                log_transfer_info=logTransferInfobody,
                log_streams=listLogStreamsbody,
                log_group_id="8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx"
            )
            response = client.create_transfer(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Creating a DIS transfer task

     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
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdklts.v2.region.lts_region import LtsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdklts.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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
    
        credentials = BasicCredentials(ak, sk)
    
        client = LtsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(LtsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateTransferRequest()
            logTransferDetailLogTransferInfo = TransferDetail(
                dis_id="i1y8vfMTvf4LQzxxxxx",
                dis_name="xxxxx"
            )
            logAgencyTransferLogTransferInfo = CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer(
                agency_domain_id="1d26cc8c86a840e28a4f8d0d078xxxxx",
                agency_domain_name="paas_apm_z004xxxxx_xx",
                agency_name="test20210325",
                agency_project_id="2a473356cca5487f8373be891bfxxxxx",
                be_agency_domain_id="1d26cc8c86a840e28a4f8d0d078xxxxx",
                be_agency_project_id="2a473356cca5487f8373be891bfxxxxx"
            )
            logTransferInfobody = CreateTransferRequestBodyLogTransferInfo(
                log_transfer_type="DIS",
                log_transfer_mode="xxxxx",
                log_storage_format="XXX",
                log_transfer_status="XXXXX",
                log_agency_transfer=logAgencyTransferLogTransferInfo,
                log_transfer_detail=logTransferDetailLogTransferInfo
            )
            listLogStreamsbody = [
                CreateTransferRequestBodyLogStreams(
                    log_stream_id="c776e1a7-8548-430a-afe5-xxxxxxxxxxxx"
                )
            ]
            request.body = CreateTransferRequestBody(
                log_transfer_info=logTransferInfobody,
                log_streams=listLogStreamsbody,
                log_group_id="8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx"
            )
            response = client.create_transfer(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Transferring logs to 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        lts "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/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 := lts.NewLtsClient(
            lts.LtsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateTransferRequest{}
    	obsEncryptedIdLogTransferDetail:= "1bd90032-1424-481f-8558-ba49854xxxxx"
    	obsPrefixNameLogTransferDetail:= "xxxxx"
    	obsDirPreFixNameLogTransferDetail:= "xx"
    	obsTimeZoneLogTransferDetail:= "UTC+01:00"
    	obsTimeZoneIdLogTransferDetail:= "Africa/Lagos"
    	logTransferDetailLogTransferInfo := &model.TransferDetail{
    		ObsPeriod: model.GetTransferDetailObsPeriodEnum().E_2,
    		ObsEncryptedId: &obsEncryptedIdLogTransferDetail,
    		ObsPrefixName: &obsPrefixNameLogTransferDetail,
    		ObsPeriodUnit: "min",
    		ObsBucketName: "xxxxx",
    		ObsDirPreFixName: &obsDirPreFixNameLogTransferDetail,
    		ObsTimeZone: &obsTimeZoneLogTransferDetail,
    		ObsTimeZoneId: &obsTimeZoneIdLogTransferDetail,
    	}
    	logAgencyTransferLogTransferInfo := &model.CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer{
    		AgencyDomainId: "1d26cc8c86a840e28a4f8d0d078xxxxx",
    		AgencyDomainName: "paas_apm_z004xxxxx_xx",
    		AgencyName: "test20210325",
    		AgencyProjectId: "2a473356cca5487f8373be891bfxxxxx",
    		BeAgencyDomainId: "1d26cc8c86a840e28a4f8d0d078xxxxx",
    		BeAgencyProjectId: "2a473356cca5487f8373be891bfxxxxx",
    	}
    	logTransferInfobody := &model.CreateTransferRequestBodyLogTransferInfo{
    		LogTransferType: "OBS",
    		LogTransferMode: model.GetCreateTransferRequestBodyLogTransferInfoLogTransferModeEnum().XXXXX,
    		LogStorageFormat: model.GetCreateTransferRequestBodyLogTransferInfoLogStorageFormatEnum().XXX,
    		LogTransferStatus: model.GetCreateTransferRequestBodyLogTransferInfoLogTransferStatusEnum().XXXXX,
    		LogAgencyTransfer: logAgencyTransferLogTransferInfo,
    		LogTransferDetail: logTransferDetailLogTransferInfo,
    	}
    	var listLogStreamsbody = []model.CreateTransferRequestBodyLogStreams{
            {
                LogStreamId: "c776e1a7-8548-430a-afe5-xxxxxxxxxxxx",
            },
        }
    	request.Body = &model.CreateTransferRequestBody{
    		LogTransferInfo: logTransferInfobody,
    		LogStreams: listLogStreamsbody,
    		LogGroupId: "8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx",
    	}
    	response, err := client.CreateTransfer(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Creating a DIS transfer task

     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
    63
    64
    65
    66
    67
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        lts "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/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 := lts.NewLtsClient(
            lts.LtsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateTransferRequest{}
    	disIdLogTransferDetail:= "i1y8vfMTvf4LQzxxxxx"
    	disNameLogTransferDetail:= "xxxxx"
    	logTransferDetailLogTransferInfo := &model.TransferDetail{
    		DisId: &disIdLogTransferDetail,
    		DisName: &disNameLogTransferDetail,
    	}
    	logAgencyTransferLogTransferInfo := &model.CreateTransferRequestBodyLogTransferInfoLogAgencyTransfer{
    		AgencyDomainId: "1d26cc8c86a840e28a4f8d0d078xxxxx",
    		AgencyDomainName: "paas_apm_z004xxxxx_xx",
    		AgencyName: "test20210325",
    		AgencyProjectId: "2a473356cca5487f8373be891bfxxxxx",
    		BeAgencyDomainId: "1d26cc8c86a840e28a4f8d0d078xxxxx",
    		BeAgencyProjectId: "2a473356cca5487f8373be891bfxxxxx",
    	}
    	logTransferInfobody := &model.CreateTransferRequestBodyLogTransferInfo{
    		LogTransferType: "DIS",
    		LogTransferMode: model.GetCreateTransferRequestBodyLogTransferInfoLogTransferModeEnum().XXXXX,
    		LogStorageFormat: model.GetCreateTransferRequestBodyLogTransferInfoLogStorageFormatEnum().XXX,
    		LogTransferStatus: model.GetCreateTransferRequestBodyLogTransferInfoLogTransferStatusEnum().XXXXX,
    		LogAgencyTransfer: logAgencyTransferLogTransferInfo,
    		LogTransferDetail: logTransferDetailLogTransferInfo,
    	}
    	var listLogStreamsbody = []model.CreateTransferRequestBodyLogStreams{
            {
                LogStreamId: "c776e1a7-8548-430a-afe5-xxxxxxxxxxxx",
            },
        }
    	request.Body = &model.CreateTransferRequestBody{
    		LogTransferInfo: logTransferInfobody,
    		LogStreams: listLogStreamsbody,
    		LogGroupId: "8ba9e43f-be60-4d8c-9015-xxxxxxxxxxxx",
    	}
    	response, err := client.CreateTransfer(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

The log transfer task is created.

400

Invalid request. Modify the request based on the description in error_msg before a retry.

500

InternalServerError. The server has received the request but encountered an internal error.

Error Codes

See Error Codes.