Help Center/ Config/ API Reference/ APIs/ Resource Recorder/ Creating or Modifying the Resource Recorder
Updated on 2024-10-22 GMT+08:00

Creating or Modifying the Resource Recorder

Function

This API is used to create or modify the resource recorder. Only one resource recorder can be configured.

Calling Method

For details, see Calling APIs.

URI

PUT /v1/resource-manager/domains/{domain_id}/tracker-config

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

domain_id

Yes

String

Specifies tags.

Maximum: 36

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

No

String

Specifies the invoker's token.

X-Security-Token

No

String

Security token (session token) for temporary security credentials. This parameter is mandatory when you make an API call using temporary security credentials.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

channel

Yes

ChannelConfigBody object

Specifies configurations for the tracker channel.

selector

Yes

SelectorConfigBody object

Specifies the selector.

retention_period_in_days

No

Integer

Number of days for data storage.

agency_name

Yes

String

Specifies the IAM agency name.

domain_id

No

String

Account ID

frozen_status

No

FrozenStatus object

the tracker frozen status

Table 4 ChannelConfigBody

Parameter

Mandatory

Type

Description

smn

No

TrackerSMNChannelConfigBody object

Specifies configurations for the SMN channel. For details about how to grant other accounts the permissions for publishing messages to SMN topics, see Cross-Account Authorization (Resource Recorder > Enabling, Configuring, or Modifying the Resource Recorder) in the User Guide.

obs

No

TrackerOBSChannelConfigBody object

Specifies configurations for the OBS bucket. For details about how to grant other accounts the permissions for dumping files to OBS buckets, see Cross-Account Authorization (Resource Recorder > Enabling, Configuring, or Modifying the Resource Recorder) in the User Guide.

Table 5 TrackerSMNChannelConfigBody

Parameter

Mandatory

Type

Description

region_id

Yes

String

Specifies the region ID of the SMN topic.

project_id

Yes

String

Specifies the project ID of the user.

topic_urn

Yes

String

Specifies the SMN topic URN.

Table 6 TrackerOBSChannelConfigBody

Parameter

Mandatory

Type

Description

bucket_name

Yes

String

Specifies the OBS bucket name.

Maximum: 63

bucket_prefix

No

String

OBS bucket prefix

Maximum: 256

region_id

Yes

String

Specifies the region ID.

Table 7 SelectorConfigBody

Parameter

Mandatory

Type

Description

all_supported

Yes

Boolean

Specifies whether to select all supported resources.

resource_types

Yes

Array of strings

Specifies the resource type list.

Table 8 FrozenStatus

Parameter

Mandatory

Type

Description

is_frozen

No

Boolean

is frozen

frozen_scene

No

Array of strings

frozen scene

Response Parameters

Status code: 400

Table 9 Response body parameters

Parameter

Type

Description

error_code

String

Specifies the error code.

error_msg

String

Specifies the error message.

Status code: 403

Table 10 Response body parameters

Parameter

Type

Description

error_code

String

Specifies the error code.

error_msg

String

Specifies the error message.

Status code: 404

Table 11 Response body parameters

Parameter

Type

Description

error_code

String

Specifies the error code.

error_msg

String

Specifies the error message.

Status code: 500

Table 12 Response body parameters

Parameter

Type

Description

error_code

String

Specifies the error code.

error_msg

String

Specifies the error message.

Example Requests

Creating the resource recorder and enabling message pushing and dumping

PUT /v1/resource-manager/domains/{domain_id}/tracker-config

{
  "channel" : {
    "smn" : {
      "region_id" : "regionid1",
      "project_id" : "39c2af998c334ed6bcbb75b27318f7b5",
      "topic_urn" : "urn:smn:regionid1:39c2af998c334ed6bcbb75b27318f7b5:resource-manager-test"
    },
    "obs" : {
      "bucket_name" : "config-snapshot",
      "region_id" : "regionid1",
      "bucket_prefix" : "log_dir"
    }
  },
  "selector" : {
    "all_supported" : true,
    "resource_types" : [ ]
  },
  "agency_name" : "rms_tracker_agency",
  "retention_period_in_days" : 2557
}

Example Responses

None

SDK Sample Code

The SDK sample code is as follows.

Creating the resource recorder and enabling message pushing and dumping

 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
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.GlobalCredentials;
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.config.v1.region.ConfigRegion;
import com.huaweicloud.sdk.config.v1.*;
import com.huaweicloud.sdk.config.v1.model.*;

import java.util.List;
import java.util.ArrayList;

public class CreateTrackerConfigSolution {

    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 GlobalCredentials()
                .withAk(ak)
                .withSk(sk);

        ConfigClient client = ConfigClient.newBuilder()
                .withCredential(auth)
                .withRegion(ConfigRegion.valueOf("<YOUR REGION>"))
                .build();
        CreateTrackerConfigRequest request = new CreateTrackerConfigRequest();
        TrackerConfigBody body = new TrackerConfigBody();
        SelectorConfigBody selectorbody = new SelectorConfigBody();
        selectorbody.withAllSupported(true);
        TrackerOBSChannelConfigBody obsChannel = new TrackerOBSChannelConfigBody();
        obsChannel.withBucketName("config-snapshot")
            .withBucketPrefix("log_dir")
            .withRegionId("regionid1");
        TrackerSMNChannelConfigBody smnChannel = new TrackerSMNChannelConfigBody();
        smnChannel.withRegionId("regionid1")
            .withProjectId("39c2af998c334ed6bcbb75b27318f7b5")
            .withTopicUrn("urn:smn:regionid1:39c2af998c334ed6bcbb75b27318f7b5:resource-manager-test");
        ChannelConfigBody channelbody = new ChannelConfigBody();
        channelbody.withSmn(smnChannel)
            .withObs(obsChannel);
        body.withAgencyName("rms_tracker_agency");
        body.withRetentionPeriodInDays(2557);
        body.withSelector(selectorbody);
        body.withChannel(channelbody);
        request.withBody(body);
        try {
            CreateTrackerConfigResponse response = client.createTrackerConfig(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 the resource recorder and enabling message pushing and dumping

 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
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import GlobalCredentials
from huaweicloudsdkconfig.v1.region.config_region import ConfigRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkconfig.v1 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 = GlobalCredentials(ak, sk)

    client = ConfigClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(ConfigRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = CreateTrackerConfigRequest()
        selectorbody = SelectorConfigBody(
            all_supported=True
        )
        obsChannel = TrackerOBSChannelConfigBody(
            bucket_name="config-snapshot",
            bucket_prefix="log_dir",
            region_id="regionid1"
        )
        smnChannel = TrackerSMNChannelConfigBody(
            region_id="regionid1",
            project_id="39c2af998c334ed6bcbb75b27318f7b5",
            topic_urn="urn:smn:regionid1:39c2af998c334ed6bcbb75b27318f7b5:resource-manager-test"
        )
        channelbody = ChannelConfigBody(
            smn=smnChannel,
            obs=obsChannel
        )
        request.body = TrackerConfigBody(
            agency_name="rms_tracker_agency",
            retention_period_in_days=2557,
            selector=selectorbody,
            channel=channelbody
        )
        response = client.create_tracker_config(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 the resource recorder and enabling message pushing and dumping

 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
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global"
    config "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/config/v1"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/config/v1/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/config/v1/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 := global.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := config.NewConfigClient(
        config.ConfigClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.CreateTrackerConfigRequest{}
	selectorbody := &model.SelectorConfigBody{
		AllSupported: true,
	}
	bucketPrefixObs:= "log_dir"
	obsChannel := &model.TrackerObsChannelConfigBody{
		BucketName: "config-snapshot",
		BucketPrefix: &bucketPrefixObs,
		RegionId: "regionid1",
	}
	smnChannel := &model.TrackerSmnChannelConfigBody{
		RegionId: "regionid1",
		ProjectId: "39c2af998c334ed6bcbb75b27318f7b5",
		TopicUrn: "urn:smn:regionid1:39c2af998c334ed6bcbb75b27318f7b5:resource-manager-test",
	}
	channelbody := &model.ChannelConfigBody{
		Smn: smnChannel,
		Obs: obsChannel,
	}
	retentionPeriodInDaysTrackerConfigBody:= int32(2557)
	request.Body = &model.TrackerConfigBody{
		AgencyName: "rms_tracker_agency",
		RetentionPeriodInDays: &retentionPeriodInDaysTrackerConfigBody,
		Selector: selectorbody,
		Channel: channelbody,
	}
	response, err := client.CreateTrackerConfig(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

Operation succeeded.

400

Invalid parameters.

403

Authentication failed or you do not have the operation permissions.

404

Resources not found.

500

Server error.

Error Codes

See Error Codes.