更新时间:2024-06-21 GMT+08:00

创建策略

功能介绍

创建策略,策略分为备份策略和复制策略。

调用方法

请参见如何调用API

URI

POST /v3/{project_id}/policies

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

policy

PolicyCreate object

创建策略body

表4 PolicyCreate

参数

是否必选

参数类型

描述

enabled

Boolean

是否启用策略

缺省值:true

name

String

策略名称,长度限制:1- 64,只能由中文、字母、数字、“_”、“-”组成。

最小长度:1

最大长度:64

operation_definition

PolicyoODCreate object

调度参数

operation_type

String

保护类型:备份(backup)、复制(replication)。

trigger

PolicyTriggerReq object

策略执行时间规则

表5 PolicyoODCreate

参数

是否必选

参数类型

描述

day_backups

Integer

保留日备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

destination_project_id

String

复制的目标项目ID,仅在跨区域复制时才会使用并且必须指定。

destination_region

String

复制的目标区域,仅在跨区域复制时才会使用并且必须指定。长度限制:0- 255,只能由字母、数字、“_”、“-”组成

enable_acceleration

Boolean

跨区域复制时,是否启用加速从而缩减复制的时间,如果不指定,默认不启用加速。

max_backups

Integer

单个备份对象自动备份的最大备份数。取值为-1或0-99999。-1代表不按备份数清理。如果该字段和retention_duration_days字段同时为空,备份会永久保留。

最小值:1

最大值:99999

缺省值:-1

month_backups

Integer

保留月备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

retention_duration_days

Integer

备份保留时长,单位天。最长支持99999天。-1代表不按时间清理。如果该字段和max_backups 参数同时为空,备份会永久保留。

最小值:1

最大值:99999

缺省值:-1

timezone

String

用户所在时区,格式形如UTC+08:00, 如果选择年备,月备,周备,日备中任一参数,则该参数不能为空。

week_backups

Integer

保留周备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

year_backups

Integer

保留年备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

full_backup_interval

Integer

每间隔多少次执行一次全量备份,当取值为 -1 时,不执行全量备份 最小值:-1 最大值:100

最小值:-1

最大值:100

表6 PolicyTriggerReq

参数

是否必选

参数类型

描述

properties

PolicyTriggerPropertiesReq object

调度器属性

表7 PolicyTriggerPropertiesReq

参数

是否必选

参数类型

描述

pattern

Array of strings

调度规则。限制24条规则。调度器的调度规则,可参照iCalendar RFC 2445规范中的事件规则,但仅支持FREQ、BYDAY、BYHOUR、BYMINUTE、INTERVAL等参数,其中FREQ仅支持WEEKLY和DAILY,BYDAY支持一周七天(MO、TU、WE、TH、FR、SA、SU),BYHOUR支持0-23小时,BYMINUTE支持0-59分钟,并且间隔不能小于一小时,一天最大24个时间点。例如,周一到周天,每天UTC时间的14:00调度,其规则为:'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00'。例如:某个地区的时间为 UTC+8,如果在该地区每天14:00调度,则在14点基础上减8,其规则为'FREQ=DAILY;INTERVAL=1;BYHOUR=6;BYMINUTE=00'。

响应参数

状态码: 200

表8 响应Body参数

参数

参数类型

描述

policy

Policy object

创建响应

表9 Policy

参数

参数类型

描述

enabled

Boolean

策略是否启用

id

String

策略ID

name

String

策略名称

operation_definition

PolicyoODCreate object

策略属性

operation_type

String

保护类型:备份(backup)、复制(replication)。

trigger

PolicyTriggerResp object

策略时间调度规则

associated_vaults

Array of PolicyAssociateVault objects

关联的存储库

表10 PolicyoODCreate

参数

参数类型

描述

day_backups

Integer

保留日备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

destination_project_id

String

复制的目标项目ID,仅在跨区域复制时才会使用并且必须指定。

destination_region

String

复制的目标区域,仅在跨区域复制时才会使用并且必须指定。长度限制:0- 255,只能由字母、数字、“_”、“-”组成

enable_acceleration

Boolean

跨区域复制时,是否启用加速从而缩减复制的时间,如果不指定,默认不启用加速。

max_backups

Integer

单个备份对象自动备份的最大备份数。取值为-1或0-99999。-1代表不按备份数清理。如果该字段和retention_duration_days字段同时为空,备份会永久保留。

最小值:1

最大值:99999

缺省值:-1

month_backups

Integer

保留月备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

retention_duration_days

Integer

备份保留时长,单位天。最长支持99999天。-1代表不按时间清理。如果该字段和max_backups 参数同时为空,备份会永久保留。

最小值:1

最大值:99999

缺省值:-1

timezone

String

用户所在时区,格式形如UTC+08:00, 如果选择年备,月备,周备,日备中任一参数,则该参数不能为空。

week_backups

Integer

保留周备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

year_backups

Integer

保留年备个数,该备份不受保留最大备份数限制。取值为0到100。如果选择该参数,则timezone 也必选。

最小值:0

最大值:100

full_backup_interval

Integer

每间隔多少次执行一次全量备份,当取值为 -1 时,不执行全量备份 最小值:-1 最大值:100

最小值:-1

最大值:100

表11 PolicyTriggerResp

参数

参数类型

描述

id

String

调度器id

name

String

调度器名称

properties

PolicyTriggerPropertiesResp object

调度器属性

type

String

调度器类型,目前只支持 time: 定时调度。

表12 PolicyTriggerPropertiesResp

参数

参数类型

描述

pattern

Array of strings

调度规则。限制24条规则。调度器的调度规则,可参照iCalendar RFC 2445规范中的事件规则,但仅支持FREQ、BYDAY、BYHOUR、BYMINUTE、INTERVAL等参数,其中FREQ仅支持WEEKLY和DAILY,BYDAY支持一周七天(MO、TU、WE、TH、FR、SA、SU),BYHOUR支持0-23小时,BYMINUTE支持0-59分钟,并且间隔不能小于一小时,一天最大24个时间点。例如,周一到周天,每天UTC时间的14:00调度,其规则为:'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00'。例如:某个地区的时间为 UTC+8,如果在该地区每天14:00调度,则在14点基础上减8,其规则为'FREQ=DAILY;INTERVAL=1;BYHOUR=6;BYMINUTE=00'。

start_time

String

调度器开始时间,例如:"2020-01-08 09:59:49"

表13 PolicyAssociateVault

参数

参数类型

描述

destination_vault_id

String

关联的远端存储库ID

vault_id

String

存储库ID

请求示例

创建一个备份策略,周一到周天每天14:00执行备份,保留策略按备份保留时长,保留一天。

POST https://{endpoint}/v3/f841e01fd2b14e7fa41b6ae7aa6b0594/policies

{
  "policy" : {
    "enabled" : true,
    "name" : "policy001",
    "operation_definition" : {
      "day_backups" : 0,
      "month_backups" : 0,
      "retention_duration_days" : 1,
      "timezone" : "UTC+08:00",
      "week_backups" : 0,
      "year_backups" : 0
    },
    "operation_type" : "backup",
    "trigger" : {
      "properties" : {
        "pattern" : [ "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00" ]
      }
    }
  }
}

响应示例

状态码: 200

OK

{
  "policy" : {
    "name" : "policy001",
    "enabled" : true,
    "trigger" : {
      "properties" : {
        "pattern" : [ "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00" ],
        "start_time" : "2019-05-08T06:57:05.000+00:00"
      },
      "type" : "time",
      "id" : "d67269a6-5369-42d7-8150-5254bd446328",
      "name" : "default"
    },
    "operation_definition" : {
      "retention_duration_days" : 1,
      "year_backups" : 0,
      "day_backups" : 0,
      "month_backups" : 0,
      "week_backups" : 0,
      "timezone" : "UTC+08:00"
    },
    "operation_type" : "backup",
    "id" : "cbb3ce6f-3332-4e7c-b98e-77290d8471ff"
  }
}

SDK代码示例

SDK代码示例如下。

Java

创建一个备份策略,周一到周天每天14:00执行备份,保留策略按备份保留时长,保留一天。

 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
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.cbr.v1.region.CbrRegion;
import com.huaweicloud.sdk.cbr.v1.*;
import com.huaweicloud.sdk.cbr.v1.model.*;

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

public class CreatePolicySolution {

    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);

        CbrClient client = CbrClient.newBuilder()
                .withCredential(auth)
                .withRegion(CbrRegion.valueOf("<YOUR REGION>"))
                .build();
        CreatePolicyRequest request = new CreatePolicyRequest();
        PolicyCreateReq body = new PolicyCreateReq();
        List<String> listPropertiesPattern = new ArrayList<>();
        listPropertiesPattern.add("FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00");
        PolicyTriggerPropertiesReq propertiesTrigger = new PolicyTriggerPropertiesReq();
        propertiesTrigger.withPattern(listPropertiesPattern);
        PolicyTriggerReq triggerPolicy = new PolicyTriggerReq();
        triggerPolicy.withProperties(propertiesTrigger);
        PolicyoODCreate operationDefinitionPolicy = new PolicyoODCreate();
        operationDefinitionPolicy.withDayBackups(0)
            .withMonthBackups(0)
            .withRetentionDurationDays(1)
            .withTimezone("UTC+08:00")
            .withWeekBackups(0)
            .withYearBackups(0);
        PolicyCreate policybody = new PolicyCreate();
        policybody.withEnabled(true)
            .withName("policy001")
            .withOperationDefinition(operationDefinitionPolicy)
            .withOperationType(PolicyCreate.OperationTypeEnum.fromValue("backup"))
            .withTrigger(triggerPolicy);
        body.withPolicy(policybody);
        request.withBody(body);
        try {
            CreatePolicyResponse response = client.createPolicy(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

创建一个备份策略,周一到周天每天14:00执行备份,保留策略按备份保留时长,保留一天。

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

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcbr.v1.region.cbr_region import CbrRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcbr.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 = __import__('os').getenv("CLOUD_SDK_AK")
    sk = __import__('os').getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

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

    try:
        request = CreatePolicyRequest()
        listPatternProperties = [
            "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00"
        ]
        propertiesTrigger = PolicyTriggerPropertiesReq(
            pattern=listPatternProperties
        )
        triggerPolicy = PolicyTriggerReq(
            properties=propertiesTrigger
        )
        operationDefinitionPolicy = PolicyoODCreate(
            day_backups=0,
            month_backups=0,
            retention_duration_days=1,
            timezone="UTC+08:00",
            week_backups=0,
            year_backups=0
        )
        policybody = PolicyCreate(
            enabled=True,
            name="policy001",
            operation_definition=operationDefinitionPolicy,
            operation_type="backup",
            trigger=triggerPolicy
        )
        request.body = PolicyCreateReq(
            policy=policybody
        )
        response = client.create_policy(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

创建一个备份策略,周一到周天每天14:00执行备份,保留策略按备份保留时长,保留一天。

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

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

    client := cbr.NewCbrClient(
        cbr.CbrClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.CreatePolicyRequest{}
	var listPatternProperties = []string{
        "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00",
    }
	propertiesTrigger := &model.PolicyTriggerPropertiesReq{
		Pattern: listPatternProperties,
	}
	triggerPolicy := &model.PolicyTriggerReq{
		Properties: propertiesTrigger,
	}
	dayBackupsOperationDefinition:= int32(0)
	monthBackupsOperationDefinition:= int32(0)
	retentionDurationDaysOperationDefinition:= int32(1)
	timezoneOperationDefinition:= "UTC+08:00"
	weekBackupsOperationDefinition:= int32(0)
	yearBackupsOperationDefinition:= int32(0)
	operationDefinitionPolicy := &model.PolicyoOdCreate{
		DayBackups: &dayBackupsOperationDefinition,
		MonthBackups: &monthBackupsOperationDefinition,
		RetentionDurationDays: &retentionDurationDaysOperationDefinition,
		Timezone: &timezoneOperationDefinition,
		WeekBackups: &weekBackupsOperationDefinition,
		YearBackups: &yearBackupsOperationDefinition,
	}
	enabledPolicy:= true
	policybody := &model.PolicyCreate{
		Enabled: &enabledPolicy,
		Name: "policy001",
		OperationDefinition: operationDefinitionPolicy,
		OperationType: model.GetPolicyCreateOperationTypeEnum().BACKUP,
		Trigger: triggerPolicy,
	}
	request.Body = &model.PolicyCreateReq{
		Policy: policybody,
	}
	response, err := client.CreatePolicy(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

OK

错误码

请参见错误码