All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.alicloud.kvstore.InstanceArgs Maven / Gradle / Ivy

There is a newer version: 3.63.0-alpha.1727424957
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.alicloud.kvstore;

import com.pulumi.alicloud.kvstore.inputs.InstanceParameterArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class InstanceArgs extends com.pulumi.resources.ResourceArgs {

    public static final InstanceArgs Empty = new InstanceArgs();

    /**
     * Whether to renewal a KVStore DBInstance automatically or not. It is valid when payment_type is `PrePaid`. Default value: `false`.
     * 
     */
    @Import(name="autoRenew")
    private @Nullable Output autoRenew;

    /**
     * @return Whether to renewal a KVStore DBInstance automatically or not. It is valid when payment_type is `PrePaid`. Default value: `false`.
     * 
     */
    public Optional> autoRenew() {
        return Optional.ofNullable(this.autoRenew);
    }

    /**
     * Auto-renewal period of an KVStore DBInstance, in the unit of the month. It is valid when payment_type is `PrePaid`. Valid values: [1~12]. Default value: `1`.
     * 
     */
    @Import(name="autoRenewPeriod")
    private @Nullable Output autoRenewPeriod;

    /**
     * @return Auto-renewal period of an KVStore DBInstance, in the unit of the month. It is valid when payment_type is `PrePaid`. Valid values: [1~12]. Default value: `1`.
     * 
     */
    public Optional> autoRenewPeriod() {
        return Optional.ofNullable(this.autoRenewPeriod);
    }

    /**
     * Specifies whether to use a coupon. Default value: `false`.
     * 
     */
    @Import(name="autoUseCoupon")
    private @Nullable Output autoUseCoupon;

    /**
     * @return Specifies whether to use a coupon. Default value: `false`.
     * 
     */
    public Optional> autoUseCoupon() {
        return Optional.ofNullable(this.autoUseCoupon);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and `zone_id` instead.
     * 
     * @deprecated
     * Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead.
     * 
     */
    @Deprecated /* Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead. */
    @Import(name="availabilityZone")
    private @Nullable Output availabilityZone;

    /**
     * @return It has been deprecated from provider version 1.101.0 and `zone_id` instead.
     * 
     * @deprecated
     * Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead.
     * 
     */
    @Deprecated /* Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead. */
    public Optional> availabilityZone() {
        return Optional.ofNullable(this.availabilityZone);
    }

    /**
     * The ID of the backup file of the source instance.
     * 
     */
    @Import(name="backupId")
    private @Nullable Output backupId;

    /**
     * @return The ID of the backup file of the source instance.
     * 
     */
    public Optional> backupId() {
        return Optional.ofNullable(this.backupId);
    }

    /**
     * Backup period.
     * 
     */
    @Import(name="backupPeriods")
    private @Nullable Output> backupPeriods;

    /**
     * @return Backup period.
     * 
     */
    public Optional>> backupPeriods() {
        return Optional.ofNullable(this.backupPeriods);
    }

    /**
     * Backup time, the format is HH:mmZ-HH:mmZ (UTC time).
     * 
     */
    @Import(name="backupTime")
    private @Nullable Output backupTime;

    /**
     * @return Backup time, the format is HH:mmZ-HH:mmZ (UTC time).
     * 
     */
    public Optional> backupTime() {
        return Optional.ofNullable(this.backupTime);
    }

    /**
     * The ID of the event or the business information.
     * 
     */
    @Import(name="businessInfo")
    private @Nullable Output businessInfo;

    /**
     * @return The ID of the event or the business information.
     * 
     */
    public Optional> businessInfo() {
        return Optional.ofNullable(this.businessInfo);
    }

    /**
     * The storage capacity of the KVStore DBInstance. Unit: MB.
     * 
     */
    @Import(name="capacity")
    private @Nullable Output capacity;

    /**
     * @return The storage capacity of the KVStore DBInstance. Unit: MB.
     * 
     */
    public Optional> capacity() {
        return Optional.ofNullable(this.capacity);
    }

    /**
     * The configuration of the KVStore DBInstance. Available parameters can refer to the latest docs [Instance configurations table](https://www.alibabacloud.com/help/en/redis/user-guide/supported-parameters).
     * 
     */
    @Import(name="config")
    private @Nullable Output> config;

    /**
     * @return The configuration of the KVStore DBInstance. Available parameters can refer to the latest docs [Instance configurations table](https://www.alibabacloud.com/help/en/redis/user-guide/supported-parameters).
     * 
     */
    public Optional>> config() {
        return Optional.ofNullable(this.config);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     * @deprecated
     * Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
     * 
     */
    @Deprecated /* Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
    @Import(name="connectionStringPrefix")
    private @Nullable Output connectionStringPrefix;

    /**
     * @return It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     * @deprecated
     * Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
     * 
     */
    @Deprecated /* Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
    public Optional> connectionStringPrefix() {
        return Optional.ofNullable(this.connectionStringPrefix);
    }

    /**
     * The coupon code. **NOTE:** The default value `youhuiquan_promotion_option_id_for_blank` removed since v1.216.0, this can cause your status file to change even if it has not been modified, so please review your change plan before apply change plan.
     * 
     */
    @Import(name="couponNo")
    private @Nullable Output couponNo;

    /**
     * @return The coupon code. **NOTE:** The default value `youhuiquan_promotion_option_id_for_blank` removed since v1.216.0, this can cause your status file to change even if it has not been modified, so please review your change plan before apply change plan.
     * 
     */
    public Optional> couponNo() {
        return Optional.ofNullable(this.couponNo);
    }

    /**
     * The name of KVStore DBInstance. It is a string of 2 to 256 characters.
     * 
     */
    @Import(name="dbInstanceName")
    private @Nullable Output dbInstanceName;

    /**
     * @return The name of KVStore DBInstance. It is a string of 2 to 256 characters.
     * 
     */
    public Optional> dbInstanceName() {
        return Optional.ofNullable(this.dbInstanceName);
    }

    /**
     * The ID of the dedicated cluster. This parameter is required when you create an ApsaraDB for Redis instance in a dedicated cluster.
     * 
     */
    @Import(name="dedicatedHostGroupId")
    private @Nullable Output dedicatedHostGroupId;

    /**
     * @return The ID of the dedicated cluster. This parameter is required when you create an ApsaraDB for Redis instance in a dedicated cluster.
     * 
     */
    public Optional> dedicatedHostGroupId() {
        return Optional.ofNullable(this.dedicatedHostGroupId);
    }

    /**
     * Specifies whether to precheck the request. Valid values:
     * 
     */
    @Import(name="dryRun")
    private @Nullable Output dryRun;

    /**
     * @return Specifies whether to precheck the request. Valid values:
     * 
     */
    public Optional> dryRun() {
        return Optional.ofNullable(this.dryRun);
    }

    /**
     * The time when the database is switched after the instance is migrated, or when the major version is upgraded, or when the instance class is upgraded. Valid values:
     * - `Immediately` (Default): The configurations are immediately changed.
     * - `MaintainTime`: The configurations are changed within the maintenance window. You can set `maintain_start_time` and `maintain_end_time` to change the maintenance window.
     * 
     */
    @Import(name="effectiveTime")
    private @Nullable Output effectiveTime;

    /**
     * @return The time when the database is switched after the instance is migrated, or when the major version is upgraded, or when the instance class is upgraded. Valid values:
     * - `Immediately` (Default): The configurations are immediately changed.
     * - `MaintainTime`: The configurations are changed within the maintenance window. You can set `maintain_start_time` and `maintain_end_time` to change the maintenance window.
     * 
     */
    public Optional> effectiveTime() {
        return Optional.ofNullable(this.effectiveTime);
    }

    /**
     * Turn on or off incremental backup. Valid values: `1`, `0`. Default value: `0`
     * 
     */
    @Import(name="enableBackupLog")
    private @Nullable Output enableBackupLog;

    /**
     * @return Turn on or off incremental backup. Valid values: `1`, `0`. Default value: `0`
     * 
     */
    public Optional> enableBackupLog() {
        return Optional.ofNullable(this.enableBackupLog);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     * @deprecated
     * Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
     * 
     */
    @Deprecated /* Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
    @Import(name="enablePublic")
    private @Nullable Output enablePublic;

    /**
     * @return It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     * @deprecated
     * Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
     * 
     */
    @Deprecated /* Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
    public Optional> enablePublic() {
        return Optional.ofNullable(this.enablePublic);
    }

    /**
     * The Custom key ID, which you can get by calling DescribeEncryptionKeyList.If this parameter is not passed, the key is automatically generated by the key management service. To create a custom key, you can call the CreateKey interface of the key management service.
     * 
     */
    @Import(name="encryptionKey")
    private @Nullable Output encryptionKey;

    /**
     * @return The Custom key ID, which you can get by calling DescribeEncryptionKeyList.If this parameter is not passed, the key is automatically generated by the key management service. To create a custom key, you can call the CreateKey interface of the key management service.
     * 
     */
    public Optional> encryptionKey() {
        return Optional.ofNullable(this.encryptionKey);
    }

    /**
     * The Encryption algorithm, default AES-CTR-256.Note that this parameter is only available when the TDEStatus parameter is Enabled.
     * 
     */
    @Import(name="encryptionName")
    private @Nullable Output encryptionName;

    /**
     * @return The Encryption algorithm, default AES-CTR-256.Note that this parameter is only available when the TDEStatus parameter is Enabled.
     * 
     */
    public Optional> encryptionName() {
        return Optional.ofNullable(this.encryptionName);
    }

    /**
     * The engine version of the KVStore DBInstance. Valid values: ["2.8", "4.0", "5.0", "6.0", "7.0"]. Default value: `5.0`.
     * **NOTE:** When `instance_type = Memcache`, the `engine_version` only supports "4.0".
     * 
     */
    @Import(name="engineVersion")
    private @Nullable Output engineVersion;

    /**
     * @return The engine version of the KVStore DBInstance. Valid values: ["2.8", "4.0", "5.0", "6.0", "7.0"]. Default value: `5.0`.
     * **NOTE:** When `instance_type = Memcache`, the `engine_version` only supports "4.0".
     * 
     */
    public Optional> engineVersion() {
        return Optional.ofNullable(this.engineVersion);
    }

    /**
     * Specifies whether to forcibly change the type. Default value: `true`.
     * 
     */
    @Import(name="forceUpgrade")
    private @Nullable Output forceUpgrade;

    /**
     * @return Specifies whether to forcibly change the type. Default value: `true`.
     * 
     */
    public Optional> forceUpgrade() {
        return Optional.ofNullable(this.forceUpgrade);
    }

    /**
     * Whether to create a distributed cache. Default value: `false`.
     * 
     */
    @Import(name="globalInstance")
    private @Nullable Output globalInstance;

    /**
     * @return Whether to create a distributed cache. Default value: `false`.
     * 
     */
    public Optional> globalInstance() {
        return Optional.ofNullable(this.globalInstance);
    }

    /**
     * The ID of distributed cache.
     * 
     */
    @Import(name="globalInstanceId")
    private @Nullable Output globalInstanceId;

    /**
     * @return The ID of distributed cache.
     * 
     */
    public Optional> globalInstanceId() {
        return Optional.ofNullable(this.globalInstanceId);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and `payment_type` instead.
     * 
     * @deprecated
     * Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead.
     * 
     */
    @Deprecated /* Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead. */
    @Import(name="instanceChargeType")
    private @Nullable Output instanceChargeType;

    /**
     * @return It has been deprecated from provider version 1.101.0 and `payment_type` instead.
     * 
     * @deprecated
     * Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead.
     * 
     */
    @Deprecated /* Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead. */
    public Optional> instanceChargeType() {
        return Optional.ofNullable(this.instanceChargeType);
    }

    /**
     * Type of the applied ApsaraDB for Redis instance. It can be retrieved by data source `alicloud.kvstore.getInstanceClasses`
     * or referring to help-docs [Instance type table](https://www.alibabacloud.com/help/doc-detail/26350.htm).
     * 
     */
    @Import(name="instanceClass")
    private @Nullable Output instanceClass;

    /**
     * @return Type of the applied ApsaraDB for Redis instance. It can be retrieved by data source `alicloud.kvstore.getInstanceClasses`
     * or referring to help-docs [Instance type table](https://www.alibabacloud.com/help/doc-detail/26350.htm).
     * 
     */
    public Optional> instanceClass() {
        return Optional.ofNullable(this.instanceClass);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and `db_instance_name` instead.
     * 
     * @deprecated
     * Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead.
     * 
     */
    @Deprecated /* Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead. */
    @Import(name="instanceName")
    private @Nullable Output instanceName;

    /**
     * @return It has been deprecated from provider version 1.101.0 and `db_instance_name` instead.
     * 
     * @deprecated
     * Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead.
     * 
     */
    @Deprecated /* Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead. */
    public Optional> instanceName() {
        return Optional.ofNullable(this.instanceName);
    }

    /**
     * Whether to open the release protection.
     * 
     */
    @Import(name="instanceReleaseProtection")
    private @Nullable Output instanceReleaseProtection;

    /**
     * @return Whether to open the release protection.
     * 
     */
    public Optional> instanceReleaseProtection() {
        return Optional.ofNullable(this.instanceReleaseProtection);
    }

    /**
     * The engine type of the KVStore DBInstance. Valid values: `Redis` or `Memcache`. Default value: `Redis`.
     * 
     */
    @Import(name="instanceType")
    private @Nullable Output instanceType;

    /**
     * @return The engine type of the KVStore DBInstance. Valid values: `Redis` or `Memcache`. Default value: `Redis`.
     * 
     */
    public Optional> instanceType() {
        return Optional.ofNullable(this.instanceType);
    }

    /**
     * Specifies whether to enable automatic minor version update. Valid values:
     * 
     */
    @Import(name="isAutoUpgradeOpen")
    private @Nullable Output isAutoUpgradeOpen;

    /**
     * @return Specifies whether to enable automatic minor version update. Valid values:
     * 
     */
    public Optional> isAutoUpgradeOpen() {
        return Optional.ofNullable(this.isAutoUpgradeOpen);
    }

    /**
     * An KMS encrypts password used to an instance. If the `password` is filled in, this field will be ignored.
     * 
     */
    @Import(name="kmsEncryptedPassword")
    private @Nullable Output kmsEncryptedPassword;

    /**
     * @return An KMS encrypts password used to an instance. If the `password` is filled in, this field will be ignored.
     * 
     */
    public Optional> kmsEncryptedPassword() {
        return Optional.ofNullable(this.kmsEncryptedPassword);
    }

    /**
     * An KMS encryption context used to decrypt `kms_encrypted_password` before creating or updating instance with `kms_encrypted_password`. See [Encryption Context](https://www.alibabacloud.com/help/doc-detail/42975.htm). It is valid when `kms_encrypted_password` is set.
     * 
     */
    @Import(name="kmsEncryptionContext")
    private @Nullable Output> kmsEncryptionContext;

    /**
     * @return An KMS encryption context used to decrypt `kms_encrypted_password` before creating or updating instance with `kms_encrypted_password`. See [Encryption Context](https://www.alibabacloud.com/help/doc-detail/42975.htm). It is valid when `kms_encrypted_password` is set.
     * 
     */
    public Optional>> kmsEncryptionContext() {
        return Optional.ofNullable(this.kmsEncryptionContext);
    }

    /**
     * The end time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
     * 
     */
    @Import(name="maintainEndTime")
    private @Nullable Output maintainEndTime;

    /**
     * @return The end time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
     * 
     */
    public Optional> maintainEndTime() {
        return Optional.ofNullable(this.maintainEndTime);
    }

    /**
     * The start time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
     * 
     */
    @Import(name="maintainStartTime")
    private @Nullable Output maintainStartTime;

    /**
     * @return The start time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
     * 
     */
    public Optional> maintainStartTime() {
        return Optional.ofNullable(this.maintainStartTime);
    }

    /**
     * "Field `node_type` has been deprecated from version 1.120.1". This parameter is determined by the `instance_class`.
     * 
     * @deprecated
     * Field 'node_type' has been deprecated from version 1.120.1
     * 
     */
    @Deprecated /* Field 'node_type' has been deprecated from version 1.120.1 */
    @Import(name="nodeType")
    private @Nullable Output nodeType;

    /**
     * @return "Field `node_type` has been deprecated from version 1.120.1". This parameter is determined by the `instance_class`.
     * 
     * @deprecated
     * Field 'node_type' has been deprecated from version 1.120.1
     * 
     */
    @Deprecated /* Field 'node_type' has been deprecated from version 1.120.1 */
    public Optional> nodeType() {
        return Optional.ofNullable(this.nodeType);
    }

    /**
     * Specifies a change type when you change the configuration of a subscription instance. Valid values: `UPGRADE`, `DOWNGRADE`. Default value: `UPGRADE`. `UPGRADE` means upgrades the configuration of a subscription instance. `DOWNGRADE` means downgrades the configuration of a subscription instance.
     * 
     */
    @Import(name="orderType")
    private @Nullable Output orderType;

    /**
     * @return Specifies a change type when you change the configuration of a subscription instance. Valid values: `UPGRADE`, `DOWNGRADE`. Default value: `UPGRADE`. `UPGRADE` means upgrades the configuration of a subscription instance. `DOWNGRADE` means downgrades the configuration of a subscription instance.
     * 
     */
    public Optional> orderType() {
        return Optional.ofNullable(this.orderType);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and `config` instead. See `parameters` below.
     * 
     * @deprecated
     * Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead.
     * 
     */
    @Deprecated /* Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead. */
    @Import(name="parameters")
    private @Nullable Output> parameters;

    /**
     * @return It has been deprecated from provider version 1.101.0 and `config` instead. See `parameters` below.
     * 
     * @deprecated
     * Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead.
     * 
     */
    @Deprecated /* Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead. */
    public Optional>> parameters() {
        return Optional.ofNullable(this.parameters);
    }

    /**
     * The password of the KVStore DBInstance. The password that is used to connect to the instance. The password must be 8 to 32 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, special characters, and digits. Special characters include: `! {@literal @} # $ % ^ & * ( ) _ + - =`
     * 
     */
    @Import(name="password")
    private @Nullable Output password;

    /**
     * @return The password of the KVStore DBInstance. The password that is used to connect to the instance. The password must be 8 to 32 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, special characters, and digits. Special characters include: `! {@literal @} # $ % ^ & * ( ) _ + - =`
     * 
     */
    public Optional> password() {
        return Optional.ofNullable(this.password);
    }

    /**
     * The billing method of the KVStore DBInstance. Valid values: `PrePaid`, `PostPaid`. Default value: `PostPaid`.
     * 
     */
    @Import(name="paymentType")
    private @Nullable Output paymentType;

    /**
     * @return The billing method of the KVStore DBInstance. Valid values: `PrePaid`, `PostPaid`. Default value: `PostPaid`.
     * 
     */
    public Optional> paymentType() {
        return Optional.ofNullable(this.paymentType);
    }

    /**
     * The duration that you will buy KVStore DBInstance (in month). It is valid when payment_type is `PrePaid`. Valid values: `[1~9]`, `12`, `24`, `36`.
     * 
     */
    @Import(name="period")
    private @Nullable Output period;

    /**
     * @return The duration that you will buy KVStore DBInstance (in month). It is valid when payment_type is `PrePaid`. Valid values: `[1~9]`, `12`, `24`, `36`.
     * 
     */
    public Optional> period() {
        return Optional.ofNullable(this.period);
    }

    /**
     * It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     */
    @Import(name="port")
    private @Nullable Output port;

    /**
     * @return It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
     * 
     */
    public Optional> port() {
        return Optional.ofNullable(this.port);
    }

    /**
     * Private network connection port, used to modify the private network connection port.
     * 
     */
    @Import(name="privateConnectionPort")
    private @Nullable Output privateConnectionPort;

    /**
     * @return Private network connection port, used to modify the private network connection port.
     * 
     */
    public Optional> privateConnectionPort() {
        return Optional.ofNullable(this.privateConnectionPort);
    }

    /**
     * Private network connection prefix, used to modify the private network connection address. Only supports updating private network connections for existing instance.
     * 
     */
    @Import(name="privateConnectionPrefix")
    private @Nullable Output privateConnectionPrefix;

    /**
     * @return Private network connection prefix, used to modify the private network connection address. Only supports updating private network connections for existing instance.
     * 
     */
    public Optional> privateConnectionPrefix() {
        return Optional.ofNullable(this.privateConnectionPrefix);
    }

    /**
     * The internal IP address of the instance.
     * 
     */
    @Import(name="privateIp")
    private @Nullable Output privateIp;

    /**
     * @return The internal IP address of the instance.
     * 
     */
    public Optional> privateIp() {
        return Optional.ofNullable(this.privateIp);
    }

    /**
     * The number of read replicas in the primary zone. Valid values: `1` to `9`.
     * 
     */
    @Import(name="readOnlyCount")
    private @Nullable Output readOnlyCount;

    /**
     * @return The number of read replicas in the primary zone. Valid values: `1` to `9`.
     * 
     */
    public Optional> readOnlyCount() {
        return Optional.ofNullable(this.readOnlyCount);
    }

    /**
     * The ID of resource group which the resource belongs.
     * 
     */
    @Import(name="resourceGroupId")
    private @Nullable Output resourceGroupId;

    /**
     * @return The ID of resource group which the resource belongs.
     * 
     */
    public Optional> resourceGroupId() {
        return Optional.ofNullable(this.resourceGroupId);
    }

    /**
     * The point in time of a backup file.
     * 
     */
    @Import(name="restoreTime")
    private @Nullable Output restoreTime;

    /**
     * @return The point in time of a backup file.
     * 
     */
    public Optional> restoreTime() {
        return Optional.ofNullable(this.restoreTime);
    }

    /**
     * The Specify the global resource descriptor ARN (Alibaba Cloud Resource Name) information of the role to be authorized, and use the related key management services after the authorization is completed, in the format: `acs:ram::$accountID:role/$roleName`.
     * 
     */
    @Import(name="roleArn")
    private @Nullable Output roleArn;

    /**
     * @return The Specify the global resource descriptor ARN (Alibaba Cloud Resource Name) information of the role to be authorized, and use the related key management services after the authorization is completed, in the format: `acs:ram::$accountID:role/$roleName`.
     * 
     */
    public Optional> roleArn() {
        return Optional.ofNullable(this.roleArn);
    }

    /**
     * The ID of the secondary zone to which you want to migrate the ApsaraDB for Redis instance.
     * > **NOTE:** If you specify this parameter, the master node and replica node of the instance can be deployed in different zones and disaster recovery is implemented across zones. The instance can withstand failures in data centers.
     * 
     */
    @Import(name="secondaryZoneId")
    private @Nullable Output secondaryZoneId;

    /**
     * @return The ID of the secondary zone to which you want to migrate the ApsaraDB for Redis instance.
     * > **NOTE:** If you specify this parameter, the master node and replica node of the instance can be deployed in different zones and disaster recovery is implemented across zones. The instance can withstand failures in data centers.
     * 
     */
    public Optional> secondaryZoneId() {
        return Optional.ofNullable(this.secondaryZoneId);
    }

    /**
     * The ID of security groups. Separate multiple security group IDs with commas (,), such as `sg-***,sg-***,sg-***`.
     * 
     */
    @Import(name="securityGroupId")
    private @Nullable Output securityGroupId;

    /**
     * @return The ID of security groups. Separate multiple security group IDs with commas (,), such as `sg-***,sg-***,sg-***`.
     * 
     */
    public Optional> securityGroupId() {
        return Optional.ofNullable(this.securityGroupId);
    }

    /**
     * The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
     * 
     */
    @Import(name="securityIpGroupAttribute")
    private @Nullable Output securityIpGroupAttribute;

    /**
     * @return The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
     * 
     */
    public Optional> securityIpGroupAttribute() {
        return Optional.ofNullable(this.securityIpGroupAttribute);
    }

    /**
     * The name of the whitelist group.
     * 
     */
    @Import(name="securityIpGroupName")
    private @Nullable Output securityIpGroupName;

    /**
     * @return The name of the whitelist group.
     * 
     */
    public Optional> securityIpGroupName() {
        return Optional.ofNullable(this.securityIpGroupName);
    }

    /**
     * The IP addresses in the whitelist group. The maximum number of IP addresses in the whitelist group is 1000.
     * 
     */
    @Import(name="securityIps")
    private @Nullable Output> securityIps;

    /**
     * @return The IP addresses in the whitelist group. The maximum number of IP addresses in the whitelist group is 1000.
     * 
     */
    public Optional>> securityIps() {
        return Optional.ofNullable(this.securityIps);
    }

    /**
     * The number of data shards. This parameter is available only if you create a cluster instance that uses cloud disks. You can use this parameter to specify a custom number of data shards. **NOTE:** From version 1.216.0, `shard_count` can be modified.
     * 
     */
    @Import(name="shardCount")
    private @Nullable Output shardCount;

    /**
     * @return The number of data shards. This parameter is available only if you create a cluster instance that uses cloud disks. You can use this parameter to specify a custom number of data shards. **NOTE:** From version 1.216.0, `shard_count` can be modified.
     * 
     */
    public Optional> shardCount() {
        return Optional.ofNullable(this.shardCount);
    }

    /**
     * The number of read replicas in the secondary zone. **NOTE:**: When you create a multi-zone read/write splitting instance, you must specify both `secondary_zone_id` and `slave_read_only_count`.
     * > **NOTE:** The sum of `read_only_count` and `slave_read_only_count` cannot be greater than `9`.
     * 
     */
    @Import(name="slaveReadOnlyCount")
    private @Nullable Output slaveReadOnlyCount;

    /**
     * @return The number of read replicas in the secondary zone. **NOTE:**: When you create a multi-zone read/write splitting instance, you must specify both `secondary_zone_id` and `slave_read_only_count`.
     * > **NOTE:** The sum of `read_only_count` and `slave_read_only_count` cannot be greater than `9`.
     * 
     */
    public Optional> slaveReadOnlyCount() {
        return Optional.ofNullable(this.slaveReadOnlyCount);
    }

    /**
     * The ID of the source instance.
     * 
     */
    @Import(name="srcdbInstanceId")
    private @Nullable Output srcdbInstanceId;

    /**
     * @return The ID of the source instance.
     * 
     */
    public Optional> srcdbInstanceId() {
        return Optional.ofNullable(this.srcdbInstanceId);
    }

    /**
     * Modifies the SSL status. Valid values: `Disable`, `Enable` and `Update`.
     * **NOTE:** This functionality is supported by Cluster mode (Redis 2.8, 4.0, 5.0) and Standard mode( Redis 2.8 only).
     * 
     */
    @Import(name="sslEnable")
    private @Nullable Output sslEnable;

    /**
     * @return Modifies the SSL status. Valid values: `Disable`, `Enable` and `Update`.
     * **NOTE:** This functionality is supported by Cluster mode (Redis 2.8, 4.0, 5.0) and Standard mode( Redis 2.8 only).
     * 
     */
    public Optional> sslEnable() {
        return Optional.ofNullable(this.sslEnable);
    }

    /**
     * A mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Specifies whether to enable TDE. Valid values: `Enabled`.
     * **NOTE:**: TDE cannot be disabled after it is enabled. Before you enable it, evaluate whether this feature affects.
     * your business. For more information, see [Enable TDE](https://www.alibabacloud.com/help/en/redis/user-guide/enable-tde).
     * 
     */
    @Import(name="tdeStatus")
    private @Nullable Output tdeStatus;

    /**
     * @return Specifies whether to enable TDE. Valid values: `Enabled`.
     * **NOTE:**: TDE cannot be disabled after it is enabled. Before you enable it, evaluate whether this feature affects.
     * your business. For more information, see [Enable TDE](https://www.alibabacloud.com/help/en/redis/user-guide/enable-tde).
     * 
     */
    public Optional> tdeStatus() {
        return Optional.ofNullable(this.tdeStatus);
    }

    /**
     * Only meaningful if instance_type is `Redis` and network type is VPC. Valid values: `Close`, `Open`. Default value: `Open`. `Close` means the redis instance can be accessed without authentication. `Open` means authentication is required.
     * 
     */
    @Import(name="vpcAuthMode")
    private @Nullable Output vpcAuthMode;

    /**
     * @return Only meaningful if instance_type is `Redis` and network type is VPC. Valid values: `Close`, `Open`. Default value: `Open`. `Close` means the redis instance can be accessed without authentication. `Open` means authentication is required.
     * 
     */
    public Optional> vpcAuthMode() {
        return Optional.ofNullable(this.vpcAuthMode);
    }

    /**
     * The ID of VSwitch.
     * 
     */
    @Import(name="vswitchId")
    private @Nullable Output vswitchId;

    /**
     * @return The ID of VSwitch.
     * 
     */
    public Optional> vswitchId() {
        return Optional.ofNullable(this.vswitchId);
    }

    /**
     * The ID of the zone.
     * 
     */
    @Import(name="zoneId")
    private @Nullable Output zoneId;

    /**
     * @return The ID of the zone.
     * 
     */
    public Optional> zoneId() {
        return Optional.ofNullable(this.zoneId);
    }

    private InstanceArgs() {}

    private InstanceArgs(InstanceArgs $) {
        this.autoRenew = $.autoRenew;
        this.autoRenewPeriod = $.autoRenewPeriod;
        this.autoUseCoupon = $.autoUseCoupon;
        this.availabilityZone = $.availabilityZone;
        this.backupId = $.backupId;
        this.backupPeriods = $.backupPeriods;
        this.backupTime = $.backupTime;
        this.businessInfo = $.businessInfo;
        this.capacity = $.capacity;
        this.config = $.config;
        this.connectionStringPrefix = $.connectionStringPrefix;
        this.couponNo = $.couponNo;
        this.dbInstanceName = $.dbInstanceName;
        this.dedicatedHostGroupId = $.dedicatedHostGroupId;
        this.dryRun = $.dryRun;
        this.effectiveTime = $.effectiveTime;
        this.enableBackupLog = $.enableBackupLog;
        this.enablePublic = $.enablePublic;
        this.encryptionKey = $.encryptionKey;
        this.encryptionName = $.encryptionName;
        this.engineVersion = $.engineVersion;
        this.forceUpgrade = $.forceUpgrade;
        this.globalInstance = $.globalInstance;
        this.globalInstanceId = $.globalInstanceId;
        this.instanceChargeType = $.instanceChargeType;
        this.instanceClass = $.instanceClass;
        this.instanceName = $.instanceName;
        this.instanceReleaseProtection = $.instanceReleaseProtection;
        this.instanceType = $.instanceType;
        this.isAutoUpgradeOpen = $.isAutoUpgradeOpen;
        this.kmsEncryptedPassword = $.kmsEncryptedPassword;
        this.kmsEncryptionContext = $.kmsEncryptionContext;
        this.maintainEndTime = $.maintainEndTime;
        this.maintainStartTime = $.maintainStartTime;
        this.nodeType = $.nodeType;
        this.orderType = $.orderType;
        this.parameters = $.parameters;
        this.password = $.password;
        this.paymentType = $.paymentType;
        this.period = $.period;
        this.port = $.port;
        this.privateConnectionPort = $.privateConnectionPort;
        this.privateConnectionPrefix = $.privateConnectionPrefix;
        this.privateIp = $.privateIp;
        this.readOnlyCount = $.readOnlyCount;
        this.resourceGroupId = $.resourceGroupId;
        this.restoreTime = $.restoreTime;
        this.roleArn = $.roleArn;
        this.secondaryZoneId = $.secondaryZoneId;
        this.securityGroupId = $.securityGroupId;
        this.securityIpGroupAttribute = $.securityIpGroupAttribute;
        this.securityIpGroupName = $.securityIpGroupName;
        this.securityIps = $.securityIps;
        this.shardCount = $.shardCount;
        this.slaveReadOnlyCount = $.slaveReadOnlyCount;
        this.srcdbInstanceId = $.srcdbInstanceId;
        this.sslEnable = $.sslEnable;
        this.tags = $.tags;
        this.tdeStatus = $.tdeStatus;
        this.vpcAuthMode = $.vpcAuthMode;
        this.vswitchId = $.vswitchId;
        this.zoneId = $.zoneId;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(InstanceArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private InstanceArgs $;

        public Builder() {
            $ = new InstanceArgs();
        }

        public Builder(InstanceArgs defaults) {
            $ = new InstanceArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param autoRenew Whether to renewal a KVStore DBInstance automatically or not. It is valid when payment_type is `PrePaid`. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder autoRenew(@Nullable Output autoRenew) {
            $.autoRenew = autoRenew;
            return this;
        }

        /**
         * @param autoRenew Whether to renewal a KVStore DBInstance automatically or not. It is valid when payment_type is `PrePaid`. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder autoRenew(Boolean autoRenew) {
            return autoRenew(Output.of(autoRenew));
        }

        /**
         * @param autoRenewPeriod Auto-renewal period of an KVStore DBInstance, in the unit of the month. It is valid when payment_type is `PrePaid`. Valid values: [1~12]. Default value: `1`.
         * 
         * @return builder
         * 
         */
        public Builder autoRenewPeriod(@Nullable Output autoRenewPeriod) {
            $.autoRenewPeriod = autoRenewPeriod;
            return this;
        }

        /**
         * @param autoRenewPeriod Auto-renewal period of an KVStore DBInstance, in the unit of the month. It is valid when payment_type is `PrePaid`. Valid values: [1~12]. Default value: `1`.
         * 
         * @return builder
         * 
         */
        public Builder autoRenewPeriod(Integer autoRenewPeriod) {
            return autoRenewPeriod(Output.of(autoRenewPeriod));
        }

        /**
         * @param autoUseCoupon Specifies whether to use a coupon. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder autoUseCoupon(@Nullable Output autoUseCoupon) {
            $.autoUseCoupon = autoUseCoupon;
            return this;
        }

        /**
         * @param autoUseCoupon Specifies whether to use a coupon. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder autoUseCoupon(Boolean autoUseCoupon) {
            return autoUseCoupon(Output.of(autoUseCoupon));
        }

        /**
         * @param availabilityZone It has been deprecated from provider version 1.101.0 and `zone_id` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead.
         * 
         */
        @Deprecated /* Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead. */
        public Builder availabilityZone(@Nullable Output availabilityZone) {
            $.availabilityZone = availabilityZone;
            return this;
        }

        /**
         * @param availabilityZone It has been deprecated from provider version 1.101.0 and `zone_id` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead.
         * 
         */
        @Deprecated /* Field 'availability_zone' has been deprecated from version 1.101.0. Use 'zone_id' instead. */
        public Builder availabilityZone(String availabilityZone) {
            return availabilityZone(Output.of(availabilityZone));
        }

        /**
         * @param backupId The ID of the backup file of the source instance.
         * 
         * @return builder
         * 
         */
        public Builder backupId(@Nullable Output backupId) {
            $.backupId = backupId;
            return this;
        }

        /**
         * @param backupId The ID of the backup file of the source instance.
         * 
         * @return builder
         * 
         */
        public Builder backupId(String backupId) {
            return backupId(Output.of(backupId));
        }

        /**
         * @param backupPeriods Backup period.
         * 
         * @return builder
         * 
         */
        public Builder backupPeriods(@Nullable Output> backupPeriods) {
            $.backupPeriods = backupPeriods;
            return this;
        }

        /**
         * @param backupPeriods Backup period.
         * 
         * @return builder
         * 
         */
        public Builder backupPeriods(List backupPeriods) {
            return backupPeriods(Output.of(backupPeriods));
        }

        /**
         * @param backupPeriods Backup period.
         * 
         * @return builder
         * 
         */
        public Builder backupPeriods(String... backupPeriods) {
            return backupPeriods(List.of(backupPeriods));
        }

        /**
         * @param backupTime Backup time, the format is HH:mmZ-HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder backupTime(@Nullable Output backupTime) {
            $.backupTime = backupTime;
            return this;
        }

        /**
         * @param backupTime Backup time, the format is HH:mmZ-HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder backupTime(String backupTime) {
            return backupTime(Output.of(backupTime));
        }

        /**
         * @param businessInfo The ID of the event or the business information.
         * 
         * @return builder
         * 
         */
        public Builder businessInfo(@Nullable Output businessInfo) {
            $.businessInfo = businessInfo;
            return this;
        }

        /**
         * @param businessInfo The ID of the event or the business information.
         * 
         * @return builder
         * 
         */
        public Builder businessInfo(String businessInfo) {
            return businessInfo(Output.of(businessInfo));
        }

        /**
         * @param capacity The storage capacity of the KVStore DBInstance. Unit: MB.
         * 
         * @return builder
         * 
         */
        public Builder capacity(@Nullable Output capacity) {
            $.capacity = capacity;
            return this;
        }

        /**
         * @param capacity The storage capacity of the KVStore DBInstance. Unit: MB.
         * 
         * @return builder
         * 
         */
        public Builder capacity(Integer capacity) {
            return capacity(Output.of(capacity));
        }

        /**
         * @param config The configuration of the KVStore DBInstance. Available parameters can refer to the latest docs [Instance configurations table](https://www.alibabacloud.com/help/en/redis/user-guide/supported-parameters).
         * 
         * @return builder
         * 
         */
        public Builder config(@Nullable Output> config) {
            $.config = config;
            return this;
        }

        /**
         * @param config The configuration of the KVStore DBInstance. Available parameters can refer to the latest docs [Instance configurations table](https://www.alibabacloud.com/help/en/redis/user-guide/supported-parameters).
         * 
         * @return builder
         * 
         */
        public Builder config(Map config) {
            return config(Output.of(config));
        }

        /**
         * @param connectionStringPrefix It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
         * 
         */
        @Deprecated /* Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
        public Builder connectionStringPrefix(@Nullable Output connectionStringPrefix) {
            $.connectionStringPrefix = connectionStringPrefix;
            return this;
        }

        /**
         * @param connectionStringPrefix It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
         * 
         */
        @Deprecated /* Field 'connection_string_prefix' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
        public Builder connectionStringPrefix(String connectionStringPrefix) {
            return connectionStringPrefix(Output.of(connectionStringPrefix));
        }

        /**
         * @param couponNo The coupon code. **NOTE:** The default value `youhuiquan_promotion_option_id_for_blank` removed since v1.216.0, this can cause your status file to change even if it has not been modified, so please review your change plan before apply change plan.
         * 
         * @return builder
         * 
         */
        public Builder couponNo(@Nullable Output couponNo) {
            $.couponNo = couponNo;
            return this;
        }

        /**
         * @param couponNo The coupon code. **NOTE:** The default value `youhuiquan_promotion_option_id_for_blank` removed since v1.216.0, this can cause your status file to change even if it has not been modified, so please review your change plan before apply change plan.
         * 
         * @return builder
         * 
         */
        public Builder couponNo(String couponNo) {
            return couponNo(Output.of(couponNo));
        }

        /**
         * @param dbInstanceName The name of KVStore DBInstance. It is a string of 2 to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceName(@Nullable Output dbInstanceName) {
            $.dbInstanceName = dbInstanceName;
            return this;
        }

        /**
         * @param dbInstanceName The name of KVStore DBInstance. It is a string of 2 to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceName(String dbInstanceName) {
            return dbInstanceName(Output.of(dbInstanceName));
        }

        /**
         * @param dedicatedHostGroupId The ID of the dedicated cluster. This parameter is required when you create an ApsaraDB for Redis instance in a dedicated cluster.
         * 
         * @return builder
         * 
         */
        public Builder dedicatedHostGroupId(@Nullable Output dedicatedHostGroupId) {
            $.dedicatedHostGroupId = dedicatedHostGroupId;
            return this;
        }

        /**
         * @param dedicatedHostGroupId The ID of the dedicated cluster. This parameter is required when you create an ApsaraDB for Redis instance in a dedicated cluster.
         * 
         * @return builder
         * 
         */
        public Builder dedicatedHostGroupId(String dedicatedHostGroupId) {
            return dedicatedHostGroupId(Output.of(dedicatedHostGroupId));
        }

        /**
         * @param dryRun Specifies whether to precheck the request. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder dryRun(@Nullable Output dryRun) {
            $.dryRun = dryRun;
            return this;
        }

        /**
         * @param dryRun Specifies whether to precheck the request. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder dryRun(Boolean dryRun) {
            return dryRun(Output.of(dryRun));
        }

        /**
         * @param effectiveTime The time when the database is switched after the instance is migrated, or when the major version is upgraded, or when the instance class is upgraded. Valid values:
         * - `Immediately` (Default): The configurations are immediately changed.
         * - `MaintainTime`: The configurations are changed within the maintenance window. You can set `maintain_start_time` and `maintain_end_time` to change the maintenance window.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(@Nullable Output effectiveTime) {
            $.effectiveTime = effectiveTime;
            return this;
        }

        /**
         * @param effectiveTime The time when the database is switched after the instance is migrated, or when the major version is upgraded, or when the instance class is upgraded. Valid values:
         * - `Immediately` (Default): The configurations are immediately changed.
         * - `MaintainTime`: The configurations are changed within the maintenance window. You can set `maintain_start_time` and `maintain_end_time` to change the maintenance window.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(String effectiveTime) {
            return effectiveTime(Output.of(effectiveTime));
        }

        /**
         * @param enableBackupLog Turn on or off incremental backup. Valid values: `1`, `0`. Default value: `0`
         * 
         * @return builder
         * 
         */
        public Builder enableBackupLog(@Nullable Output enableBackupLog) {
            $.enableBackupLog = enableBackupLog;
            return this;
        }

        /**
         * @param enableBackupLog Turn on or off incremental backup. Valid values: `1`, `0`. Default value: `0`
         * 
         * @return builder
         * 
         */
        public Builder enableBackupLog(Integer enableBackupLog) {
            return enableBackupLog(Output.of(enableBackupLog));
        }

        /**
         * @param enablePublic It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
         * 
         */
        @Deprecated /* Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
        public Builder enablePublic(@Nullable Output enablePublic) {
            $.enablePublic = enablePublic;
            return this;
        }

        /**
         * @param enablePublic It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead.
         * 
         */
        @Deprecated /* Field 'enable_public' has been deprecated from version 1.101.0. Please use resource 'alicloud_kvstore_connection' instead. */
        public Builder enablePublic(Boolean enablePublic) {
            return enablePublic(Output.of(enablePublic));
        }

        /**
         * @param encryptionKey The Custom key ID, which you can get by calling DescribeEncryptionKeyList.If this parameter is not passed, the key is automatically generated by the key management service. To create a custom key, you can call the CreateKey interface of the key management service.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(@Nullable Output encryptionKey) {
            $.encryptionKey = encryptionKey;
            return this;
        }

        /**
         * @param encryptionKey The Custom key ID, which you can get by calling DescribeEncryptionKeyList.If this parameter is not passed, the key is automatically generated by the key management service. To create a custom key, you can call the CreateKey interface of the key management service.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(String encryptionKey) {
            return encryptionKey(Output.of(encryptionKey));
        }

        /**
         * @param encryptionName The Encryption algorithm, default AES-CTR-256.Note that this parameter is only available when the TDEStatus parameter is Enabled.
         * 
         * @return builder
         * 
         */
        public Builder encryptionName(@Nullable Output encryptionName) {
            $.encryptionName = encryptionName;
            return this;
        }

        /**
         * @param encryptionName The Encryption algorithm, default AES-CTR-256.Note that this parameter is only available when the TDEStatus parameter is Enabled.
         * 
         * @return builder
         * 
         */
        public Builder encryptionName(String encryptionName) {
            return encryptionName(Output.of(encryptionName));
        }

        /**
         * @param engineVersion The engine version of the KVStore DBInstance. Valid values: ["2.8", "4.0", "5.0", "6.0", "7.0"]. Default value: `5.0`.
         * **NOTE:** When `instance_type = Memcache`, the `engine_version` only supports "4.0".
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(@Nullable Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion The engine version of the KVStore DBInstance. Valid values: ["2.8", "4.0", "5.0", "6.0", "7.0"]. Default value: `5.0`.
         * **NOTE:** When `instance_type = Memcache`, the `engine_version` only supports "4.0".
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @param forceUpgrade Specifies whether to forcibly change the type. Default value: `true`.
         * 
         * @return builder
         * 
         */
        public Builder forceUpgrade(@Nullable Output forceUpgrade) {
            $.forceUpgrade = forceUpgrade;
            return this;
        }

        /**
         * @param forceUpgrade Specifies whether to forcibly change the type. Default value: `true`.
         * 
         * @return builder
         * 
         */
        public Builder forceUpgrade(Boolean forceUpgrade) {
            return forceUpgrade(Output.of(forceUpgrade));
        }

        /**
         * @param globalInstance Whether to create a distributed cache. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder globalInstance(@Nullable Output globalInstance) {
            $.globalInstance = globalInstance;
            return this;
        }

        /**
         * @param globalInstance Whether to create a distributed cache. Default value: `false`.
         * 
         * @return builder
         * 
         */
        public Builder globalInstance(Boolean globalInstance) {
            return globalInstance(Output.of(globalInstance));
        }

        /**
         * @param globalInstanceId The ID of distributed cache.
         * 
         * @return builder
         * 
         */
        public Builder globalInstanceId(@Nullable Output globalInstanceId) {
            $.globalInstanceId = globalInstanceId;
            return this;
        }

        /**
         * @param globalInstanceId The ID of distributed cache.
         * 
         * @return builder
         * 
         */
        public Builder globalInstanceId(String globalInstanceId) {
            return globalInstanceId(Output.of(globalInstanceId));
        }

        /**
         * @param instanceChargeType It has been deprecated from provider version 1.101.0 and `payment_type` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead.
         * 
         */
        @Deprecated /* Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead. */
        public Builder instanceChargeType(@Nullable Output instanceChargeType) {
            $.instanceChargeType = instanceChargeType;
            return this;
        }

        /**
         * @param instanceChargeType It has been deprecated from provider version 1.101.0 and `payment_type` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead.
         * 
         */
        @Deprecated /* Field 'instance_charge_type' has been deprecated from version 1.101.0. Use 'payment_type' instead. */
        public Builder instanceChargeType(String instanceChargeType) {
            return instanceChargeType(Output.of(instanceChargeType));
        }

        /**
         * @param instanceClass Type of the applied ApsaraDB for Redis instance. It can be retrieved by data source `alicloud.kvstore.getInstanceClasses`
         * or referring to help-docs [Instance type table](https://www.alibabacloud.com/help/doc-detail/26350.htm).
         * 
         * @return builder
         * 
         */
        public Builder instanceClass(@Nullable Output instanceClass) {
            $.instanceClass = instanceClass;
            return this;
        }

        /**
         * @param instanceClass Type of the applied ApsaraDB for Redis instance. It can be retrieved by data source `alicloud.kvstore.getInstanceClasses`
         * or referring to help-docs [Instance type table](https://www.alibabacloud.com/help/doc-detail/26350.htm).
         * 
         * @return builder
         * 
         */
        public Builder instanceClass(String instanceClass) {
            return instanceClass(Output.of(instanceClass));
        }

        /**
         * @param instanceName It has been deprecated from provider version 1.101.0 and `db_instance_name` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead.
         * 
         */
        @Deprecated /* Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead. */
        public Builder instanceName(@Nullable Output instanceName) {
            $.instanceName = instanceName;
            return this;
        }

        /**
         * @param instanceName It has been deprecated from provider version 1.101.0 and `db_instance_name` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead.
         * 
         */
        @Deprecated /* Field `instance_name` has been deprecated from version 1.101.0. Use `db_instance_name` instead. */
        public Builder instanceName(String instanceName) {
            return instanceName(Output.of(instanceName));
        }

        /**
         * @param instanceReleaseProtection Whether to open the release protection.
         * 
         * @return builder
         * 
         */
        public Builder instanceReleaseProtection(@Nullable Output instanceReleaseProtection) {
            $.instanceReleaseProtection = instanceReleaseProtection;
            return this;
        }

        /**
         * @param instanceReleaseProtection Whether to open the release protection.
         * 
         * @return builder
         * 
         */
        public Builder instanceReleaseProtection(Boolean instanceReleaseProtection) {
            return instanceReleaseProtection(Output.of(instanceReleaseProtection));
        }

        /**
         * @param instanceType The engine type of the KVStore DBInstance. Valid values: `Redis` or `Memcache`. Default value: `Redis`.
         * 
         * @return builder
         * 
         */
        public Builder instanceType(@Nullable Output instanceType) {
            $.instanceType = instanceType;
            return this;
        }

        /**
         * @param instanceType The engine type of the KVStore DBInstance. Valid values: `Redis` or `Memcache`. Default value: `Redis`.
         * 
         * @return builder
         * 
         */
        public Builder instanceType(String instanceType) {
            return instanceType(Output.of(instanceType));
        }

        /**
         * @param isAutoUpgradeOpen Specifies whether to enable automatic minor version update. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder isAutoUpgradeOpen(@Nullable Output isAutoUpgradeOpen) {
            $.isAutoUpgradeOpen = isAutoUpgradeOpen;
            return this;
        }

        /**
         * @param isAutoUpgradeOpen Specifies whether to enable automatic minor version update. Valid values:
         * 
         * @return builder
         * 
         */
        public Builder isAutoUpgradeOpen(String isAutoUpgradeOpen) {
            return isAutoUpgradeOpen(Output.of(isAutoUpgradeOpen));
        }

        /**
         * @param kmsEncryptedPassword An KMS encrypts password used to an instance. If the `password` is filled in, this field will be ignored.
         * 
         * @return builder
         * 
         */
        public Builder kmsEncryptedPassword(@Nullable Output kmsEncryptedPassword) {
            $.kmsEncryptedPassword = kmsEncryptedPassword;
            return this;
        }

        /**
         * @param kmsEncryptedPassword An KMS encrypts password used to an instance. If the `password` is filled in, this field will be ignored.
         * 
         * @return builder
         * 
         */
        public Builder kmsEncryptedPassword(String kmsEncryptedPassword) {
            return kmsEncryptedPassword(Output.of(kmsEncryptedPassword));
        }

        /**
         * @param kmsEncryptionContext An KMS encryption context used to decrypt `kms_encrypted_password` before creating or updating instance with `kms_encrypted_password`. See [Encryption Context](https://www.alibabacloud.com/help/doc-detail/42975.htm). It is valid when `kms_encrypted_password` is set.
         * 
         * @return builder
         * 
         */
        public Builder kmsEncryptionContext(@Nullable Output> kmsEncryptionContext) {
            $.kmsEncryptionContext = kmsEncryptionContext;
            return this;
        }

        /**
         * @param kmsEncryptionContext An KMS encryption context used to decrypt `kms_encrypted_password` before creating or updating instance with `kms_encrypted_password`. See [Encryption Context](https://www.alibabacloud.com/help/doc-detail/42975.htm). It is valid when `kms_encrypted_password` is set.
         * 
         * @return builder
         * 
         */
        public Builder kmsEncryptionContext(Map kmsEncryptionContext) {
            return kmsEncryptionContext(Output.of(kmsEncryptionContext));
        }

        /**
         * @param maintainEndTime The end time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainEndTime(@Nullable Output maintainEndTime) {
            $.maintainEndTime = maintainEndTime;
            return this;
        }

        /**
         * @param maintainEndTime The end time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainEndTime(String maintainEndTime) {
            return maintainEndTime(Output.of(maintainEndTime));
        }

        /**
         * @param maintainStartTime The start time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainStartTime(@Nullable Output maintainStartTime) {
            $.maintainStartTime = maintainStartTime;
            return this;
        }

        /**
         * @param maintainStartTime The start time of the operation and maintenance time period of the KVStore DBInstance, in the format of HH:mmZ (UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainStartTime(String maintainStartTime) {
            return maintainStartTime(Output.of(maintainStartTime));
        }

        /**
         * @param nodeType "Field `node_type` has been deprecated from version 1.120.1". This parameter is determined by the `instance_class`.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'node_type' has been deprecated from version 1.120.1
         * 
         */
        @Deprecated /* Field 'node_type' has been deprecated from version 1.120.1 */
        public Builder nodeType(@Nullable Output nodeType) {
            $.nodeType = nodeType;
            return this;
        }

        /**
         * @param nodeType "Field `node_type` has been deprecated from version 1.120.1". This parameter is determined by the `instance_class`.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'node_type' has been deprecated from version 1.120.1
         * 
         */
        @Deprecated /* Field 'node_type' has been deprecated from version 1.120.1 */
        public Builder nodeType(String nodeType) {
            return nodeType(Output.of(nodeType));
        }

        /**
         * @param orderType Specifies a change type when you change the configuration of a subscription instance. Valid values: `UPGRADE`, `DOWNGRADE`. Default value: `UPGRADE`. `UPGRADE` means upgrades the configuration of a subscription instance. `DOWNGRADE` means downgrades the configuration of a subscription instance.
         * 
         * @return builder
         * 
         */
        public Builder orderType(@Nullable Output orderType) {
            $.orderType = orderType;
            return this;
        }

        /**
         * @param orderType Specifies a change type when you change the configuration of a subscription instance. Valid values: `UPGRADE`, `DOWNGRADE`. Default value: `UPGRADE`. `UPGRADE` means upgrades the configuration of a subscription instance. `DOWNGRADE` means downgrades the configuration of a subscription instance.
         * 
         * @return builder
         * 
         */
        public Builder orderType(String orderType) {
            return orderType(Output.of(orderType));
        }

        /**
         * @param parameters It has been deprecated from provider version 1.101.0 and `config` instead. See `parameters` below.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead.
         * 
         */
        @Deprecated /* Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead. */
        public Builder parameters(@Nullable Output> parameters) {
            $.parameters = parameters;
            return this;
        }

        /**
         * @param parameters It has been deprecated from provider version 1.101.0 and `config` instead. See `parameters` below.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead.
         * 
         */
        @Deprecated /* Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead. */
        public Builder parameters(List parameters) {
            return parameters(Output.of(parameters));
        }

        /**
         * @param parameters It has been deprecated from provider version 1.101.0 and `config` instead. See `parameters` below.
         * 
         * @return builder
         * 
         * @deprecated
         * Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead.
         * 
         */
        @Deprecated /* Field 'parameters' has been deprecated from version 1.101.0. Use 'config' instead. */
        public Builder parameters(InstanceParameterArgs... parameters) {
            return parameters(List.of(parameters));
        }

        /**
         * @param password The password of the KVStore DBInstance. The password that is used to connect to the instance. The password must be 8 to 32 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, special characters, and digits. Special characters include: `! {@literal @} # $ % ^ & * ( ) _ + - =`
         * 
         * @return builder
         * 
         */
        public Builder password(@Nullable Output password) {
            $.password = password;
            return this;
        }

        /**
         * @param password The password of the KVStore DBInstance. The password that is used to connect to the instance. The password must be 8 to 32 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, special characters, and digits. Special characters include: `! {@literal @} # $ % ^ & * ( ) _ + - =`
         * 
         * @return builder
         * 
         */
        public Builder password(String password) {
            return password(Output.of(password));
        }

        /**
         * @param paymentType The billing method of the KVStore DBInstance. Valid values: `PrePaid`, `PostPaid`. Default value: `PostPaid`.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(@Nullable Output paymentType) {
            $.paymentType = paymentType;
            return this;
        }

        /**
         * @param paymentType The billing method of the KVStore DBInstance. Valid values: `PrePaid`, `PostPaid`. Default value: `PostPaid`.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(String paymentType) {
            return paymentType(Output.of(paymentType));
        }

        /**
         * @param period The duration that you will buy KVStore DBInstance (in month). It is valid when payment_type is `PrePaid`. Valid values: `[1~9]`, `12`, `24`, `36`.
         * 
         * @return builder
         * 
         */
        public Builder period(@Nullable Output period) {
            $.period = period;
            return this;
        }

        /**
         * @param period The duration that you will buy KVStore DBInstance (in month). It is valid when payment_type is `PrePaid`. Valid values: `[1~9]`, `12`, `24`, `36`.
         * 
         * @return builder
         * 
         */
        public Builder period(String period) {
            return period(Output.of(period));
        }

        /**
         * @param port It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         */
        public Builder port(@Nullable Output port) {
            $.port = port;
            return this;
        }

        /**
         * @param port It has been deprecated from provider version 1.101.0 and resource `alicloud.kvstore.Connection` instead.
         * 
         * @return builder
         * 
         */
        public Builder port(Integer port) {
            return port(Output.of(port));
        }

        /**
         * @param privateConnectionPort Private network connection port, used to modify the private network connection port.
         * 
         * @return builder
         * 
         */
        public Builder privateConnectionPort(@Nullable Output privateConnectionPort) {
            $.privateConnectionPort = privateConnectionPort;
            return this;
        }

        /**
         * @param privateConnectionPort Private network connection port, used to modify the private network connection port.
         * 
         * @return builder
         * 
         */
        public Builder privateConnectionPort(String privateConnectionPort) {
            return privateConnectionPort(Output.of(privateConnectionPort));
        }

        /**
         * @param privateConnectionPrefix Private network connection prefix, used to modify the private network connection address. Only supports updating private network connections for existing instance.
         * 
         * @return builder
         * 
         */
        public Builder privateConnectionPrefix(@Nullable Output privateConnectionPrefix) {
            $.privateConnectionPrefix = privateConnectionPrefix;
            return this;
        }

        /**
         * @param privateConnectionPrefix Private network connection prefix, used to modify the private network connection address. Only supports updating private network connections for existing instance.
         * 
         * @return builder
         * 
         */
        public Builder privateConnectionPrefix(String privateConnectionPrefix) {
            return privateConnectionPrefix(Output.of(privateConnectionPrefix));
        }

        /**
         * @param privateIp The internal IP address of the instance.
         * 
         * @return builder
         * 
         */
        public Builder privateIp(@Nullable Output privateIp) {
            $.privateIp = privateIp;
            return this;
        }

        /**
         * @param privateIp The internal IP address of the instance.
         * 
         * @return builder
         * 
         */
        public Builder privateIp(String privateIp) {
            return privateIp(Output.of(privateIp));
        }

        /**
         * @param readOnlyCount The number of read replicas in the primary zone. Valid values: `1` to `9`.
         * 
         * @return builder
         * 
         */
        public Builder readOnlyCount(@Nullable Output readOnlyCount) {
            $.readOnlyCount = readOnlyCount;
            return this;
        }

        /**
         * @param readOnlyCount The number of read replicas in the primary zone. Valid values: `1` to `9`.
         * 
         * @return builder
         * 
         */
        public Builder readOnlyCount(Integer readOnlyCount) {
            return readOnlyCount(Output.of(readOnlyCount));
        }

        /**
         * @param resourceGroupId The ID of resource group which the resource belongs.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupId(@Nullable Output resourceGroupId) {
            $.resourceGroupId = resourceGroupId;
            return this;
        }

        /**
         * @param resourceGroupId The ID of resource group which the resource belongs.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupId(String resourceGroupId) {
            return resourceGroupId(Output.of(resourceGroupId));
        }

        /**
         * @param restoreTime The point in time of a backup file.
         * 
         * @return builder
         * 
         */
        public Builder restoreTime(@Nullable Output restoreTime) {
            $.restoreTime = restoreTime;
            return this;
        }

        /**
         * @param restoreTime The point in time of a backup file.
         * 
         * @return builder
         * 
         */
        public Builder restoreTime(String restoreTime) {
            return restoreTime(Output.of(restoreTime));
        }

        /**
         * @param roleArn The Specify the global resource descriptor ARN (Alibaba Cloud Resource Name) information of the role to be authorized, and use the related key management services after the authorization is completed, in the format: `acs:ram::$accountID:role/$roleName`.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(@Nullable Output roleArn) {
            $.roleArn = roleArn;
            return this;
        }

        /**
         * @param roleArn The Specify the global resource descriptor ARN (Alibaba Cloud Resource Name) information of the role to be authorized, and use the related key management services after the authorization is completed, in the format: `acs:ram::$accountID:role/$roleName`.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(String roleArn) {
            return roleArn(Output.of(roleArn));
        }

        /**
         * @param secondaryZoneId The ID of the secondary zone to which you want to migrate the ApsaraDB for Redis instance.
         * > **NOTE:** If you specify this parameter, the master node and replica node of the instance can be deployed in different zones and disaster recovery is implemented across zones. The instance can withstand failures in data centers.
         * 
         * @return builder
         * 
         */
        public Builder secondaryZoneId(@Nullable Output secondaryZoneId) {
            $.secondaryZoneId = secondaryZoneId;
            return this;
        }

        /**
         * @param secondaryZoneId The ID of the secondary zone to which you want to migrate the ApsaraDB for Redis instance.
         * > **NOTE:** If you specify this parameter, the master node and replica node of the instance can be deployed in different zones and disaster recovery is implemented across zones. The instance can withstand failures in data centers.
         * 
         * @return builder
         * 
         */
        public Builder secondaryZoneId(String secondaryZoneId) {
            return secondaryZoneId(Output.of(secondaryZoneId));
        }

        /**
         * @param securityGroupId The ID of security groups. Separate multiple security group IDs with commas (,), such as `sg-***,sg-***,sg-***`.
         * 
         * @return builder
         * 
         */
        public Builder securityGroupId(@Nullable Output securityGroupId) {
            $.securityGroupId = securityGroupId;
            return this;
        }

        /**
         * @param securityGroupId The ID of security groups. Separate multiple security group IDs with commas (,), such as `sg-***,sg-***,sg-***`.
         * 
         * @return builder
         * 
         */
        public Builder securityGroupId(String securityGroupId) {
            return securityGroupId(Output.of(securityGroupId));
        }

        /**
         * @param securityIpGroupAttribute The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
         * 
         * @return builder
         * 
         */
        public Builder securityIpGroupAttribute(@Nullable Output securityIpGroupAttribute) {
            $.securityIpGroupAttribute = securityIpGroupAttribute;
            return this;
        }

        /**
         * @param securityIpGroupAttribute The value of this parameter is empty by default. The attribute of the whitelist group. The console does not display the whitelist group whose value of this parameter is hidden.
         * 
         * @return builder
         * 
         */
        public Builder securityIpGroupAttribute(String securityIpGroupAttribute) {
            return securityIpGroupAttribute(Output.of(securityIpGroupAttribute));
        }

        /**
         * @param securityIpGroupName The name of the whitelist group.
         * 
         * @return builder
         * 
         */
        public Builder securityIpGroupName(@Nullable Output securityIpGroupName) {
            $.securityIpGroupName = securityIpGroupName;
            return this;
        }

        /**
         * @param securityIpGroupName The name of the whitelist group.
         * 
         * @return builder
         * 
         */
        public Builder securityIpGroupName(String securityIpGroupName) {
            return securityIpGroupName(Output.of(securityIpGroupName));
        }

        /**
         * @param securityIps The IP addresses in the whitelist group. The maximum number of IP addresses in the whitelist group is 1000.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(@Nullable Output> securityIps) {
            $.securityIps = securityIps;
            return this;
        }

        /**
         * @param securityIps The IP addresses in the whitelist group. The maximum number of IP addresses in the whitelist group is 1000.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(List securityIps) {
            return securityIps(Output.of(securityIps));
        }

        /**
         * @param securityIps The IP addresses in the whitelist group. The maximum number of IP addresses in the whitelist group is 1000.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(String... securityIps) {
            return securityIps(List.of(securityIps));
        }

        /**
         * @param shardCount The number of data shards. This parameter is available only if you create a cluster instance that uses cloud disks. You can use this parameter to specify a custom number of data shards. **NOTE:** From version 1.216.0, `shard_count` can be modified.
         * 
         * @return builder
         * 
         */
        public Builder shardCount(@Nullable Output shardCount) {
            $.shardCount = shardCount;
            return this;
        }

        /**
         * @param shardCount The number of data shards. This parameter is available only if you create a cluster instance that uses cloud disks. You can use this parameter to specify a custom number of data shards. **NOTE:** From version 1.216.0, `shard_count` can be modified.
         * 
         * @return builder
         * 
         */
        public Builder shardCount(Integer shardCount) {
            return shardCount(Output.of(shardCount));
        }

        /**
         * @param slaveReadOnlyCount The number of read replicas in the secondary zone. **NOTE:**: When you create a multi-zone read/write splitting instance, you must specify both `secondary_zone_id` and `slave_read_only_count`.
         * > **NOTE:** The sum of `read_only_count` and `slave_read_only_count` cannot be greater than `9`.
         * 
         * @return builder
         * 
         */
        public Builder slaveReadOnlyCount(@Nullable Output slaveReadOnlyCount) {
            $.slaveReadOnlyCount = slaveReadOnlyCount;
            return this;
        }

        /**
         * @param slaveReadOnlyCount The number of read replicas in the secondary zone. **NOTE:**: When you create a multi-zone read/write splitting instance, you must specify both `secondary_zone_id` and `slave_read_only_count`.
         * > **NOTE:** The sum of `read_only_count` and `slave_read_only_count` cannot be greater than `9`.
         * 
         * @return builder
         * 
         */
        public Builder slaveReadOnlyCount(Integer slaveReadOnlyCount) {
            return slaveReadOnlyCount(Output.of(slaveReadOnlyCount));
        }

        /**
         * @param srcdbInstanceId The ID of the source instance.
         * 
         * @return builder
         * 
         */
        public Builder srcdbInstanceId(@Nullable Output srcdbInstanceId) {
            $.srcdbInstanceId = srcdbInstanceId;
            return this;
        }

        /**
         * @param srcdbInstanceId The ID of the source instance.
         * 
         * @return builder
         * 
         */
        public Builder srcdbInstanceId(String srcdbInstanceId) {
            return srcdbInstanceId(Output.of(srcdbInstanceId));
        }

        /**
         * @param sslEnable Modifies the SSL status. Valid values: `Disable`, `Enable` and `Update`.
         * **NOTE:** This functionality is supported by Cluster mode (Redis 2.8, 4.0, 5.0) and Standard mode( Redis 2.8 only).
         * 
         * @return builder
         * 
         */
        public Builder sslEnable(@Nullable Output sslEnable) {
            $.sslEnable = sslEnable;
            return this;
        }

        /**
         * @param sslEnable Modifies the SSL status. Valid values: `Disable`, `Enable` and `Update`.
         * **NOTE:** This functionality is supported by Cluster mode (Redis 2.8, 4.0, 5.0) and Standard mode( Redis 2.8 only).
         * 
         * @return builder
         * 
         */
        public Builder sslEnable(String sslEnable) {
            return sslEnable(Output.of(sslEnable));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tdeStatus Specifies whether to enable TDE. Valid values: `Enabled`.
         * **NOTE:**: TDE cannot be disabled after it is enabled. Before you enable it, evaluate whether this feature affects.
         * your business. For more information, see [Enable TDE](https://www.alibabacloud.com/help/en/redis/user-guide/enable-tde).
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(@Nullable Output tdeStatus) {
            $.tdeStatus = tdeStatus;
            return this;
        }

        /**
         * @param tdeStatus Specifies whether to enable TDE. Valid values: `Enabled`.
         * **NOTE:**: TDE cannot be disabled after it is enabled. Before you enable it, evaluate whether this feature affects.
         * your business. For more information, see [Enable TDE](https://www.alibabacloud.com/help/en/redis/user-guide/enable-tde).
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(String tdeStatus) {
            return tdeStatus(Output.of(tdeStatus));
        }

        /**
         * @param vpcAuthMode Only meaningful if instance_type is `Redis` and network type is VPC. Valid values: `Close`, `Open`. Default value: `Open`. `Close` means the redis instance can be accessed without authentication. `Open` means authentication is required.
         * 
         * @return builder
         * 
         */
        public Builder vpcAuthMode(@Nullable Output vpcAuthMode) {
            $.vpcAuthMode = vpcAuthMode;
            return this;
        }

        /**
         * @param vpcAuthMode Only meaningful if instance_type is `Redis` and network type is VPC. Valid values: `Close`, `Open`. Default value: `Open`. `Close` means the redis instance can be accessed without authentication. `Open` means authentication is required.
         * 
         * @return builder
         * 
         */
        public Builder vpcAuthMode(String vpcAuthMode) {
            return vpcAuthMode(Output.of(vpcAuthMode));
        }

        /**
         * @param vswitchId The ID of VSwitch.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(@Nullable Output vswitchId) {
            $.vswitchId = vswitchId;
            return this;
        }

        /**
         * @param vswitchId The ID of VSwitch.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(String vswitchId) {
            return vswitchId(Output.of(vswitchId));
        }

        /**
         * @param zoneId The ID of the zone.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(@Nullable Output zoneId) {
            $.zoneId = zoneId;
            return this;
        }

        /**
         * @param zoneId The ID of the zone.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(String zoneId) {
            return zoneId(Output.of(zoneId));
        }

        public InstanceArgs build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy