com.pulumi.alicloud.dbs.kotlin.BackupPlan.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-alicloud-kotlin Show documentation
Show all versions of pulumi-alicloud-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.alicloud.dbs.kotlin
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
/**
* Builder for [BackupPlan].
*/
@PulumiTagMarker
public class BackupPlanResourceBuilder internal constructor() {
public var name: String? = null
public var args: BackupPlanArgs = BackupPlanArgs()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend BackupPlanArgsBuilder.() -> Unit) {
val builder = BackupPlanArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): BackupPlan {
val builtJavaResource = com.pulumi.alicloud.dbs.BackupPlan(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return BackupPlan(builtJavaResource)
}
}
/**
* Provides a DBS Backup Plan resource.
* For information about DBS Backup Plan and how to use it, see [What is Backup Plan](https://www.alibabacloud.com/help/en/dbs/developer-reference/api-dbs-2019-03-06-createandstartbackupplan).
* > **NOTE:** Available since v1.185.0.
* ## Example Usage
* Basic Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as alicloud from "@pulumi/alicloud";
* const config = new pulumi.Config();
* const name = config.get("name") || "terraform-example";
* const default = alicloud.resourcemanager.getResourceGroups({
* status: "OK",
* });
* const defaultGetZones = alicloud.rds.getZones({
* engine: "MySQL",
* engineVersion: "8.0",
* instanceChargeType: "PostPaid",
* category: "HighAvailability",
* dbInstanceStorageType: "cloud_essd",
* });
* const defaultGetInstanceClasses = defaultGetZones.then(defaultGetZones => alicloud.rds.getInstanceClasses({
* zoneId: defaultGetZones.zones?.[1]?.id,
* engine: "MySQL",
* engineVersion: "8.0",
* category: "HighAvailability",
* dbInstanceStorageType: "cloud_essd",
* instanceChargeType: "PostPaid",
* }));
* const defaultGetNetworks = alicloud.vpc.getNetworks({
* nameRegex: "^default-NODELETING",
* });
* const defaultGetSwitches = Promise.all([defaultGetNetworks, defaultGetZones]).then(([defaultGetNetworks, defaultGetZones]) => alicloud.vpc.getSwitches({
* vpcId: defaultGetNetworks.ids?.[0],
* zoneId: defaultGetZones.zones?.[1]?.id,
* }));
* const vswitchId = defaultGetSwitches.then(defaultGetSwitches => defaultGetSwitches.ids?.[0]);
* const zoneId = defaultGetZones.then(defaultGetZones => defaultGetZones.ids?.[1]);
* const defaultSecurityGroup = new alicloud.ecs.SecurityGroup("default", {
* name: name,
* vpcId: defaultGetNetworks.then(defaultGetNetworks => defaultGetNetworks.ids?.[0]),
* });
* const defaultInstance = new alicloud.rds.Instance("default", {
* engine: "MySQL",
* engineVersion: "8.0",
* dbInstanceStorageType: "cloud_essd",
* instanceType: defaultGetInstanceClasses.then(defaultGetInstanceClasses => defaultGetInstanceClasses.instanceClasses?.[0]?.instanceClass),
* instanceStorage: defaultGetInstanceClasses.then(defaultGetInstanceClasses => defaultGetInstanceClasses.instanceClasses?.[0]?.storageRange?.min),
* vswitchId: vswitchId,
* instanceName: name,
* });
* const defaultDatabase = new alicloud.rds.Database("default", {
* instanceId: defaultInstance.id,
* name: "tfdatabase",
* });
* const defaultRdsAccount = new alicloud.rds.RdsAccount("default", {
* dbInstanceId: defaultInstance.id,
* accountName: "tfnormal000",
* accountPassword: "Test12345",
* });
* const defaultAccountPrivilege = new alicloud.rds.AccountPrivilege("default", {
* instanceId: defaultInstance.id,
* accountName: defaultRdsAccount.accountName,
* privilege: "ReadWrite",
* dbNames: [defaultDatabase.name],
* });
* const defaultBackupPlan = new alicloud.dbs.BackupPlan("default", {
* backupPlanName: name,
* paymentType: "PayAsYouGo",
* instanceClass: "xlarge",
* backupMethod: "logical",
* databaseType: "MySQL",
* databaseRegion: "cn-hangzhou",
* storageRegion: "cn-hangzhou",
* instanceType: "RDS",
* sourceEndpointInstanceType: "RDS",
* resourceGroupId: _default.then(_default => _default.ids?.[0]),
* sourceEndpointRegion: "cn-hangzhou",
* sourceEndpointInstanceId: defaultInstance.id,
* sourceEndpointUserName: defaultAccountPrivilege.accountName,
* sourceEndpointPassword: defaultRdsAccount.accountPassword,
* backupObjects: pulumi.interpolate`[{"DBName":"${defaultDatabase.name}"}]`,
* backupPeriod: "Monday",
* backupStartTime: "14:22",
* backupStorageType: "system",
* backupRetentionPeriod: 740,
* });
* ```
* ```python
* import pulumi
* import pulumi_alicloud as alicloud
* config = pulumi.Config()
* name = config.get("name")
* if name is None:
* name = "terraform-example"
* default = alicloud.resourcemanager.get_resource_groups(status="OK")
* default_get_zones = alicloud.rds.get_zones(engine="MySQL",
* engine_version="8.0",
* instance_charge_type="PostPaid",
* category="HighAvailability",
* db_instance_storage_type="cloud_essd")
* default_get_instance_classes = alicloud.rds.get_instance_classes(zone_id=default_get_zones.zones[1].id,
* engine="MySQL",
* engine_version="8.0",
* category="HighAvailability",
* db_instance_storage_type="cloud_essd",
* instance_charge_type="PostPaid")
* default_get_networks = alicloud.vpc.get_networks(name_regex="^default-NODELETING")
* default_get_switches = alicloud.vpc.get_switches(vpc_id=default_get_networks.ids[0],
* zone_id=default_get_zones.zones[1].id)
* vswitch_id = default_get_switches.ids[0]
* zone_id = default_get_zones.ids[1]
* default_security_group = alicloud.ecs.SecurityGroup("default",
* name=name,
* vpc_id=default_get_networks.ids[0])
* default_instance = alicloud.rds.Instance("default",
* engine="MySQL",
* engine_version="8.0",
* db_instance_storage_type="cloud_essd",
* instance_type=default_get_instance_classes.instance_classes[0].instance_class,
* instance_storage=default_get_instance_classes.instance_classes[0].storage_range.min,
* vswitch_id=vswitch_id,
* instance_name=name)
* default_database = alicloud.rds.Database("default",
* instance_id=default_instance.id,
* name="tfdatabase")
* default_rds_account = alicloud.rds.RdsAccount("default",
* db_instance_id=default_instance.id,
* account_name="tfnormal000",
* account_password="Test12345")
* default_account_privilege = alicloud.rds.AccountPrivilege("default",
* instance_id=default_instance.id,
* account_name=default_rds_account.account_name,
* privilege="ReadWrite",
* db_names=[default_database.name])
* default_backup_plan = alicloud.dbs.BackupPlan("default",
* backup_plan_name=name,
* payment_type="PayAsYouGo",
* instance_class="xlarge",
* backup_method="logical",
* database_type="MySQL",
* database_region="cn-hangzhou",
* storage_region="cn-hangzhou",
* instance_type="RDS",
* source_endpoint_instance_type="RDS",
* resource_group_id=default.ids[0],
* source_endpoint_region="cn-hangzhou",
* source_endpoint_instance_id=default_instance.id,
* source_endpoint_user_name=default_account_privilege.account_name,
* source_endpoint_password=default_rds_account.account_password,
* backup_objects=default_database.name.apply(lambda name: f"[{{\"DBName\":\"{name}\"}}]"),
* backup_period="Monday",
* backup_start_time="14:22",
* backup_storage_type="system",
* backup_retention_period=740)
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using AliCloud = Pulumi.AliCloud;
* return await Deployment.RunAsync(() =>
* {
* var config = new Config();
* var name = config.Get("name") ?? "terraform-example";
* var @default = AliCloud.ResourceManager.GetResourceGroups.Invoke(new()
* {
* Status = "OK",
* });
* var defaultGetZones = AliCloud.Rds.GetZones.Invoke(new()
* {
* Engine = "MySQL",
* EngineVersion = "8.0",
* InstanceChargeType = "PostPaid",
* Category = "HighAvailability",
* DbInstanceStorageType = "cloud_essd",
* });
* var defaultGetInstanceClasses = AliCloud.Rds.GetInstanceClasses.Invoke(new()
* {
* ZoneId = defaultGetZones.Apply(getZonesResult => getZonesResult.Zones[1]?.Id),
* Engine = "MySQL",
* EngineVersion = "8.0",
* Category = "HighAvailability",
* DbInstanceStorageType = "cloud_essd",
* InstanceChargeType = "PostPaid",
* });
* var defaultGetNetworks = AliCloud.Vpc.GetNetworks.Invoke(new()
* {
* NameRegex = "^default-NODELETING",
* });
* var defaultGetSwitches = AliCloud.Vpc.GetSwitches.Invoke(new()
* {
* VpcId = defaultGetNetworks.Apply(getNetworksResult => getNetworksResult.Ids[0]),
* ZoneId = defaultGetZones.Apply(getZonesResult => getZonesResult.Zones[1]?.Id),
* });
* var vswitchId = defaultGetSwitches.Apply(getSwitchesResult => getSwitchesResult.Ids[0]);
* var zoneId = defaultGetZones.Apply(getZonesResult => getZonesResult.Ids[1]);
* var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("default", new()
* {
* Name = name,
* VpcId = defaultGetNetworks.Apply(getNetworksResult => getNetworksResult.Ids[0]),
* });
* var defaultInstance = new AliCloud.Rds.Instance("default", new()
* {
* Engine = "MySQL",
* EngineVersion = "8.0",
* DbInstanceStorageType = "cloud_essd",
* InstanceType = defaultGetInstanceClasses.Apply(getInstanceClassesResult => getInstanceClassesResult.InstanceClasses[0]?.InstanceClass),
* InstanceStorage = defaultGetInstanceClasses.Apply(getInstanceClassesResult => getInstanceClassesResult.InstanceClasses[0]?.StorageRange?.Min),
* VswitchId = vswitchId,
* InstanceName = name,
* });
* var defaultDatabase = new AliCloud.Rds.Database("default", new()
* {
* InstanceId = defaultInstance.Id,
* Name = "tfdatabase",
* });
* var defaultRdsAccount = new AliCloud.Rds.RdsAccount("default", new()
* {
* DbInstanceId = defaultInstance.Id,
* AccountName = "tfnormal000",
* AccountPassword = "Test12345",
* });
* var defaultAccountPrivilege = new AliCloud.Rds.AccountPrivilege("default", new()
* {
* InstanceId = defaultInstance.Id,
* AccountName = defaultRdsAccount.AccountName,
* Privilege = "ReadWrite",
* DbNames = new[]
* {
* defaultDatabase.Name,
* },
* });
* var defaultBackupPlan = new AliCloud.DBS.BackupPlan("default", new()
* {
* BackupPlanName = name,
* PaymentType = "PayAsYouGo",
* InstanceClass = "xlarge",
* BackupMethod = "logical",
* DatabaseType = "MySQL",
* DatabaseRegion = "cn-hangzhou",
* StorageRegion = "cn-hangzhou",
* InstanceType = "RDS",
* SourceEndpointInstanceType = "RDS",
* ResourceGroupId = @default.Apply(@default => @default.Apply(getResourceGroupsResult => getResourceGroupsResult.Ids[0])),
* SourceEndpointRegion = "cn-hangzhou",
* SourceEndpointInstanceId = defaultInstance.Id,
* SourceEndpointUserName = defaultAccountPrivilege.AccountName,
* SourceEndpointPassword = defaultRdsAccount.AccountPassword,
* BackupObjects = defaultDatabase.Name.Apply(name => $"[{{\"DBName\":\"{name}\"}}]"),
* BackupPeriod = "Monday",
* BackupStartTime = "14:22",
* BackupStorageType = "system",
* BackupRetentionPeriod = 740,
* });
* });
* ```
* ```go
* package main
* import (
* "fmt"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/dbs"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/rds"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/resourcemanager"
* "github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* cfg := config.New(ctx, "")
* name := "terraform-example"
* if param := cfg.Get("name"); param != "" {
* name = param
* }
* _default, err := resourcemanager.GetResourceGroups(ctx, &resourcemanager.GetResourceGroupsArgs{
* Status: pulumi.StringRef("OK"),
* }, nil)
* if err != nil {
* return err
* }
* defaultGetZones, err := rds.GetZones(ctx, &rds.GetZonesArgs{
* Engine: pulumi.StringRef("MySQL"),
* EngineVersion: pulumi.StringRef("8.0"),
* InstanceChargeType: pulumi.StringRef("PostPaid"),
* Category: pulumi.StringRef("HighAvailability"),
* DbInstanceStorageType: pulumi.StringRef("cloud_essd"),
* }, nil)
* if err != nil {
* return err
* }
* defaultGetInstanceClasses, err := rds.GetInstanceClasses(ctx, &rds.GetInstanceClassesArgs{
* ZoneId: pulumi.StringRef(defaultGetZones.Zones[1].Id),
* Engine: pulumi.StringRef("MySQL"),
* EngineVersion: pulumi.StringRef("8.0"),
* Category: pulumi.StringRef("HighAvailability"),
* DbInstanceStorageType: pulumi.StringRef("cloud_essd"),
* InstanceChargeType: pulumi.StringRef("PostPaid"),
* }, nil)
* if err != nil {
* return err
* }
* defaultGetNetworks, err := vpc.GetNetworks(ctx, &vpc.GetNetworksArgs{
* NameRegex: pulumi.StringRef("^default-NODELETING"),
* }, nil)
* if err != nil {
* return err
* }
* defaultGetSwitches, err := vpc.GetSwitches(ctx, &vpc.GetSwitchesArgs{
* VpcId: pulumi.StringRef(defaultGetNetworks.Ids[0]),
* ZoneId: pulumi.StringRef(defaultGetZones.Zones[1].Id),
* }, nil)
* if err != nil {
* return err
* }
* vswitchId := defaultGetSwitches.Ids[0]
* _ := defaultGetZones.Ids[1]
* _, err = ecs.NewSecurityGroup(ctx, "default", &ecs.SecurityGroupArgs{
* Name: pulumi.String(name),
* VpcId: pulumi.String(defaultGetNetworks.Ids[0]),
* })
* if err != nil {
* return err
* }
* defaultInstance, err := rds.NewInstance(ctx, "default", &rds.InstanceArgs{
* Engine: pulumi.String("MySQL"),
* EngineVersion: pulumi.String("8.0"),
* DbInstanceStorageType: pulumi.String("cloud_essd"),
* InstanceType: pulumi.String(defaultGetInstanceClasses.InstanceClasses[0].InstanceClass),
* InstanceStorage: pulumi.String(defaultGetInstanceClasses.InstanceClasses[0].StorageRange.Min),
* VswitchId: pulumi.String(vswitchId),
* InstanceName: pulumi.String(name),
* })
* if err != nil {
* return err
* }
* defaultDatabase, err := rds.NewDatabase(ctx, "default", &rds.DatabaseArgs{
* InstanceId: defaultInstance.ID(),
* Name: pulumi.String("tfdatabase"),
* })
* if err != nil {
* return err
* }
* defaultRdsAccount, err := rds.NewRdsAccount(ctx, "default", &rds.RdsAccountArgs{
* DbInstanceId: defaultInstance.ID(),
* AccountName: pulumi.String("tfnormal000"),
* AccountPassword: pulumi.String("Test12345"),
* })
* if err != nil {
* return err
* }
* defaultAccountPrivilege, err := rds.NewAccountPrivilege(ctx, "default", &rds.AccountPrivilegeArgs{
* InstanceId: defaultInstance.ID(),
* AccountName: defaultRdsAccount.AccountName,
* Privilege: pulumi.String("ReadWrite"),
* DbNames: pulumi.StringArray{
* defaultDatabase.Name,
* },
* })
* if err != nil {
* return err
* }
* _, err = dbs.NewBackupPlan(ctx, "default", &dbs.BackupPlanArgs{
* BackupPlanName: pulumi.String(name),
* PaymentType: pulumi.String("PayAsYouGo"),
* InstanceClass: pulumi.String("xlarge"),
* BackupMethod: pulumi.String("logical"),
* DatabaseType: pulumi.String("MySQL"),
* DatabaseRegion: pulumi.String("cn-hangzhou"),
* StorageRegion: pulumi.String("cn-hangzhou"),
* InstanceType: pulumi.String("RDS"),
* SourceEndpointInstanceType: pulumi.String("RDS"),
* ResourceGroupId: pulumi.String(_default.Ids[0]),
* SourceEndpointRegion: pulumi.String("cn-hangzhou"),
* SourceEndpointInstanceId: defaultInstance.ID(),
* SourceEndpointUserName: defaultAccountPrivilege.AccountName,
* SourceEndpointPassword: defaultRdsAccount.AccountPassword,
* BackupObjects: defaultDatabase.Name.ApplyT(func(name string) (string, error) {
* return fmt.Sprintf("[{\"DBName\":\"%v\"}]", name), nil
* }).(pulumi.StringOutput),
* BackupPeriod: pulumi.String("Monday"),
* BackupStartTime: pulumi.String("14:22"),
* BackupStorageType: pulumi.String("system"),
* BackupRetentionPeriod: pulumi.Int(740),
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.alicloud.resourcemanager.ResourcemanagerFunctions;
* import com.pulumi.alicloud.resourcemanager.inputs.GetResourceGroupsArgs;
* import com.pulumi.alicloud.rds.RdsFunctions;
* import com.pulumi.alicloud.rds.inputs.GetZonesArgs;
* import com.pulumi.alicloud.rds.inputs.GetInstanceClassesArgs;
* import com.pulumi.alicloud.vpc.VpcFunctions;
* import com.pulumi.alicloud.vpc.inputs.GetNetworksArgs;
* import com.pulumi.alicloud.vpc.inputs.GetSwitchesArgs;
* import com.pulumi.alicloud.ecs.SecurityGroup;
* import com.pulumi.alicloud.ecs.SecurityGroupArgs;
* import com.pulumi.alicloud.rds.Instance;
* import com.pulumi.alicloud.rds.InstanceArgs;
* import com.pulumi.alicloud.rds.Database;
* import com.pulumi.alicloud.rds.DatabaseArgs;
* import com.pulumi.alicloud.rds.RdsAccount;
* import com.pulumi.alicloud.rds.RdsAccountArgs;
* import com.pulumi.alicloud.rds.AccountPrivilege;
* import com.pulumi.alicloud.rds.AccountPrivilegeArgs;
* import com.pulumi.alicloud.dbs.BackupPlan;
* import com.pulumi.alicloud.dbs.BackupPlanArgs;
* 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) {
* final var config = ctx.config();
* final var name = config.get("name").orElse("terraform-example");
* final var default = ResourcemanagerFunctions.getResourceGroups(GetResourceGroupsArgs.builder()
* .status("OK")
* .build());
* final var defaultGetZones = RdsFunctions.getZones(GetZonesArgs.builder()
* .engine("MySQL")
* .engineVersion("8.0")
* .instanceChargeType("PostPaid")
* .category("HighAvailability")
* .dbInstanceStorageType("cloud_essd")
* .build());
* final var defaultGetInstanceClasses = RdsFunctions.getInstanceClasses(GetInstanceClassesArgs.builder()
* .zoneId(defaultGetZones.applyValue(getZonesResult -> getZonesResult.zones()[1].id()))
* .engine("MySQL")
* .engineVersion("8.0")
* .category("HighAvailability")
* .dbInstanceStorageType("cloud_essd")
* .instanceChargeType("PostPaid")
* .build());
* final var defaultGetNetworks = VpcFunctions.getNetworks(GetNetworksArgs.builder()
* .nameRegex("^default-NODELETING")
* .build());
* final var defaultGetSwitches = VpcFunctions.getSwitches(GetSwitchesArgs.builder()
* .vpcId(defaultGetNetworks.applyValue(getNetworksResult -> getNetworksResult.ids()[0]))
* .zoneId(defaultGetZones.applyValue(getZonesResult -> getZonesResult.zones()[1].id()))
* .build());
* final var vswitchId = defaultGetSwitches.applyValue(getSwitchesResult -> getSwitchesResult.ids()[0]);
* final var zoneId = defaultGetZones.applyValue(getZonesResult -> getZonesResult.ids()[1]);
* var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
* .name(name)
* .vpcId(defaultGetNetworks.applyValue(getNetworksResult -> getNetworksResult.ids()[0]))
* .build());
* var defaultInstance = new Instance("defaultInstance", InstanceArgs.builder()
* .engine("MySQL")
* .engineVersion("8.0")
* .dbInstanceStorageType("cloud_essd")
* .instanceType(defaultGetInstanceClasses.applyValue(getInstanceClassesResult -> getInstanceClassesResult.instanceClasses()[0].instanceClass()))
* .instanceStorage(defaultGetInstanceClasses.applyValue(getInstanceClassesResult -> getInstanceClassesResult.instanceClasses()[0].storageRange().min()))
* .vswitchId(vswitchId)
* .instanceName(name)
* .build());
* var defaultDatabase = new Database("defaultDatabase", DatabaseArgs.builder()
* .instanceId(defaultInstance.id())
* .name("tfdatabase")
* .build());
* var defaultRdsAccount = new RdsAccount("defaultRdsAccount", RdsAccountArgs.builder()
* .dbInstanceId(defaultInstance.id())
* .accountName("tfnormal000")
* .accountPassword("Test12345")
* .build());
* var defaultAccountPrivilege = new AccountPrivilege("defaultAccountPrivilege", AccountPrivilegeArgs.builder()
* .instanceId(defaultInstance.id())
* .accountName(defaultRdsAccount.accountName())
* .privilege("ReadWrite")
* .dbNames(defaultDatabase.name())
* .build());
* var defaultBackupPlan = new BackupPlan("defaultBackupPlan", BackupPlanArgs.builder()
* .backupPlanName(name)
* .paymentType("PayAsYouGo")
* .instanceClass("xlarge")
* .backupMethod("logical")
* .databaseType("MySQL")
* .databaseRegion("cn-hangzhou")
* .storageRegion("cn-hangzhou")
* .instanceType("RDS")
* .sourceEndpointInstanceType("RDS")
* .resourceGroupId(default_.ids()[0])
* .sourceEndpointRegion("cn-hangzhou")
* .sourceEndpointInstanceId(defaultInstance.id())
* .sourceEndpointUserName(defaultAccountPrivilege.accountName())
* .sourceEndpointPassword(defaultRdsAccount.accountPassword())
* .backupObjects(defaultDatabase.name().applyValue(name -> String.format("[{{\"DBName\":\"%s\"}}]", name)))
* .backupPeriod("Monday")
* .backupStartTime("14:22")
* .backupStorageType("system")
* .backupRetentionPeriod(740)
* .build());
* }
* }
* ```
* ```yaml
* configuration:
* name:
* type: string
* default: terraform-example
* resources:
* defaultSecurityGroup:
* type: alicloud:ecs:SecurityGroup
* name: default
* properties:
* name: ${name}
* vpcId: ${defaultGetNetworks.ids[0]}
* defaultInstance:
* type: alicloud:rds:Instance
* name: default
* properties:
* engine: MySQL
* engineVersion: '8.0'
* dbInstanceStorageType: cloud_essd
* instanceType: ${defaultGetInstanceClasses.instanceClasses[0].instanceClass}
* instanceStorage: ${defaultGetInstanceClasses.instanceClasses[0].storageRange.min}
* vswitchId: ${vswitchId}
* instanceName: ${name}
* defaultDatabase:
* type: alicloud:rds:Database
* name: default
* properties:
* instanceId: ${defaultInstance.id}
* name: tfdatabase
* defaultRdsAccount:
* type: alicloud:rds:RdsAccount
* name: default
* properties:
* dbInstanceId: ${defaultInstance.id}
* accountName: tfnormal000
* accountPassword: Test12345
* defaultAccountPrivilege:
* type: alicloud:rds:AccountPrivilege
* name: default
* properties:
* instanceId: ${defaultInstance.id}
* accountName: ${defaultRdsAccount.accountName}
* privilege: ReadWrite
* dbNames:
* - ${defaultDatabase.name}
* defaultBackupPlan:
* type: alicloud:dbs:BackupPlan
* name: default
* properties:
* backupPlanName: ${name}
* paymentType: PayAsYouGo
* instanceClass: xlarge
* backupMethod: logical
* databaseType: MySQL
* databaseRegion: cn-hangzhou
* storageRegion: cn-hangzhou
* instanceType: RDS
* sourceEndpointInstanceType: RDS
* resourceGroupId: ${default.ids[0]}
* sourceEndpointRegion: cn-hangzhou
* sourceEndpointInstanceId: ${defaultInstance.id}
* sourceEndpointUserName: ${defaultAccountPrivilege.accountName}
* sourceEndpointPassword: ${defaultRdsAccount.accountPassword}
* backupObjects: '[{"DBName":"${defaultDatabase.name}"}]'
* backupPeriod: Monday
* backupStartTime: 14:22
* backupStorageType: system
* backupRetentionPeriod: 740
* variables:
* default:
* fn::invoke:
* Function: alicloud:resourcemanager:getResourceGroups
* Arguments:
* status: OK
* defaultGetZones:
* fn::invoke:
* Function: alicloud:rds:getZones
* Arguments:
* engine: MySQL
* engineVersion: '8.0'
* instanceChargeType: PostPaid
* category: HighAvailability
* dbInstanceStorageType: cloud_essd
* defaultGetInstanceClasses:
* fn::invoke:
* Function: alicloud:rds:getInstanceClasses
* Arguments:
* zoneId: ${defaultGetZones.zones[1].id}
* engine: MySQL
* engineVersion: '8.0'
* category: HighAvailability
* dbInstanceStorageType: cloud_essd
* instanceChargeType: PostPaid
* defaultGetNetworks:
* fn::invoke:
* Function: alicloud:vpc:getNetworks
* Arguments:
* nameRegex: ^default-NODELETING
* defaultGetSwitches:
* fn::invoke:
* Function: alicloud:vpc:getSwitches
* Arguments:
* vpcId: ${defaultGetNetworks.ids[0]}
* zoneId: ${defaultGetZones.zones[1].id}
* vswitchId: ${defaultGetSwitches.ids[0]}
* zoneId: ${defaultGetZones.ids[1]}
* ```
*
* ## Import
* DBS Backup Plan can be imported using the id, e.g.
* ```sh
* $ pulumi import alicloud:dbs/backupPlan:BackupPlan example
* ```
*/
public class BackupPlan internal constructor(
override val javaResource: com.pulumi.alicloud.dbs.BackupPlan,
) : KotlinCustomResource(javaResource, BackupPlanMapper) {
/**
* The ID of the backup gateway. This parameter is required when the `source_endpoint_instance_type` is `Agent`.
*/
public val backupGatewayId: Output
get() = javaResource.backupGatewayId().applyValue({ args0 -> args0 })
/**
* The backup log interval seconds.
*/
public val backupLogIntervalSeconds: Output?
get() = javaResource.backupLogIntervalSeconds().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Backup method. Valid values: `duplication`, `logical`, `physical`.
*/
public val backupMethod: Output
get() = javaResource.backupMethod().applyValue({ args0 -> args0 })
/**
* The backup object.
*/
public val backupObjects: Output
get() = javaResource.backupObjects().applyValue({ args0 -> args0 })
/**
* Full backup cycle, Valid values: `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`. supports the selection of multiple fetch values, separated by English commas (,).
*/
public val backupPeriod: Output
get() = javaResource.backupPeriod().applyValue({ args0 -> args0 })
/**
* The name of the resource.
*/
public val backupPlanName: Output
get() = javaResource.backupPlanName().applyValue({ args0 -> args0 })
/**
* The backup rate limit.
*/
public val backupRateLimit: Output?
get() = javaResource.backupRateLimit().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The retention time of backup data. Valid values: 0 to 1825. Default value: 730 days.
*/
public val backupRetentionPeriod: Output
get() = javaResource.backupRetentionPeriod().applyValue({ args0 -> args0 })
/**
* The backup speed limit.
*/
public val backupSpeedLimit: Output?
get() = javaResource.backupSpeedLimit().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The start time of full Backup. The format is ` HH:mm` Z(UTC time).
*/
public val backupStartTime: Output
get() = javaResource.backupStartTime().applyValue({ args0 -> args0 })
/**
* Built-in storage type, Valid values: `system`.
*/
public val backupStorageType: Output
get() = javaResource.backupStorageType().applyValue({ args0 -> args0 })
/**
* The backup strategy type. Valid values: `simple`, `manual`.
*/
public val backupStrategyType: Output?
get() = javaResource.backupStrategyType().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The UID that is backed up across Alibaba cloud accounts.
*/
public val crossAliyunId: Output
get() = javaResource.crossAliyunId().applyValue({ args0 -> args0 })
/**
* The name of the RAM role that is backed up across Alibaba cloud accounts.
*/
public val crossRoleName: Output
get() = javaResource.crossRoleName().applyValue({ args0 -> args0 })
/**
* The database region.
*/
public val databaseRegion: Output?
get() = javaResource.databaseRegion().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Database type. Valid values: `DRDS`, `FIle`, `MSSQL`, `MariaDB`, `MongoDB`, `MySQL`, `Oracle`, `PPAS`, `PostgreSQL`, `Redis`.
*/
public val databaseType: Output
get() = javaResource.databaseType().applyValue({ args0 -> args0 })
/**
* The storage time for conversion to archive cold standby is 365 days by default.
*/
public val duplicationArchivePeriod: Output
get() = javaResource.duplicationArchivePeriod().applyValue({ args0 -> args0 })
/**
* The storage time is converted to low-frequency access. The default time is 180 days.
*/
public val duplicationInfrequentAccessPeriod: Output
get() = javaResource.duplicationInfrequentAccessPeriod().applyValue({ args0 -> args0 })
/**
* Whether to enable incremental log Backup.
*/
public val enableBackupLog: Output
get() = javaResource.enableBackupLog().applyValue({ args0 -> args0 })
/**
* The instance class. Valid values: `large`, `medium`, `micro`, `small`, `xlarge`.
*/
public val instanceClass: Output
get() = javaResource.instanceClass().applyValue({ args0 -> args0 })
/**
* The instance type. Valid values: `RDS`, `PolarDB`, `DDS`, `Kvstore`, `Other`.
*/
public val instanceType: Output?
get() = javaResource.instanceType().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The OSS Bucket name. The system automatically generates a new name by default.
*/
public val ossBucketName: Output
get() = javaResource.ossBucketName().applyValue({ args0 -> args0 })
/**
* The payment type of the resource. Valid values: `PayAsYouGo`, `Subscription`.
*/
public val paymentType: Output
get() = javaResource.paymentType().applyValue({ args0 -> args0 })
/**
* Specify that the prepaid instance is of the package year or monthly type. Valid values: `Month`, `Year`.
*/
public val period: Output?
get() = javaResource.period().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* The ID of the resource group.
*/
public val resourceGroupId: Output
get() = javaResource.resourceGroupId().applyValue({ args0 -> args0 })
/**
* The name of the database. This parameter is required when the `database_type` is `PostgreSQL` or `MongoDB`.
*/
public val sourceEndpointDatabaseName: Output
get() = javaResource.sourceEndpointDatabaseName().applyValue({ args0 -> args0 })
/**
* The ID of the database instance. This parameter is required when the `source_endpoint_instance_type` is `RDS`, `ECS`, `DDS`, or `Express`.
*/
public val sourceEndpointInstanceId: Output
get() = javaResource.sourceEndpointInstanceId().applyValue({ args0 -> args0 })
/**
* The location of the database. Valid values: `RDS`, `ECS`, `Express`, `Agent`, `DDS`, `Other`.
*/
public val sourceEndpointInstanceType: Output
get() = javaResource.sourceEndpointInstanceType().applyValue({ args0 -> args0 })
/**
* The source endpoint ip.
*/
public val sourceEndpointIp: Output?
get() = javaResource.sourceEndpointIp().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Oracle SID name. This parameter is required when the `database_type` is `Oracle`.
*/
public val sourceEndpointOracleSid: Output?
get() = javaResource.sourceEndpointOracleSid().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The source endpoint password. This parameter is not required when the `database_type` is `Redis`, or when the `source_endpoint_instance_type` is `Agent` and the `database_type` is `MSSQL`. This parameter is required in other scenarios.
*/
public val sourceEndpointPassword: Output?
get() = javaResource.sourceEndpointPassword().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The source endpoint port.
*/
public val sourceEndpointPort: Output?
get() = javaResource.sourceEndpointPort().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* The region of the database. This parameter is required when the `source_endpoint_instance_type` is `RDS`, `ECS`, `DDS`, `Express`, or `Agent`.
*/
public val sourceEndpointRegion: Output
get() = javaResource.sourceEndpointRegion().applyValue({ args0 -> args0 })
/**
* Oracle SID name. This parameter is required when the `database_type` is `Oracle`.
*/
public val sourceEndpointSid: Output
get() = javaResource.sourceEndpointSid().applyValue({ args0 -> args0 })
/**
* The source endpoint username. This parameter is not required when the `database_type` is `Redis`, or when the `source_endpoint_instance_type` is `Agent` and the `database_type` is `MSSQL`. This parameter is required in other scenarios.
*/
public val sourceEndpointUserName: Output
get() = javaResource.sourceEndpointUserName().applyValue({ args0 -> args0 })
/**
* The status of the resource. Valid values: `pause`, `running`.
*/
public val status: Output
get() = javaResource.status().applyValue({ args0 -> args0 })
/**
* The storage region.
*/
public val storageRegion: Output?
get() = javaResource.storageRegion().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Specify purchase duration. When the parameter `period` is `Year`, the `used_time` value is 1 to 9. When the parameter `period` is `Month`, the `used_time` value is 1 to 11.
*/
public val usedTime: Output?
get() = javaResource.usedTime().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
}
public object BackupPlanMapper : ResourceMapper {
override fun supportsMappingOfType(javaResource: Resource): Boolean =
com.pulumi.alicloud.dbs.BackupPlan::class == javaResource::class
override fun map(javaResource: Resource): BackupPlan = BackupPlan(
javaResource as
com.pulumi.alicloud.dbs.BackupPlan,
)
}
/**
* @see [BackupPlan].
* @param name The _unique_ name of the resulting resource.
* @param block Builder for [BackupPlan].
*/
public suspend fun backupPlan(name: String, block: suspend BackupPlanResourceBuilder.() -> Unit): BackupPlan {
val builder = BackupPlanResourceBuilder()
builder.name(name)
block(builder)
return builder.build()
}
/**
* @see [BackupPlan].
* @param name The _unique_ name of the resulting resource.
*/
public fun backupPlan(name: String): BackupPlan {
val builder = BackupPlanResourceBuilder()
builder.name(name)
return builder.build()
}