创建策略
功能介绍
创建策略,策略分为备份策略和复制策略。
调用方法
请参见如何调用API。
URI
POST /v3/{project_id}/policies
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
policy |
是 |
PolicyCreate object |
创建策略body |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
enabled |
否 |
Boolean |
是否启用策略 缺省值:true |
name |
是 |
String |
策略名称,长度限制:1- 64,只能由中文、字母、数字、“_”、“-”组成。 最小长度:1 最大长度:64 |
operation_definition |
是 |
PolicyoODCreate object |
调度参数 |
operation_type |
是 |
String |
保护类型:备份(backup)、复制(replication)。 |
trigger |
是 |
PolicyTriggerReq object |
策略执行时间规则 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
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
参数 |
参数类型 |
描述 |
---|---|---|
policy |
Policy object |
创建响应 |
参数 |
参数类型 |
描述 |
---|---|---|
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 |
关联的存储库 |
参数 |
参数类型 |
描述 |
---|---|---|
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 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
调度器id |
name |
String |
调度器名称 |
properties |
PolicyTriggerPropertiesResp object |
调度器属性 |
type |
String |
调度器类型,目前只支持 time: 定时调度。 |
参数 |
参数类型 |
描述 |
---|---|---|
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" |
请求示例
创建一个备份策略,周一到周天每天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 |
错误码
请参见错误码。