OtsBackupPlan

class OtsBackupPlan : KotlinCustomResource

Provides a HBR Ots Backup Plan resource. For information about HBR Ots Backup Plan and how to use it, see What is Ots Backup Plan.

NOTE: Available in v1.163.0+.

Example Usage

Basic Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
import * as random from "@pulumi/random";
const defaultInteger = new random.index.Integer("default", {
max: 99999,
min: 10000,
});
const defaultVault = new alicloud.hbr.Vault("default", {
vaultName: `terraform-example-${defaultInteger.result}`,
vaultType: "OTS_BACKUP",
});
const defaultInstance = new alicloud.ots.Instance("default", {
name: `Example-${defaultInteger.result}`,
description: "terraform-example",
accessedBy: "Any",
tags: {
Created: "TF",
For: "example",
},
});
const defaultTable = new alicloud.ots.Table("default", {
instanceName: defaultInstance.name,
tableName: "terraform_example",
primaryKeys: [{
name: "pk1",
type: "Integer",
}],
timeToLive: -1,
maxVersion: 1,
deviationCellVersionInSec: "1",
});
const defaultRole = new alicloud.ram.Role("default", {
name: "hbrexamplerole",
document: `\x09\x09{
\x09\x09\x09"Statement": [
\x09\x09\x09{
\x09\x09\x09\x09"Action": "sts:AssumeRole",
\x09\x09\x09\x09"Effect": "Allow",
\x09\x09\x09\x09"Principal": {
\x09\x09\x09\x09\x09"Service": [
\x09\x09\x09\x09\x09\x09"crossbackup.hbr.aliyuncs.com"
\x09\x09\x09\x09\x09]
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09\x09],
\x09\x09\x09"Version": "1"
\x09\x09}
`,
force: true,
});
const _default = alicloud.getAccount({});
const example = new alicloud.hbr.OtsBackupPlan("example", {
otsBackupPlanName: `terraform-example-${defaultInteger.result}`,
vaultId: defaultVault.id,
backupType: "COMPLETE",
retention: "1",
instanceName: defaultInstance.name,
crossAccountType: "SELF_ACCOUNT",
crossAccountUserId: _default.then(_default => _default.id),
crossAccountRoleName: defaultRole.id,
otsDetails: [{
tableNames: [defaultTable.tableName],
}],
rules: [{
schedule: "I|1602673264|PT2H",
retention: "1",
disabled: false,
ruleName: "terraform-example",
backupType: "COMPLETE",
}],
});
import pulumi
import pulumi_alicloud as alicloud
import pulumi_random as random
default_integer = random.index.Integer("default",
max=99999,
min=10000)
default_vault = alicloud.hbr.Vault("default",
vault_name=f"terraform-example-{default_integer['result']}",
vault_type="OTS_BACKUP")
default_instance = alicloud.ots.Instance("default",
name=f"Example-{default_integer['result']}",
description="terraform-example",
accessed_by="Any",
tags={
"Created": "TF",
"For": "example",
})
default_table = alicloud.ots.Table("default",
instance_name=default_instance.name,
table_name="terraform_example",
primary_keys=[{
"name": "pk1",
"type": "Integer",
}],
time_to_live=-1,
max_version=1,
deviation_cell_version_in_sec="1")
default_role = alicloud.ram.Role("default",
name="hbrexamplerole",
document="""\x09\x09{
\x09\x09\x09"Statement": [
\x09\x09\x09{
\x09\x09\x09\x09"Action": "sts:AssumeRole",
\x09\x09\x09\x09"Effect": "Allow",
\x09\x09\x09\x09"Principal": {
\x09\x09\x09\x09\x09"Service": [
\x09\x09\x09\x09\x09\x09"crossbackup.hbr.aliyuncs.com"
\x09\x09\x09\x09\x09]
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09\x09],
\x09\x09\x09"Version": "1"
\x09\x09}
""",
force=True)
default = alicloud.get_account()
example = alicloud.hbr.OtsBackupPlan("example",
ots_backup_plan_name=f"terraform-example-{default_integer['result']}",
vault_id=default_vault.id,
backup_type="COMPLETE",
retention="1",
instance_name=default_instance.name,
cross_account_type="SELF_ACCOUNT",
cross_account_user_id=default.id,
cross_account_role_name=default_role.id,
ots_details=[{
"table_names": [default_table.table_name],
}],
rules=[{
"schedule": "I|1602673264|PT2H",
"retention": "1",
"disabled": False,
"rule_name": "terraform-example",
"backup_type": "COMPLETE",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
using Random = Pulumi.Random;
return await Deployment.RunAsync(() =>
{
var defaultInteger = new Random.Index.Integer("default", new()
{
Max = 99999,
Min = 10000,
});
var defaultVault = new AliCloud.Hbr.Vault("default", new()
{
VaultName = $"terraform-example-{defaultInteger.Result}",
VaultType = "OTS_BACKUP",
});
var defaultInstance = new AliCloud.Ots.Instance("default", new()
{
Name = $"Example-{defaultInteger.Result}",
Description = "terraform-example",
AccessedBy = "Any",
Tags =
{
{ "Created", "TF" },
{ "For", "example" },
},
});
var defaultTable = new AliCloud.Ots.Table("default", new()
{
InstanceName = defaultInstance.Name,
TableName = "terraform_example",
PrimaryKeys = new[]
{
new AliCloud.Ots.Inputs.TablePrimaryKeyArgs
{
Name = "pk1",
Type = "Integer",
},
},
TimeToLive = -1,
MaxVersion = 1,
DeviationCellVersionInSec = "1",
});
var defaultRole = new AliCloud.Ram.Role("default", new()
{
Name = "hbrexamplerole",
Document = @" {
""Statement"": [
{
""Action"": ""sts:AssumeRole"",
""Effect"": ""Allow"",
""Principal"": {
""Service"": [
""crossbackup.hbr.aliyuncs.com""
]
}
}
],
""Version"": ""1""
}
",
Force = true,
});
var @default = AliCloud.GetAccount.Invoke();
var example = new AliCloud.Hbr.OtsBackupPlan("example", new()
{
OtsBackupPlanName = $"terraform-example-{defaultInteger.Result}",
VaultId = defaultVault.Id,
BackupType = "COMPLETE",
Retention = "1",
InstanceName = defaultInstance.Name,
CrossAccountType = "SELF_ACCOUNT",
CrossAccountUserId = @default.Apply(@default => @default.Apply(getAccountResult => getAccountResult.Id)),
CrossAccountRoleName = defaultRole.Id,
OtsDetails = new[]
{
new AliCloud.Hbr.Inputs.OtsBackupPlanOtsDetailArgs
{
TableNames = new[]
{
defaultTable.TableName,
},
},
},
Rules = new[]
{
new AliCloud.Hbr.Inputs.OtsBackupPlanRuleArgs
{
Schedule = "I|1602673264|PT2H",
Retention = "1",
Disabled = false,
RuleName = "terraform-example",
BackupType = "COMPLETE",
},
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/hbr"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ots"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ram"
"github.com/pulumi/pulumi-random/sdk/v4/go/random"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
defaultInteger, err := random.NewInteger(ctx, "default", &random.IntegerArgs{
Max: 99999,
Min: 10000,
})
if err != nil {
return err
}
defaultVault, err := hbr.NewVault(ctx, "default", &hbr.VaultArgs{
VaultName: pulumi.Sprintf("terraform-example-%v", defaultInteger.Result),
VaultType: pulumi.String("OTS_BACKUP"),
})
if err != nil {
return err
}
defaultInstance, err := ots.NewInstance(ctx, "default", &ots.InstanceArgs{
Name: pulumi.Sprintf("Example-%v", defaultInteger.Result),
Description: pulumi.String("terraform-example"),
AccessedBy: pulumi.String("Any"),
Tags: pulumi.StringMap{
"Created": pulumi.String("TF"),
"For": pulumi.String("example"),
},
})
if err != nil {
return err
}
defaultTable, err := ots.NewTable(ctx, "default", &ots.TableArgs{
InstanceName: defaultInstance.Name,
TableName: pulumi.String("terraform_example"),
PrimaryKeys: ots.TablePrimaryKeyArray{
&ots.TablePrimaryKeyArgs{
Name: pulumi.String("pk1"),
Type: pulumi.String("Integer"),
},
},
TimeToLive: pulumi.Int(-1),
MaxVersion: pulumi.Int(1),
DeviationCellVersionInSec: pulumi.String("1"),
})
if err != nil {
return err
}
defaultRole, err := ram.NewRole(ctx, "default", &ram.RoleArgs{
Name: pulumi.String("hbrexamplerole"),
Document: pulumi.String(` {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"crossbackup.hbr.aliyuncs.com"
]
}
}
],
"Version": "1"
}
`),
Force: pulumi.Bool(true),
})
if err != nil {
return err
}
_default, err := alicloud.GetAccount(ctx, map[string]interface{}{}, nil)
if err != nil {
return err
}
_, err = hbr.NewOtsBackupPlan(ctx, "example", &hbr.OtsBackupPlanArgs{
OtsBackupPlanName: pulumi.Sprintf("terraform-example-%v", defaultInteger.Result),
VaultId: defaultVault.ID(),
BackupType: pulumi.String("COMPLETE"),
Retention: pulumi.String("1"),
InstanceName: defaultInstance.Name,
CrossAccountType: pulumi.String("SELF_ACCOUNT"),
CrossAccountUserId: pulumi.String(_default.Id),
CrossAccountRoleName: defaultRole.ID(),
OtsDetails: hbr.OtsBackupPlanOtsDetailArray{
&hbr.OtsBackupPlanOtsDetailArgs{
TableNames: pulumi.StringArray{
defaultTable.TableName,
},
},
},
Rules: hbr.OtsBackupPlanRuleArray{
&hbr.OtsBackupPlanRuleArgs{
Schedule: pulumi.String("I|1602673264|PT2H"),
Retention: pulumi.String("1"),
Disabled: pulumi.Bool(false),
RuleName: pulumi.String("terraform-example"),
BackupType: pulumi.String("COMPLETE"),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.random.integer;
import com.pulumi.random.IntegerArgs;
import com.pulumi.alicloud.hbr.Vault;
import com.pulumi.alicloud.hbr.VaultArgs;
import com.pulumi.alicloud.ots.Instance;
import com.pulumi.alicloud.ots.InstanceArgs;
import com.pulumi.alicloud.ots.Table;
import com.pulumi.alicloud.ots.TableArgs;
import com.pulumi.alicloud.ots.inputs.TablePrimaryKeyArgs;
import com.pulumi.alicloud.ram.Role;
import com.pulumi.alicloud.ram.RoleArgs;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.hbr.OtsBackupPlan;
import com.pulumi.alicloud.hbr.OtsBackupPlanArgs;
import com.pulumi.alicloud.hbr.inputs.OtsBackupPlanOtsDetailArgs;
import com.pulumi.alicloud.hbr.inputs.OtsBackupPlanRuleArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var defaultInteger = new Integer("defaultInteger", IntegerArgs.builder()
.max(99999)
.min(10000)
.build());
var defaultVault = new Vault("defaultVault", VaultArgs.builder()
.vaultName(String.format("terraform-example-%s", defaultInteger.result()))
.vaultType("OTS_BACKUP")
.build());
var defaultInstance = new Instance("defaultInstance", InstanceArgs.builder()
.name(String.format("Example-%s", defaultInteger.result()))
.description("terraform-example")
.accessedBy("Any")
.tags(Map.ofEntries(
Map.entry("Created", "TF"),
Map.entry("For", "example")
))
.build());
var defaultTable = new Table("defaultTable", TableArgs.builder()
.instanceName(defaultInstance.name())
.tableName("terraform_example")
.primaryKeys(TablePrimaryKeyArgs.builder()
.name("pk1")
.type("Integer")
.build())
.timeToLive(-1)
.maxVersion(1)
.deviationCellVersionInSec(1)
.build());
var defaultRole = new Role("defaultRole", RoleArgs.builder()
.name("hbrexamplerole")
.document("""
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"crossbackup.hbr.aliyuncs.com"
]
}
}
],
"Version": "1"
}
""")
.force(true)
.build());
final var default = AlicloudFunctions.getAccount();
var example = new OtsBackupPlan("example", OtsBackupPlanArgs.builder()
.otsBackupPlanName(String.format("terraform-example-%s", defaultInteger.result()))
.vaultId(defaultVault.id())
.backupType("COMPLETE")
.retention("1")
.instanceName(defaultInstance.name())
.crossAccountType("SELF_ACCOUNT")
.crossAccountUserId(default_.id())
.crossAccountRoleName(defaultRole.id())
.otsDetails(OtsBackupPlanOtsDetailArgs.builder()
.tableNames(defaultTable.tableName())
.build())
.rules(OtsBackupPlanRuleArgs.builder()
.schedule("I|1602673264|PT2H")
.retention("1")
.disabled("false")
.ruleName("terraform-example")
.backupType("COMPLETE")
.build())
.build());
}
}
resources:
defaultInteger:
type: random:integer
name: default
properties:
max: 99999
min: 10000
defaultVault:
type: alicloud:hbr:Vault
name: default
properties:
vaultName: terraform-example-${defaultInteger.result}
vaultType: OTS_BACKUP
defaultInstance:
type: alicloud:ots:Instance
name: default
properties:
name: Example-${defaultInteger.result}
description: terraform-example
accessedBy: Any
tags:
Created: TF
For: example
defaultTable:
type: alicloud:ots:Table
name: default
properties:
instanceName: ${defaultInstance.name}
tableName: terraform_example
primaryKeys:
- name: pk1
type: Integer
timeToLive: -1
maxVersion: 1
deviationCellVersionInSec: 1
defaultRole:
type: alicloud:ram:Role
name: default
properties:
name: hbrexamplerole
document: |
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"crossbackup.hbr.aliyuncs.com"
]
}
}
],
"Version": "1"
}
force: true
example:
type: alicloud:hbr:OtsBackupPlan
properties:
otsBackupPlanName: terraform-example-${defaultInteger.result}
vaultId: ${defaultVault.id}
backupType: COMPLETE
retention: '1'
instanceName: ${defaultInstance.name}
crossAccountType: SELF_ACCOUNT
crossAccountUserId: ${default.id}
crossAccountRoleName: ${defaultRole.id}
otsDetails:
- tableNames:
- ${defaultTable.tableName}
rules:
- schedule: I|1602673264|PT2H
retention: '1'
disabled: 'false'
ruleName: terraform-example
backupType: COMPLETE
variables:
default:
fn::invoke:
function: alicloud:getAccount
arguments: {}

Import

HBR Ots Backup Plan can be imported using the id, e.g.

$ pulumi import alicloud:hbr/otsBackupPlan:OtsBackupPlan example <id>

Properties

Link copied to clipboard
val backupType: Output<String>

Backup type. Valid values: COMPLETE.

Link copied to clipboard

The role name created in the original account RAM backup by the cross account managed by the current account.

Link copied to clipboard

The type of the cross account backup. Valid values: SELF_ACCOUNT, CROSS_ACCOUNT.

Link copied to clipboard
val crossAccountUserId: Output<Int>?

The original account ID of the cross account backup managed by the current account.

Link copied to clipboard
val disabled: Output<Boolean>

Whether to disable the backup task. Valid values: true, false. Default values: false.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val instanceName: Output<String>?

The name of the Table store instance. Note: Required while source_type equals OTS_TABLE.

Link copied to clipboard

The name of the backup plan. 1~64 characters, the backup plan name of each data source type in a single warehouse required to be unique.

Link copied to clipboard

The details about the Table store instance. See the following Block ots_detail. Note: Required while source_type equals OTS_TABLE.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val retention: Output<String>

Backup retention days, the minimum is 1.

Link copied to clipboard

The backup plan rule. See the following Block rules. Note: Required while source_type equals OTS_TABLE.

Link copied to clipboard
val schedule: Output<String>?

Backup strategy. Optional format: I|{startTime}|{interval}. It means to execute a backup task every {interval} starting from {startTime}. The backup task for the elapsed time will not be compensated. If the last backup task has not completed yet, the next backup task will not be triggered.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard
val vaultId: Output<String>?

The ID of backup vault.