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

com.pulumi.alicloud.rds.inputs.InstanceState 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.rds.inputs;

import com.pulumi.alicloud.rds.inputs.InstanceBabelfishConfigArgs;
import com.pulumi.alicloud.rds.inputs.InstanceParameterArgs;
import com.pulumi.alicloud.rds.inputs.InstancePgHbaConfArgs;
import com.pulumi.alicloud.rds.inputs.InstanceServerlessConfigArgs;
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 InstanceState extends com.pulumi.resources.ResourceArgs {

    public static final InstanceState Empty = new InstanceState();

    /**
     * The method that is used to verify the identities of clients. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - cert
     * - perfer
     * - verify-ca
     * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
     * 
     */
    @Import(name="acl")
    private @Nullable Output acl;

    /**
     * @return The method that is used to verify the identities of clients. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - cert
     * - perfer
     * - verify-ca
     * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
     * 
     */
    public Optional> acl() {
        return Optional.ofNullable(this.acl);
    }

    /**
     * Whether to renewal a DB instance automatically or not. It is valid when instance_charge_type is `PrePaid`. Default to `false`.
     * 
     */
    @Import(name="autoRenew")
    private @Nullable Output autoRenew;

    /**
     * @return Whether to renewal a DB instance automatically or not. It is valid when instance_charge_type is `PrePaid`. Default to `false`.
     * 
     */
    public Optional> autoRenew() {
        return Optional.ofNullable(this.autoRenew);
    }

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

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

    /**
     * The upgrade method to use. Valid values:
     * - Auto: Instances are automatically upgraded to a higher minor version.
     * - Manual: Instances are forcibly upgraded to a higher minor version when the current version is unpublished.
     * 
     * See more [details and limitation](https://www.alibabacloud.com/help/doc-detail/123605.htm).
     * 
     */
    @Import(name="autoUpgradeMinorVersion")
    private @Nullable Output autoUpgradeMinorVersion;

    /**
     * @return The upgrade method to use. Valid values:
     * - Auto: Instances are automatically upgraded to a higher minor version.
     * - Manual: Instances are forcibly upgraded to a higher minor version when the current version is unpublished.
     * 
     * See more [details and limitation](https://www.alibabacloud.com/help/doc-detail/123605.htm).
     * 
     */
    public Optional> autoUpgradeMinorVersion() {
        return Optional.ofNullable(this.autoUpgradeMinorVersion);
    }

    /**
     * The configuration of an ApsaraDB RDS for PostgreSQL instance for which Babelfish is enabled. See `babelfish_config` below.
     * 
     * > **NOTE:** This parameter takes effect only when you create an ApsaraDB RDS for PostgreSQL instance. For more information, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
     * 
     */
    @Import(name="babelfishConfigs")
    private @Nullable Output> babelfishConfigs;

    /**
     * @return The configuration of an ApsaraDB RDS for PostgreSQL instance for which Babelfish is enabled. See `babelfish_config` below.
     * 
     * > **NOTE:** This parameter takes effect only when you create an ApsaraDB RDS for PostgreSQL instance. For more information, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
     * 
     */
    public Optional>> babelfishConfigs() {
        return Optional.ofNullable(this.babelfishConfigs);
    }

    /**
     * The TDS port of the instance for which Babelfish is enabled.
     * 
     * > **NOTE:** This parameter applies only to ApsaraDB RDS for PostgreSQL instances. For more information about Babelfish for ApsaraDB RDS for PostgreSQL, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
     * 
     */
    @Import(name="babelfishPort")
    private @Nullable Output babelfishPort;

    /**
     * @return The TDS port of the instance for which Babelfish is enabled.
     * 
     * > **NOTE:** This parameter applies only to ApsaraDB RDS for PostgreSQL instances. For more information about Babelfish for ApsaraDB RDS for PostgreSQL, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
     * 
     */
    public Optional> babelfishPort() {
        return Optional.ofNullable(this.babelfishPort);
    }

    /**
     * The type of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the SSLEnabled parameter to 1, the default value of this parameter is aliyun. **NOTE:** From version 1.231.0, `ca_type` start  support `MySQL` engine. Value range:
     * - aliyun: a cloud certificate
     * - custom: a custom certificate
     * 
     */
    @Import(name="caType")
    private @Nullable Output caType;

    /**
     * @return The type of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the SSLEnabled parameter to 1, the default value of this parameter is aliyun. **NOTE:** From version 1.231.0, `ca_type` start  support `MySQL` engine. Value range:
     * - aliyun: a cloud certificate
     * - custom: a custom certificate
     * 
     */
    public Optional> caType() {
        return Optional.ofNullable(this.caType);
    }

    /**
     * The RDS edition of the instance. If you want to create a serverless instance, you must use this value. Valid values:
     * * **Basic**: Basic Edition.
     * * **HighAvailability**: High-availability Edition.
     * * **AlwaysOn**: Cluster Edition.
     * * **Finance**: Enterprise Edition.
     * * **cluster**: MySQL Cluster Edition. (Available since 1.202.0)
     * * **serverless_basic**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.200.0)
     * * **serverless_standard**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.204.0)
     * * **serverless_ha**: RDS Serverless High-availability Edition for SQL Server. (Available since 1.204.0)
     * 
     * > **NOTE:** `zone_id_slave_a` and `zone_id_slave_b` can specify slave zone ids when creating the high-availability or enterprise edition instances. Meanwhile, `vswitch_id` needs to pass in the corresponding vswitch id to the slave zone by order (If the `vswitch_id` is not specified, the classic network version will be created). For example, `zone_id` = "zone-a" and `zone_id_slave_a` = "zone-c", `zone_id_slave_b` = "zone-b", then the `vswitch_id` must be "vsw-zone-a,vsw-zone-c,vsw-zone-b". Of course, you can also choose automatic allocation , for example, `zone_id` = "zone-a" and `zone_id_slave_a` = "Auto",`zone_id_slave_b` = "Auto", then the `vswitch_id` must be "vsw-zone-a,Auto,Auto". The list contains up to 2 slave zone ids , separated by commas.
     * 
     */
    @Import(name="category")
    private @Nullable Output category;

    /**
     * @return The RDS edition of the instance. If you want to create a serverless instance, you must use this value. Valid values:
     * * **Basic**: Basic Edition.
     * * **HighAvailability**: High-availability Edition.
     * * **AlwaysOn**: Cluster Edition.
     * * **Finance**: Enterprise Edition.
     * * **cluster**: MySQL Cluster Edition. (Available since 1.202.0)
     * * **serverless_basic**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.200.0)
     * * **serverless_standard**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.204.0)
     * * **serverless_ha**: RDS Serverless High-availability Edition for SQL Server. (Available since 1.204.0)
     * 
     * > **NOTE:** `zone_id_slave_a` and `zone_id_slave_b` can specify slave zone ids when creating the high-availability or enterprise edition instances. Meanwhile, `vswitch_id` needs to pass in the corresponding vswitch id to the slave zone by order (If the `vswitch_id` is not specified, the classic network version will be created). For example, `zone_id` = "zone-a" and `zone_id_slave_a` = "zone-c", `zone_id_slave_b` = "zone-b", then the `vswitch_id` must be "vsw-zone-a,vsw-zone-c,vsw-zone-b". Of course, you can also choose automatic allocation , for example, `zone_id` = "zone-a" and `zone_id_slave_a` = "Auto",`zone_id_slave_b` = "Auto", then the `vswitch_id` must be "vsw-zone-a,Auto,Auto". The list contains up to 2 slave zone ids , separated by commas.
     * 
     */
    public Optional> category() {
        return Optional.ofNullable(this.category);
    }

    /**
     * The public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCAEbabled parameter to 1, you must also specify this parameter.
     * 
     */
    @Import(name="clientCaCert")
    private @Nullable Output clientCaCert;

    /**
     * @return The public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCAEbabled parameter to 1, you must also specify this parameter.
     * 
     */
    public Optional> clientCaCert() {
        return Optional.ofNullable(this.clientCaCert);
    }

    /**
     * Specifies whether to enable the public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. Valid values:
     * - 1: enables the public key
     * - 0: disables the public key
     * 
     */
    @Import(name="clientCaEnabled")
    private @Nullable Output clientCaEnabled;

    /**
     * @return Specifies whether to enable the public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. Valid values:
     * - 1: enables the public key
     * - 0: disables the public key
     * 
     */
    public Optional> clientCaEnabled() {
        return Optional.ofNullable(this.clientCaEnabled);
    }

    /**
     * The CRL that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCrlEnabled parameter to 1, you must also specify this parameter.
     * 
     */
    @Import(name="clientCertRevocationList")
    private @Nullable Output clientCertRevocationList;

    /**
     * @return The CRL that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCrlEnabled parameter to 1, you must also specify this parameter.
     * 
     */
    public Optional> clientCertRevocationList() {
        return Optional.ofNullable(this.clientCertRevocationList);
    }

    /**
     * Specifies whether to enable a certificate revocation list (CRL) that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - 1: enables the CRL
     * - 0: disables the CRL
     * 
     */
    @Import(name="clientCrlEnabled")
    private @Nullable Output clientCrlEnabled;

    /**
     * @return Specifies whether to enable a certificate revocation list (CRL) that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - 1: enables the CRL
     * - 0: disables the CRL
     * 
     */
    public Optional> clientCrlEnabled() {
        return Optional.ofNullable(this.clientCrlEnabled);
    }

    /**
     * RDS database connection string.
     * 
     */
    @Import(name="connectionString")
    private @Nullable Output connectionString;

    /**
     * @return RDS database connection string.
     * 
     */
    public Optional> connectionString() {
        return Optional.ofNullable(this.connectionString);
    }

    /**
     * The private connection string prefix. If you want to update public connection string prefix, please use resource alicloud.rds.Connection connection_prefix.
     * > **NOTE:** The prefix must be 8 to 64 characters in length and can contain letters, digits, and hyphens (-). It cannot contain Chinese characters and special characters ~!#%^&*=+\|{};:'",<>/?
     * 
     */
    @Import(name="connectionStringPrefix")
    private @Nullable Output connectionStringPrefix;

    /**
     * @return The private connection string prefix. If you want to update public connection string prefix, please use resource alicloud.rds.Connection connection_prefix.
     * > **NOTE:** The prefix must be 8 to 64 characters in length and can contain letters, digits, and hyphens (-). It cannot contain Chinese characters and special characters ~!#%^&*=+\|{};:'",<>/?
     * 
     */
    public Optional> connectionStringPrefix() {
        return Optional.ofNullable(this.connectionStringPrefix);
    }

    /**
     * (Available since 1.204.1) The creation time of db instance.
     * 
     */
    @Import(name="createTime")
    private @Nullable Output createTime;

    /**
     * @return (Available since 1.204.1) The creation time of db instance.
     * 
     */
    public Optional> createTime() {
        return Optional.ofNullable(this.createTime);
    }

    /**
     * The attribute of the IP address whitelist. By default, this parameter is empty.
     * 
     * > **NOTE:** The IP address whitelists that have the hidden attribute are not displayed in the ApsaraDB RDS console. These IP address whitelists are used to access Alibaba Cloud services, such as Data Transmission Service (DTS).
     * 
     */
    @Import(name="dbInstanceIpArrayAttribute")
    private @Nullable Output dbInstanceIpArrayAttribute;

    /**
     * @return The attribute of the IP address whitelist. By default, this parameter is empty.
     * 
     * > **NOTE:** The IP address whitelists that have the hidden attribute are not displayed in the ApsaraDB RDS console. These IP address whitelists are used to access Alibaba Cloud services, such as Data Transmission Service (DTS).
     * 
     */
    public Optional> dbInstanceIpArrayAttribute() {
        return Optional.ofNullable(this.dbInstanceIpArrayAttribute);
    }

    /**
     * The name of the IP address whitelist. Default value: Default.
     * 
     * > **NOTE:** A maximum of 200 IP address whitelists can be configured for each instance.
     * 
     */
    @Import(name="dbInstanceIpArrayName")
    private @Nullable Output dbInstanceIpArrayName;

    /**
     * @return The name of the IP address whitelist. Default value: Default.
     * 
     * > **NOTE:** A maximum of 200 IP address whitelists can be configured for each instance.
     * 
     */
    public Optional> dbInstanceIpArrayName() {
        return Optional.ofNullable(this.dbInstanceIpArrayName);
    }

    /**
     * The storage type of the instance. Serverless instance, only `cloud_essd` can be selected. Valid values:
     * - local_ssd: specifies to use local SSDs. This value is recommended.
     * - cloud_ssd: specifies to use standard SSDs.
     * - cloud_essd: specifies to use enhanced SSDs (ESSDs).
     * - cloud_essd2: specifies to use enhanced SSDs (ESSDs).
     * - cloud_essd3: specifies to use enhanced SSDs (ESSDs).
     * - general_essd: general essd.
     * 
     */
    @Import(name="dbInstanceStorageType")
    private @Nullable Output dbInstanceStorageType;

    /**
     * @return The storage type of the instance. Serverless instance, only `cloud_essd` can be selected. Valid values:
     * - local_ssd: specifies to use local SSDs. This value is recommended.
     * - cloud_ssd: specifies to use standard SSDs.
     * - cloud_essd: specifies to use enhanced SSDs (ESSDs).
     * - cloud_essd2: specifies to use enhanced SSDs (ESSDs).
     * - cloud_essd3: specifies to use enhanced SSDs (ESSDs).
     * - general_essd: general essd.
     * 
     */
    public Optional> dbInstanceStorageType() {
        return Optional.ofNullable(this.dbInstanceStorageType);
    }

    /**
     * (Available since 1.197.0) The type of db instance.
     * 
     */
    @Import(name="dbInstanceType")
    private @Nullable Output dbInstanceType;

    /**
     * @return (Available since 1.197.0) The type of db instance.
     * 
     */
    public Optional> dbInstanceType() {
        return Optional.ofNullable(this.dbInstanceType);
    }

    /**
     * Specifies whether table names on the instance are case-sensitive. Valid values: `true`, `false`.
     * 
     */
    @Import(name="dbIsIgnoreCase")
    private @Nullable Output dbIsIgnoreCase;

    /**
     * @return Specifies whether table names on the instance are case-sensitive. Valid values: `true`, `false`.
     * 
     */
    public Optional> dbIsIgnoreCase() {
        return Optional.ofNullable(this.dbIsIgnoreCase);
    }

    /**
     * Parameter template ID. Only MySQL and PostgreSQL support this parameter. If this parameter is not specified, the default parameter template is used. You can also customize a parameter template and use it here.
     * 
     */
    @Import(name="dbParamGroupId")
    private @Nullable Output dbParamGroupId;

    /**
     * @return Parameter template ID. Only MySQL and PostgreSQL support this parameter. If this parameter is not specified, the default parameter template is used. You can also customize a parameter template and use it here.
     * 
     */
    public Optional> dbParamGroupId() {
        return Optional.ofNullable(this.dbParamGroupId);
    }

    /**
     * The time zone of the instance. This parameter takes effect only when you set the `Engine` parameter to MySQL or PostgreSQL.
     * - If you set the `Engine` parameter to MySQL.
     * - This time zone of the instance is in UTC. Valid values: -12:59 to +13:00.
     * - You can specify this parameter when the instance is equipped with local SSDs. For example, you can specify the time zone to Asia/Hong_Kong. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
     * - If you set the `Engine` parameter to PostgreSQL.
     * - This time zone of the instance is not in UTC. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
     * - You can specify this parameter only when the instance is equipped with standard SSDs or ESSDs.
     * 
     * > **NOTE:** You can specify the time zone when you create a primary instance. You cannot specify the time zone when you create a read-only instance. Read-only instances inherit the time zone of their primary instance. If you do not specify this parameter, the system assigns the default time zone of the region where the instance resides.
     * 
     */
    @Import(name="dbTimeZone")
    private @Nullable Output dbTimeZone;

    /**
     * @return The time zone of the instance. This parameter takes effect only when you set the `Engine` parameter to MySQL or PostgreSQL.
     * - If you set the `Engine` parameter to MySQL.
     * - This time zone of the instance is in UTC. Valid values: -12:59 to +13:00.
     * - You can specify this parameter when the instance is equipped with local SSDs. For example, you can specify the time zone to Asia/Hong_Kong. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
     * - If you set the `Engine` parameter to PostgreSQL.
     * - This time zone of the instance is not in UTC. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
     * - You can specify this parameter only when the instance is equipped with standard SSDs or ESSDs.
     * 
     * > **NOTE:** You can specify the time zone when you create a primary instance. You cannot specify the time zone when you create a read-only instance. Read-only instances inherit the time zone of their primary instance. If you do not specify this parameter, the system assigns the default time zone of the region where the instance resides.
     * 
     */
    public Optional> dbTimeZone() {
        return Optional.ofNullable(this.dbTimeZone);
    }

    /**
     * The switch of delete protection. Valid values:
     * - true: delete protect.
     * - false: no delete protect.
     * 
     * > **NOTE:** `deletion_protection` is valid only when attribute `instance_charge_type` is set to `Postpaid` or `Serverless`, supported engine type: `MySQL`, `PostgreSQL`, `MariaDB`, `MSSQL`.
     * 
     */
    @Import(name="deletionProtection")
    private @Nullable Output deletionProtection;

    /**
     * @return The switch of delete protection. Valid values:
     * - true: delete protect.
     * - false: no delete protect.
     * 
     * > **NOTE:** `deletion_protection` is valid only when attribute `instance_charge_type` is set to `Postpaid` or `Serverless`, supported engine type: `MySQL`, `PostgreSQL`, `MariaDB`, `MSSQL`.
     * 
     */
    public Optional> deletionProtection() {
        return Optional.ofNullable(this.deletionProtection);
    }

    /**
     * The instance configuration type. Valid values: ["Up", "Down", "TempUpgrade", "Serverless"]
     * 
     */
    @Import(name="direction")
    private @Nullable Output direction;

    /**
     * @return The instance configuration type. Valid values: ["Up", "Down", "TempUpgrade", "Serverless"]
     * 
     */
    public Optional> direction() {
        return Optional.ofNullable(this.direction);
    }

    /**
     * The method to update the engine version and change.  Default value: Immediate. Valid values:
     * - Immediate: The change immediately takes effect.
     * - MaintainTime: The change takes effect during the specified maintenance window. For more information, see ModifyDBInstanceMaintainTime.
     * 
     */
    @Import(name="effectiveTime")
    private @Nullable Output effectiveTime;

    /**
     * @return The method to update the engine version and change.  Default value: Immediate. Valid values:
     * - Immediate: The change immediately takes effect.
     * - MaintainTime: The change takes effect during the specified maintenance window. For more information, see ModifyDBInstanceMaintainTime.
     * 
     */
    public Optional> effectiveTime() {
        return Optional.ofNullable(this.effectiveTime);
    }

    /**
     * The key id of the KMS. Used for encrypting a disk if not null. Only for PostgreSQL, MySQL and SQLServer.
     * 
     */
    @Import(name="encryptionKey")
    private @Nullable Output encryptionKey;

    /**
     * @return The key id of the KMS. Used for encrypting a disk if not null. Only for PostgreSQL, MySQL and SQLServer.
     * 
     */
    public Optional> encryptionKey() {
        return Optional.ofNullable(this.encryptionKey);
    }

    /**
     * Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
     * 
     * > **NOTE:** When the 'engine_version' changes, it can be used as the target database version for the large version upgrade of RDS for MySQL instance.
     * 
     */
    @Import(name="engine")
    private @Nullable Output engine;

    /**
     * @return Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
     * 
     * > **NOTE:** When the 'engine_version' changes, it can be used as the target database version for the large version upgrade of RDS for MySQL instance.
     * 
     */
    public Optional> engine() {
        return Optional.ofNullable(this.engine);
    }

    /**
     * Database version. Value options can refer to the latest docs [CreateDBInstance](https://www.alibabacloud.com/help/doc-detail/26228.htm) `EngineVersion`.
     * - MySQL: [ 5.5、5.6、5.7、8.0 ]
     * - SQLServer: [ 2008r2、08r2_ent_ha、2012、2012_ent_ha、2012_std_ha、2012_web、2014_std_ha、2016_ent_ha、2016_std_ha、2016_web、2017_std_ha、2017_ent、2019_std_ha、2019_ent ]
     * - PostgreSQL: [ 10.0、11.0、12.0、13.0、14.0、15.0 ]
     * - MariaDB: [ 10.3 ]
     * - Serverless
     * > - MySQL: [ 5.7、8.0 ]
     * > - SQLServer: [ 2016_std_sl、2017_std_sl、2019_std_sl ]
     * > - PostgreSQL: [ 14.0 ]
     * > - MariaDB does not support creating serverless instances.
     * 
     */
    @Import(name="engineVersion")
    private @Nullable Output engineVersion;

    /**
     * @return Database version. Value options can refer to the latest docs [CreateDBInstance](https://www.alibabacloud.com/help/doc-detail/26228.htm) `EngineVersion`.
     * - MySQL: [ 5.5、5.6、5.7、8.0 ]
     * - SQLServer: [ 2008r2、08r2_ent_ha、2012、2012_ent_ha、2012_std_ha、2012_web、2014_std_ha、2016_ent_ha、2016_std_ha、2016_web、2017_std_ha、2017_ent、2019_std_ha、2019_ent ]
     * - PostgreSQL: [ 10.0、11.0、12.0、13.0、14.0、15.0 ]
     * - MariaDB: [ 10.3 ]
     * - Serverless
     * > - MySQL: [ 5.7、8.0 ]
     * > - SQLServer: [ 2016_std_sl、2017_std_sl、2019_std_sl ]
     * > - PostgreSQL: [ 14.0 ]
     * > - MariaDB does not support creating serverless instances.
     * 
     */
    public Optional> engineVersion() {
        return Optional.ofNullable(this.engineVersion);
    }

    /**
     * Specifies whether to enable forcible switching. Valid values:
     * - Yes
     * - No
     * 
     */
    @Import(name="force")
    private @Nullable Output force;

    /**
     * @return Specifies whether to enable forcible switching. Valid values:
     * - Yes
     * - No
     * 
     */
    public Optional> force() {
        return Optional.ofNullable(this.force);
    }

    /**
     * Set it to true to make some parameter efficient when modifying them. Default to false.
     * 
     */
    @Import(name="forceRestart")
    private @Nullable Output forceRestart;

    /**
     * @return Set it to true to make some parameter efficient when modifying them. Default to false.
     * 
     */
    public Optional> forceRestart() {
        return Optional.ofNullable(this.forceRestart);
    }

    /**
     * The read-only instances to which you want to synchronize the IP address whitelist.
     * * If the instance is attached with a read-only instance, you can use this parameter to synchronize the IP address whitelist to the read-only instance. If the instance is attached with multiple read-only instances, the read-only instances must be separated by commas (,).
     * * If the instance is not attached with a read-only instance, this parameter is empty.
     * 
     */
    @Import(name="freshWhiteListReadins")
    private @Nullable Output freshWhiteListReadins;

    /**
     * @return The read-only instances to which you want to synchronize the IP address whitelist.
     * * If the instance is attached with a read-only instance, you can use this parameter to synchronize the IP address whitelist to the read-only instance. If the instance is attached with multiple read-only instances, the read-only instances must be separated by commas (,).
     * * If the instance is not attached with a read-only instance, this parameter is empty.
     * 
     */
    public Optional> freshWhiteListReadins() {
        return Optional.ofNullable(this.freshWhiteListReadins);
    }

    /**
     * The primary/secondary switchover mode of the instance. Default value: Auto. Valid values:
     * - Auto: The system automatically switches over services from the primary to secondary instances in the event of a fault.
     * - Manual: You must manually switch over services from the primary to secondary instances in the event of a fault.
     * 
     * > **NOTE:** If you set this parameter to Manual, you must specify the ManualHATime parameter.
     * 
     */
    @Import(name="haConfig")
    private @Nullable Output haConfig;

    /**
     * @return The primary/secondary switchover mode of the instance. Default value: Auto. Valid values:
     * - Auto: The system automatically switches over services from the primary to secondary instances in the event of a fault.
     * - Manual: You must manually switch over services from the primary to secondary instances in the event of a fault.
     * 
     * > **NOTE:** If you set this parameter to Manual, you must specify the ManualHATime parameter.
     * 
     */
    public Optional> haConfig() {
        return Optional.ofNullable(this.haConfig);
    }

    /**
     * Valid values are `Prepaid`, `Postpaid`, `Serverless`, Default to `Postpaid`. Currently, the resource only supports PostPaid to PrePaid. For more information, see [Overview](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/what-is-serverless?spm=a2c63.p38356.0.0.772a28cfTAGqIv).
     * 
     */
    @Import(name="instanceChargeType")
    private @Nullable Output instanceChargeType;

    /**
     * @return Valid values are `Prepaid`, `Postpaid`, `Serverless`, Default to `Postpaid`. Currently, the resource only supports PostPaid to PrePaid. For more information, see [Overview](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/what-is-serverless?spm=a2c63.p38356.0.0.772a28cfTAGqIv).
     * 
     */
    public Optional> instanceChargeType() {
        return Optional.ofNullable(this.instanceChargeType);
    }

    /**
     * The name of DB instance. It a string of 2 to 256 characters.
     * 
     */
    @Import(name="instanceName")
    private @Nullable Output instanceName;

    /**
     * @return The name of DB instance. It a string of 2 to 256 characters.
     * 
     */
    public Optional> instanceName() {
        return Optional.ofNullable(this.instanceName);
    }

    /**
     * User-defined DB instance storage space. Value range:
     * - [5, 2000] for MySQL/PostgreSQL HA dual node edition;
     * - [20,1000] for MySQL 5.7 basic single node edition;
     * - [10, 2000] for SQL Server 2008R2;
     * - [20,2000] for SQL Server 2012 basic single node edition
     *   Increase progressively at a rate of 5 GB. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
     *   Note: There is extra 5 GB storage for SQL Server Instance, and it is not in specified `instance_storage`.
     * 
     */
    @Import(name="instanceStorage")
    private @Nullable Output instanceStorage;

    /**
     * @return User-defined DB instance storage space. Value range:
     * - [5, 2000] for MySQL/PostgreSQL HA dual node edition;
     * - [20,1000] for MySQL 5.7 basic single node edition;
     * - [10, 2000] for SQL Server 2008R2;
     * - [20,2000] for SQL Server 2012 basic single node edition
     *   Increase progressively at a rate of 5 GB. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
     *   Note: There is extra 5 GB storage for SQL Server Instance, and it is not in specified `instance_storage`.
     * 
     */
    public Optional> instanceStorage() {
        return Optional.ofNullable(this.instanceStorage);
    }

    /**
     * DB Instance type. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
     * - To create a serverless instance, please pass the following values:
     * - MySQL basic: mysql.n2.serverless.1c
     * - MySQL high availability: mysql.n2.serverless.2c
     * - SQLServer high availability: mssql.mem2.serverless.s2
     * - PostgreSQL basic: pg.n2.serverless.1c
     * 
     * > **NOTE:** When `storage_auto_scale="Enable"`, do not perform `instance_storage` check. when `storage_auto_scale="Disable"`, if the instance itself `instance_storage`has changed. You need to manually revise the `instance_storage` in the template value. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
     * 
     */
    @Import(name="instanceType")
    private @Nullable Output instanceType;

    /**
     * @return DB Instance type. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
     * - To create a serverless instance, please pass the following values:
     * - MySQL basic: mysql.n2.serverless.1c
     * - MySQL high availability: mysql.n2.serverless.2c
     * - SQLServer high availability: mssql.mem2.serverless.s2
     * - PostgreSQL basic: pg.n2.serverless.1c
     * 
     * > **NOTE:** When `storage_auto_scale="Enable"`, do not perform `instance_storage` check. when `storage_auto_scale="Disable"`, if the instance itself `instance_storage`has changed. You need to manually revise the `instance_storage` in the template value. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
     * 
     */
    public Optional> instanceType() {
        return Optional.ofNullable(this.instanceType);
    }

    /**
     * Maintainable time period format of the instance: HH:MMZ-HH:MMZ (UTC time)
     * 
     */
    @Import(name="maintainTime")
    private @Nullable Output maintainTime;

    /**
     * @return Maintainable time period format of the instance: HH:MMZ-HH:MMZ (UTC time)
     * 
     */
    public Optional> maintainTime() {
        return Optional.ofNullable(this.maintainTime);
    }

    /**
     * The time after when you want to enable automatic primary/secondary switchover. At most, you can set this parameter to 23:59:59 seven days later. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     * > **NOTE:** This parameter only takes effect when the HAConfig parameter is set to Manual.
     * 
     */
    @Import(name="manualHaTime")
    private @Nullable Output manualHaTime;

    /**
     * @return The time after when you want to enable automatic primary/secondary switchover. At most, you can set this parameter to 23:59:59 seven days later. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     * > **NOTE:** This parameter only takes effect when the HAConfig parameter is set to Manual.
     * 
     */
    public Optional> manualHaTime() {
        return Optional.ofNullable(this.manualHaTime);
    }

    /**
     * The method that is used to modify the IP address whitelist. Default value: Cover. Valid values:
     * - Cover: Use the value of the SecurityIps parameter to overwrite the existing entries in the IP address whitelist.
     * - Append: Add the IP addresses and CIDR blocks that are specified in the SecurityIps parameter to the IP address whitelist.
     * - Delete: Delete IP addresses and CIDR blocks that are specified in the SecurityIps parameter from the IP address whitelist. You must retain at least one IP address or CIDR block.
     * 
     */
    @Import(name="modifyMode")
    private @Nullable Output modifyMode;

    /**
     * @return The method that is used to modify the IP address whitelist. Default value: Cover. Valid values:
     * - Cover: Use the value of the SecurityIps parameter to overwrite the existing entries in the IP address whitelist.
     * - Append: Add the IP addresses and CIDR blocks that are specified in the SecurityIps parameter to the IP address whitelist.
     * - Delete: Delete IP addresses and CIDR blocks that are specified in the SecurityIps parameter from the IP address whitelist. You must retain at least one IP address or CIDR block.
     * 
     */
    public Optional> modifyMode() {
        return Optional.ofNullable(this.modifyMode);
    }

    /**
     * The monitoring frequency in seconds. Valid values are 5, 10, 60, 300. Defaults to 300.
     * 
     */
    @Import(name="monitoringPeriod")
    private @Nullable Output monitoringPeriod;

    /**
     * @return The monitoring frequency in seconds. Valid values are 5, 10, 60, 300. Defaults to 300.
     * 
     */
    public Optional> monitoringPeriod() {
        return Optional.ofNullable(this.monitoringPeriod);
    }

    /**
     * The globally unique identifier (GUID) of the secondary instance. You can call the DescribeDBInstanceHAConfig operation to query the GUID of the secondary instance.
     * 
     */
    @Import(name="nodeId")
    private @Nullable Output nodeId;

    /**
     * @return The globally unique identifier (GUID) of the secondary instance. You can call the DescribeDBInstanceHAConfig operation to query the GUID of the secondary instance.
     * 
     */
    public Optional> nodeId() {
        return Optional.ofNullable(this.nodeId);
    }

    /**
     * Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm) . See `parameters` below.
     * 
     */
    @Import(name="parameters")
    private @Nullable Output> parameters;

    /**
     * @return Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm) . See `parameters` below.
     * 
     */
    public Optional>> parameters() {
        return Optional.ofNullable(this.parameters);
    }

    /**
     * The duration that you will buy DB instance (in month). It is valid when instance_charge_type is `PrePaid`. Valid values: [1~9], 12, 24, 36.
     * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
     * 
     */
    @Import(name="period")
    private @Nullable Output period;

    /**
     * @return The duration that you will buy DB instance (in month). It is valid when instance_charge_type is `PrePaid`. Valid values: [1~9], 12, 24, 36.
     * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
     * 
     */
    public Optional> period() {
        return Optional.ofNullable(this.period);
    }

    /**
     * The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) . See `pg_hba_conf` below.
     * 
     */
    @Import(name="pgHbaConfs")
    private @Nullable Output> pgHbaConfs;

    /**
     * @return The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) . See `pg_hba_conf` below.
     * 
     */
    public Optional>> pgHbaConfs() {
        return Optional.ofNullable(this.pgHbaConfs);
    }

    /**
     * The private port of the database service. If you want to update public port, please use resource alicloud.rds.Connection port.
     * 
     */
    @Import(name="port")
    private @Nullable Output port;

    /**
     * @return The private port of the database service. If you want to update public port, please use resource alicloud.rds.Connection port.
     * 
     */
    public Optional> port() {
        return Optional.ofNullable(this.port);
    }

    /**
     * The private IP address of the instance. The private IP address must be within the Classless Inter-Domain Routing (CIDR) block of the vSwitch that is specified by the VSwitchId parameter.
     * 
     */
    @Import(name="privateIpAddress")
    private @Nullable Output privateIpAddress;

    /**
     * @return The private IP address of the instance. The private IP address must be within the Classless Inter-Domain Routing (CIDR) block of the vSwitch that is specified by the VSwitchId parameter.
     * 
     */
    public Optional> privateIpAddress() {
        return Optional.ofNullable(this.privateIpAddress);
    }

    /**
     * The policy based on which ApsaraDB RDS retains archived backup files after the instance is released. Valid values:
     * - None: No archived backup files are retained.
     * - Lastest: Only the last archived backup file is retained.
     * - All: All the archived backup files are retained.
     * 
     * > **NOTE:** This parameter is supported only when the instance runs the MySQL database engine.
     * 
     */
    @Import(name="releasedKeepPolicy")
    private @Nullable Output releasedKeepPolicy;

    /**
     * @return The policy based on which ApsaraDB RDS retains archived backup files after the instance is released. Valid values:
     * - None: No archived backup files are retained.
     * - Lastest: Only the last archived backup file is retained.
     * - All: All the archived backup files are retained.
     * 
     * > **NOTE:** This parameter is supported only when the instance runs the MySQL database engine.
     * 
     */
    public Optional> releasedKeepPolicy() {
        return Optional.ofNullable(this.releasedKeepPolicy);
    }

    /**
     * The method that is used to verify the replication permission. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - cert
     * - perfer
     * - verify-ca
     * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
     * 
     */
    @Import(name="replicationAcl")
    private @Nullable Output replicationAcl;

    /**
     * @return The method that is used to verify the replication permission. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
     * - cert
     * - perfer
     * - verify-ca
     * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
     * 
     */
    public Optional> replicationAcl() {
        return Optional.ofNullable(this.replicationAcl);
    }

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

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

    /**
     * The Alibaba Cloud Resource Name (ARN) of the RAM role.
     * 
     * > **NOTE:**  This parameter is not required when you create an instance that runs MySQL, PostgreSQL, or SQL Server. You need to only specify the RoleARN parameter to create an instance that has cloud disk encryption enabled by using the obtained key ID.
     * You can configure RAM authorization to require a RAM user to enable cloud disk encryption when the RAM user is used to create an instance. If cloud disk encryption is disabled during the instance creation, the creation operation fails. To complete the configuration, you can attach the following policy to the RAM user: {"Version":"1","Statement":[{"Effect":"Deny","Action":"rds:CreateDBInstance","Resource":"*","Condition":{"StringEquals":{"rds:DiskEncryptionRequired":"false"}}}]}
     * 
     */
    @Import(name="roleArn")
    private @Nullable Output roleArn;

    /**
     * @return The Alibaba Cloud Resource Name (ARN) of the RAM role.
     * 
     * > **NOTE:**  This parameter is not required when you create an instance that runs MySQL, PostgreSQL, or SQL Server. You need to only specify the RoleARN parameter to create an instance that has cloud disk encryption enabled by using the obtained key ID.
     * You can configure RAM authorization to require a RAM user to enable cloud disk encryption when the RAM user is used to create an instance. If cloud disk encryption is disabled during the instance creation, the creation operation fails. To complete the configuration, you can attach the following policy to the RAM user: {"Version":"1","Statement":[{"Effect":"Deny","Action":"rds:CreateDBInstance","Resource":"*","Condition":{"StringEquals":{"rds:DiskEncryptionRequired":"false"}}}]}
     * 
     */
    public Optional> roleArn() {
        return Optional.ofNullable(this.roleArn);
    }

    /**
     * It has been deprecated from 1.69.0 and use `security_group_ids` instead.
     * 
     * @deprecated
     * Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead.
     * 
     */
    @Deprecated /* Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead. */
    @Import(name="securityGroupId")
    private @Nullable Output securityGroupId;

    /**
     * @return It has been deprecated from 1.69.0 and use `security_group_ids` instead.
     * 
     * @deprecated
     * Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead.
     * 
     */
    @Deprecated /* Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead. */
    public Optional> securityGroupId() {
        return Optional.ofNullable(this.securityGroupId);
    }

    /**
     * , Available since 1.69.0) The list IDs to join ECS Security Group. At most supports three security groups.
     * 
     */
    @Import(name="securityGroupIds")
    private @Nullable Output> securityGroupIds;

    /**
     * @return , Available since 1.69.0) The list IDs to join ECS Security Group. At most supports three security groups.
     * 
     */
    public Optional>> securityGroupIds() {
        return Optional.ofNullable(this.securityGroupIds);
    }

    /**
     * Valid values are `normal`, `safety`, Default to `normal`. support `safety` switch to high security access mode.
     * 
     */
    @Import(name="securityIpMode")
    private @Nullable Output securityIpMode;

    /**
     * @return Valid values are `normal`, `safety`, Default to `normal`. support `safety` switch to high security access mode.
     * 
     */
    public Optional> securityIpMode() {
        return Optional.ofNullable(this.securityIpMode);
    }

    /**
     * The type of IP address in the IP address whitelist.
     * 
     */
    @Import(name="securityIpType")
    private @Nullable Output securityIpType;

    /**
     * @return The type of IP address in the IP address whitelist.
     * 
     */
    public Optional> securityIpType() {
        return Optional.ofNullable(this.securityIpType);
    }

    /**
     * List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is [1,32]).
     * 
     */
    @Import(name="securityIps")
    private @Nullable Output> securityIps;

    /**
     * @return List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is [1,32]).
     * 
     */
    public Optional>> securityIps() {
        return Optional.ofNullable(this.securityIps);
    }

    /**
     * The content of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_cert` start  support `MySQL` engine.
     * 
     */
    @Import(name="serverCert")
    private @Nullable Output serverCert;

    /**
     * @return The content of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_cert` start  support `MySQL` engine.
     * 
     */
    public Optional> serverCert() {
        return Optional.ofNullable(this.serverCert);
    }

    /**
     * The private key of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_key` start support `MySQL` engine.
     * 
     */
    @Import(name="serverKey")
    private @Nullable Output serverKey;

    /**
     * @return The private key of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_key` start support `MySQL` engine.
     * 
     */
    public Optional> serverKey() {
        return Optional.ofNullable(this.serverKey);
    }

    /**
     * The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for Serverless instance. See `serverless_config` below.
     * 
     */
    @Import(name="serverlessConfigs")
    private @Nullable Output> serverlessConfigs;

    /**
     * @return The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for Serverless instance. See `serverless_config` below.
     * 
     */
    public Optional>> serverlessConfigs() {
        return Optional.ofNullable(this.serverlessConfigs);
    }

    /**
     * The sql collector keep time of the instance. Valid values are `30`, `180`, `365`, `1095`, `1825`, Default to `30`.
     * 
     */
    @Import(name="sqlCollectorConfigValue")
    private @Nullable Output sqlCollectorConfigValue;

    /**
     * @return The sql collector keep time of the instance. Valid values are `30`, `180`, `365`, `1095`, `1825`, Default to `30`.
     * 
     */
    public Optional> sqlCollectorConfigValue() {
        return Optional.ofNullable(this.sqlCollectorConfigValue);
    }

    /**
     * The sql collector status of the instance. Valid values are `Enabled`, `Disabled`, Default to `Disabled`.
     * 
     */
    @Import(name="sqlCollectorStatus")
    private @Nullable Output sqlCollectorStatus;

    /**
     * @return The sql collector status of the instance. Valid values are `Enabled`, `Disabled`, Default to `Disabled`.
     * 
     */
    public Optional> sqlCollectorStatus() {
        return Optional.ofNullable(this.sqlCollectorStatus);
    }

    /**
     * Actions performed on SSL functions. Valid values:
     * `Open`: turn on SSL encryption;
     * `Close`: turn off SSL encryption;
     * `Update`: update SSL certificate.
     * See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26254.htm).
     * 
     * > **NOTE:** The attribute `ssl_action` will be ignored when setting `instance_charge_type = "Serverless"` for SQLServer, PostgreSQL or MariaDB.
     * 
     */
    @Import(name="sslAction")
    private @Nullable Output sslAction;

    /**
     * @return Actions performed on SSL functions. Valid values:
     * `Open`: turn on SSL encryption;
     * `Close`: turn off SSL encryption;
     * `Update`: update SSL certificate.
     * See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26254.htm).
     * 
     * > **NOTE:** The attribute `ssl_action` will be ignored when setting `instance_charge_type = "Serverless"` for SQLServer, PostgreSQL or MariaDB.
     * 
     */
    public Optional> sslAction() {
        return Optional.ofNullable(this.sslAction);
    }

    /**
     * The internal or public endpoint for which the server certificate needs to be created or updated.
     * 
     */
    @Import(name="sslConnectionString")
    private @Nullable Output sslConnectionString;

    /**
     * @return The internal or public endpoint for which the server certificate needs to be created or updated.
     * 
     */
    public Optional> sslConnectionString() {
        return Optional.ofNullable(this.sslConnectionString);
    }

    /**
     * Status of the SSL feature. `Yes`: SSL is turned on; `No`: SSL is turned off.
     * 
     */
    @Import(name="sslStatus")
    private @Nullable Output sslStatus;

    /**
     * @return Status of the SSL feature. `Yes`: SSL is turned on; `No`: SSL is turned off.
     * 
     */
    public Optional> sslStatus() {
        return Optional.ofNullable(this.sslStatus);
    }

    /**
     * (Available since 1.204.1) The status of db instance.
     * 
     */
    @Import(name="status")
    private @Nullable Output status;

    /**
     * @return (Available since 1.204.1) The status of db instance.
     * 
     */
    public Optional> status() {
        return Optional.ofNullable(this.status);
    }

    /**
     * Automatic storage space expansion switch. Valid values:
     * - Enable
     * - Disable
     * 
     * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable.
     * 
     */
    @Import(name="storageAutoScale")
    private @Nullable Output storageAutoScale;

    /**
     * @return Automatic storage space expansion switch. Valid values:
     * - Enable
     * - Disable
     * 
     * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable.
     * 
     */
    public Optional> storageAutoScale() {
        return Optional.ofNullable(this.storageAutoScale);
    }

    /**
     * The threshold in percentage based on which an automatic storage expansion is triggered. If the available storage reaches the threshold, ApsaraDB RDS increases the storage capacity of the instance.
     * Valid values: [10, 20, 30, 40, 50].
     * 
     * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable. The value must be greater than or equal to the total size of the current storage space of the instance.
     * 
     */
    @Import(name="storageThreshold")
    private @Nullable Output storageThreshold;

    /**
     * @return The threshold in percentage based on which an automatic storage expansion is triggered. If the available storage reaches the threshold, ApsaraDB RDS increases the storage capacity of the instance.
     * Valid values: [10, 20, 30, 40, 50].
     * 
     * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable. The value must be greater than or equal to the total size of the current storage space of the instance.
     * 
     */
    public Optional> storageThreshold() {
        return Optional.ofNullable(this.storageThreshold);
    }

    /**
     * The upper limit of the total storage space for automatic expansion of the storage space, that is, automatic expansion will not cause the total storage space of the instance to exceed this value. Unit: GB. The value must be ≥0.
     * 
     * > **NOTE:** Because of data backup and migration, change DB instance type and storage would cost 15~20 minutes. Please make full preparation before changing them.
     * 
     */
    @Import(name="storageUpperBound")
    private @Nullable Output storageUpperBound;

    /**
     * @return The upper limit of the total storage space for automatic expansion of the storage space, that is, automatic expansion will not cause the total storage space of the instance to exceed this value. Unit: GB. The value must be ≥0.
     * 
     * > **NOTE:** Because of data backup and migration, change DB instance type and storage would cost 15~20 minutes. Please make full preparation before changing them.
     * 
     */
    public Optional> storageUpperBound() {
        return Optional.ofNullable(this.storageUpperBound);
    }

    /**
     * The specific point in time when you want to perform the update. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. It is valid only when `target_minor_version` is changed. The time must be in UTC.
     * 
     * > **NOTE:** This parameter takes effect only when you set the UpgradeTime parameter to SpecifyTime.
     * 
     */
    @Import(name="switchTime")
    private @Nullable Output switchTime;

    /**
     * @return The specific point in time when you want to perform the update. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. It is valid only when `target_minor_version` is changed. The time must be in UTC.
     * 
     * > **NOTE:** This parameter takes effect only when you set the UpgradeTime parameter to SpecifyTime.
     * 
     */
    public Optional> switchTime() {
        return Optional.ofNullable(this.switchTime);
    }

    /**
     * A mapping of tags to assign to the resource.
     * - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
     * - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
     * 
     * Note: From 1.63.0, the tag key and value are case sensitive. Before that, they are not case sensitive.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
     * - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
     * 
     * Note: From 1.63.0, the tag key and value are case sensitive. Before that, they are not case sensitive.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The minor engine version to which you want to update the instance. If you do not specify this parameter, the instance is updated to the latest minor engine version. You must specify the minor engine version in one of the following formats:
     * - PostgreSQL: rds_postgres_<Major engine version>00_<Minor engine version>. Example: rds_postgres_1200_20200830.
     * - MySQL: <RDS edition>_<Minor engine version>. Examples: rds_20200229, xcluster_20200229, and xcluster80_20200229. The following RDS editions are supported:
     * - rds: The instance runs RDS Basic or High-availability Edition.
     * - xcluster: The instance runs MySQL 5.7 on RDS Enterprise Edition.
     * - xcluster80: The instance runs MySQL 8.0 on RDS Enterprise Edition.
     * - SQLServer: <Minor engine version>. Example: 15.0.4073.23.
     * 
     * > **NOTE:** For more information about minor engine versions, see Release notes of minor AliPG versions, Release notes of minor AliSQL versions, and Release notes of minor engine versions of ApsaraDB RDS for SQL Server.
     * 
     */
    @Import(name="targetMinorVersion")
    private @Nullable Output targetMinorVersion;

    /**
     * @return The minor engine version to which you want to update the instance. If you do not specify this parameter, the instance is updated to the latest minor engine version. You must specify the minor engine version in one of the following formats:
     * - PostgreSQL: rds_postgres_<Major engine version>00_<Minor engine version>. Example: rds_postgres_1200_20200830.
     * - MySQL: <RDS edition>_<Minor engine version>. Examples: rds_20200229, xcluster_20200229, and xcluster80_20200229. The following RDS editions are supported:
     * - rds: The instance runs RDS Basic or High-availability Edition.
     * - xcluster: The instance runs MySQL 5.7 on RDS Enterprise Edition.
     * - xcluster80: The instance runs MySQL 8.0 on RDS Enterprise Edition.
     * - SQLServer: <Minor engine version>. Example: 15.0.4073.23.
     * 
     * > **NOTE:** For more information about minor engine versions, see Release notes of minor AliPG versions, Release notes of minor AliSQL versions, and Release notes of minor engine versions of ApsaraDB RDS for SQL Server.
     * 
     */
    public Optional> targetMinorVersion() {
        return Optional.ofNullable(this.targetMinorVersion);
    }

    /**
     * The availability check method of the instance. Valid values:
     * - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
     * - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
     * 
     */
    @Import(name="tcpConnectionType")
    private @Nullable Output tcpConnectionType;

    /**
     * @return The availability check method of the instance. Valid values:
     * - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
     * - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
     * 
     */
    public Optional> tcpConnectionType() {
        return Optional.ofNullable(this.tcpConnectionType);
    }

    /**
     * The TDE(Transparent Data Encryption) status. After TDE is turned on, it cannot be turned off. See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26256.htm).
     * 
     */
    @Import(name="tdeStatus")
    private @Nullable Output tdeStatus;

    /**
     * @return The TDE(Transparent Data Encryption) status. After TDE is turned on, it cannot be turned off. See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26256.htm).
     * 
     */
    public Optional> tdeStatus() {
        return Optional.ofNullable(this.tdeStatus);
    }

    /**
     * Whether to upgrade a minor version of the kernel. Valid values:
     * - true: upgrade
     * - false: not to upgrade
     * 
     * @deprecated
     * Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead.
     * 
     */
    @Deprecated /* Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead. */
    @Import(name="upgradeDbInstanceKernelVersion")
    private @Nullable Output upgradeDbInstanceKernelVersion;

    /**
     * @return Whether to upgrade a minor version of the kernel. Valid values:
     * - true: upgrade
     * - false: not to upgrade
     * 
     * @deprecated
     * Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead.
     * 
     */
    @Deprecated /* Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead. */
    public Optional> upgradeDbInstanceKernelVersion() {
        return Optional.ofNullable(this.upgradeDbInstanceKernelVersion);
    }

    /**
     * The method to update the minor engine version. Default value: Immediate. It is valid only when `target_minor_version` is changed. Valid values:
     * - Immediate: The minor engine version is immediately updated.
     * - MaintainTime: The minor engine version is updated during the maintenance window. For more information about how to change the maintenance window, see ModifyDBInstanceMaintainTime.
     * - SpecifyTime: The minor engine version is updated at the point in time you specify.
     * 
     */
    @Import(name="upgradeTime")
    private @Nullable Output upgradeTime;

    /**
     * @return The method to update the minor engine version. Default value: Immediate. It is valid only when `target_minor_version` is changed. Valid values:
     * - Immediate: The minor engine version is immediately updated.
     * - MaintainTime: The minor engine version is updated during the maintenance window. For more information about how to change the maintenance window, see ModifyDBInstanceMaintainTime.
     * - SpecifyTime: The minor engine version is updated at the point in time you specify.
     * 
     */
    public Optional> upgradeTime() {
        return Optional.ofNullable(this.upgradeTime);
    }

    /**
     * The VPC ID of the instance.
     * 
     * > **NOTE:** This parameter applies only to ApsaraDB RDS for MySQL instances. For more information about Upgrade the major engine version of an ApsaraDB RDS for MySQL instance, see [Upgrade the major engine version of an RDS instance in the ApsaraDB RDS console](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/upgrade-the-major-engine-version-of-an-apsaradb-rds-for-mysql-instance-1).
     * 
     */
    @Import(name="vpcId")
    private @Nullable Output vpcId;

    /**
     * @return The VPC ID of the instance.
     * 
     * > **NOTE:** This parameter applies only to ApsaraDB RDS for MySQL instances. For more information about Upgrade the major engine version of an ApsaraDB RDS for MySQL instance, see [Upgrade the major engine version of an RDS instance in the ApsaraDB RDS console](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/upgrade-the-major-engine-version-of-an-apsaradb-rds-for-mysql-instance-1).
     * 
     */
    public Optional> vpcId() {
        return Optional.ofNullable(this.vpcId);
    }

    /**
     * The virtual switch ID to launch DB instances in one VPC. If there are multiple vswitches, separate them with commas.
     * 
     */
    @Import(name="vswitchId")
    private @Nullable Output vswitchId;

    /**
     * @return The virtual switch ID to launch DB instances in one VPC. If there are multiple vswitches, separate them with commas.
     * 
     */
    public Optional> vswitchId() {
        return Optional.ofNullable(this.vswitchId);
    }

    /**
     * The network type of the IP address whitelist. Default value: MIX. Valid values:
     * - Classic: classic network in enhanced whitelist mode
     * - VPC: virtual private cloud (VPC) in enhanced whitelist mode
     * - MIX: standard whitelist mode
     * 
     * > **NOTE:** In standard whitelist mode, IP addresses and CIDR blocks can be added only to the default IP address whitelist. In enhanced whitelist mode, IP addresses and CIDR blocks can be added to both IP address whitelists of the classic network type and those of the VPC network type.
     * 
     */
    @Import(name="whitelistNetworkType")
    private @Nullable Output whitelistNetworkType;

    /**
     * @return The network type of the IP address whitelist. Default value: MIX. Valid values:
     * - Classic: classic network in enhanced whitelist mode
     * - VPC: virtual private cloud (VPC) in enhanced whitelist mode
     * - MIX: standard whitelist mode
     * 
     * > **NOTE:** In standard whitelist mode, IP addresses and CIDR blocks can be added only to the default IP address whitelist. In enhanced whitelist mode, IP addresses and CIDR blocks can be added to both IP address whitelists of the classic network type and those of the VPC network type.
     * 
     */
    public Optional> whitelistNetworkType() {
        return Optional.ofNullable(this.whitelistNetworkType);
    }

    /**
     * The Zone to launch the DB instance. From version 1.8.1, it supports multiple zone.
     * If it is a multi-zone and `vswitch_id` is specified, the vswitch must in the one of them.
     * The multiple zone ID can be retrieved by setting `multi` to "true" in the data source `alicloud.getZones`.
     * 
     */
    @Import(name="zoneId")
    private @Nullable Output zoneId;

    /**
     * @return The Zone to launch the DB instance. From version 1.8.1, it supports multiple zone.
     * If it is a multi-zone and `vswitch_id` is specified, the vswitch must in the one of them.
     * The multiple zone ID can be retrieved by setting `multi` to "true" in the data source `alicloud.getZones`.
     * 
     */
    public Optional> zoneId() {
        return Optional.ofNullable(this.zoneId);
    }

    /**
     * The region ID of the secondary instance if you create a secondary instance. If you set this parameter to the same value as the ZoneId parameter, the instance is deployed in a single zone. Otherwise, the instance is deployed in multiple zones.
     * 
     */
    @Import(name="zoneIdSlaveA")
    private @Nullable Output zoneIdSlaveA;

    /**
     * @return The region ID of the secondary instance if you create a secondary instance. If you set this parameter to the same value as the ZoneId parameter, the instance is deployed in a single zone. Otherwise, the instance is deployed in multiple zones.
     * 
     */
    public Optional> zoneIdSlaveA() {
        return Optional.ofNullable(this.zoneIdSlaveA);
    }

    private InstanceState() {}

    private InstanceState(InstanceState $) {
        this.acl = $.acl;
        this.autoRenew = $.autoRenew;
        this.autoRenewPeriod = $.autoRenewPeriod;
        this.autoUpgradeMinorVersion = $.autoUpgradeMinorVersion;
        this.babelfishConfigs = $.babelfishConfigs;
        this.babelfishPort = $.babelfishPort;
        this.caType = $.caType;
        this.category = $.category;
        this.clientCaCert = $.clientCaCert;
        this.clientCaEnabled = $.clientCaEnabled;
        this.clientCertRevocationList = $.clientCertRevocationList;
        this.clientCrlEnabled = $.clientCrlEnabled;
        this.connectionString = $.connectionString;
        this.connectionStringPrefix = $.connectionStringPrefix;
        this.createTime = $.createTime;
        this.dbInstanceIpArrayAttribute = $.dbInstanceIpArrayAttribute;
        this.dbInstanceIpArrayName = $.dbInstanceIpArrayName;
        this.dbInstanceStorageType = $.dbInstanceStorageType;
        this.dbInstanceType = $.dbInstanceType;
        this.dbIsIgnoreCase = $.dbIsIgnoreCase;
        this.dbParamGroupId = $.dbParamGroupId;
        this.dbTimeZone = $.dbTimeZone;
        this.deletionProtection = $.deletionProtection;
        this.direction = $.direction;
        this.effectiveTime = $.effectiveTime;
        this.encryptionKey = $.encryptionKey;
        this.engine = $.engine;
        this.engineVersion = $.engineVersion;
        this.force = $.force;
        this.forceRestart = $.forceRestart;
        this.freshWhiteListReadins = $.freshWhiteListReadins;
        this.haConfig = $.haConfig;
        this.instanceChargeType = $.instanceChargeType;
        this.instanceName = $.instanceName;
        this.instanceStorage = $.instanceStorage;
        this.instanceType = $.instanceType;
        this.maintainTime = $.maintainTime;
        this.manualHaTime = $.manualHaTime;
        this.modifyMode = $.modifyMode;
        this.monitoringPeriod = $.monitoringPeriod;
        this.nodeId = $.nodeId;
        this.parameters = $.parameters;
        this.period = $.period;
        this.pgHbaConfs = $.pgHbaConfs;
        this.port = $.port;
        this.privateIpAddress = $.privateIpAddress;
        this.releasedKeepPolicy = $.releasedKeepPolicy;
        this.replicationAcl = $.replicationAcl;
        this.resourceGroupId = $.resourceGroupId;
        this.roleArn = $.roleArn;
        this.securityGroupId = $.securityGroupId;
        this.securityGroupIds = $.securityGroupIds;
        this.securityIpMode = $.securityIpMode;
        this.securityIpType = $.securityIpType;
        this.securityIps = $.securityIps;
        this.serverCert = $.serverCert;
        this.serverKey = $.serverKey;
        this.serverlessConfigs = $.serverlessConfigs;
        this.sqlCollectorConfigValue = $.sqlCollectorConfigValue;
        this.sqlCollectorStatus = $.sqlCollectorStatus;
        this.sslAction = $.sslAction;
        this.sslConnectionString = $.sslConnectionString;
        this.sslStatus = $.sslStatus;
        this.status = $.status;
        this.storageAutoScale = $.storageAutoScale;
        this.storageThreshold = $.storageThreshold;
        this.storageUpperBound = $.storageUpperBound;
        this.switchTime = $.switchTime;
        this.tags = $.tags;
        this.targetMinorVersion = $.targetMinorVersion;
        this.tcpConnectionType = $.tcpConnectionType;
        this.tdeStatus = $.tdeStatus;
        this.upgradeDbInstanceKernelVersion = $.upgradeDbInstanceKernelVersion;
        this.upgradeTime = $.upgradeTime;
        this.vpcId = $.vpcId;
        this.vswitchId = $.vswitchId;
        this.whitelistNetworkType = $.whitelistNetworkType;
        this.zoneId = $.zoneId;
        this.zoneIdSlaveA = $.zoneIdSlaveA;
    }

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

    public static final class Builder {
        private InstanceState $;

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

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

        /**
         * @param acl The method that is used to verify the identities of clients. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - cert
         * - perfer
         * - verify-ca
         * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
         * 
         * @return builder
         * 
         */
        public Builder acl(@Nullable Output acl) {
            $.acl = acl;
            return this;
        }

        /**
         * @param acl The method that is used to verify the identities of clients. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - cert
         * - perfer
         * - verify-ca
         * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
         * 
         * @return builder
         * 
         */
        public Builder acl(String acl) {
            return acl(Output.of(acl));
        }

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

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

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

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

        /**
         * @param autoUpgradeMinorVersion The upgrade method to use. Valid values:
         * - Auto: Instances are automatically upgraded to a higher minor version.
         * - Manual: Instances are forcibly upgraded to a higher minor version when the current version is unpublished.
         * 
         * See more [details and limitation](https://www.alibabacloud.com/help/doc-detail/123605.htm).
         * 
         * @return builder
         * 
         */
        public Builder autoUpgradeMinorVersion(@Nullable Output autoUpgradeMinorVersion) {
            $.autoUpgradeMinorVersion = autoUpgradeMinorVersion;
            return this;
        }

        /**
         * @param autoUpgradeMinorVersion The upgrade method to use. Valid values:
         * - Auto: Instances are automatically upgraded to a higher minor version.
         * - Manual: Instances are forcibly upgraded to a higher minor version when the current version is unpublished.
         * 
         * See more [details and limitation](https://www.alibabacloud.com/help/doc-detail/123605.htm).
         * 
         * @return builder
         * 
         */
        public Builder autoUpgradeMinorVersion(String autoUpgradeMinorVersion) {
            return autoUpgradeMinorVersion(Output.of(autoUpgradeMinorVersion));
        }

        /**
         * @param babelfishConfigs The configuration of an ApsaraDB RDS for PostgreSQL instance for which Babelfish is enabled. See `babelfish_config` below.
         * 
         * > **NOTE:** This parameter takes effect only when you create an ApsaraDB RDS for PostgreSQL instance. For more information, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
         * 
         * @return builder
         * 
         */
        public Builder babelfishConfigs(@Nullable Output> babelfishConfigs) {
            $.babelfishConfigs = babelfishConfigs;
            return this;
        }

        /**
         * @param babelfishConfigs The configuration of an ApsaraDB RDS for PostgreSQL instance for which Babelfish is enabled. See `babelfish_config` below.
         * 
         * > **NOTE:** This parameter takes effect only when you create an ApsaraDB RDS for PostgreSQL instance. For more information, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
         * 
         * @return builder
         * 
         */
        public Builder babelfishConfigs(List babelfishConfigs) {
            return babelfishConfigs(Output.of(babelfishConfigs));
        }

        /**
         * @param babelfishConfigs The configuration of an ApsaraDB RDS for PostgreSQL instance for which Babelfish is enabled. See `babelfish_config` below.
         * 
         * > **NOTE:** This parameter takes effect only when you create an ApsaraDB RDS for PostgreSQL instance. For more information, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
         * 
         * @return builder
         * 
         */
        public Builder babelfishConfigs(InstanceBabelfishConfigArgs... babelfishConfigs) {
            return babelfishConfigs(List.of(babelfishConfigs));
        }

        /**
         * @param babelfishPort The TDS port of the instance for which Babelfish is enabled.
         * 
         * > **NOTE:** This parameter applies only to ApsaraDB RDS for PostgreSQL instances. For more information about Babelfish for ApsaraDB RDS for PostgreSQL, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
         * 
         * @return builder
         * 
         */
        public Builder babelfishPort(@Nullable Output babelfishPort) {
            $.babelfishPort = babelfishPort;
            return this;
        }

        /**
         * @param babelfishPort The TDS port of the instance for which Babelfish is enabled.
         * 
         * > **NOTE:** This parameter applies only to ApsaraDB RDS for PostgreSQL instances. For more information about Babelfish for ApsaraDB RDS for PostgreSQL, see [Introduction to Babelfish](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/babelfish-for-pg).
         * 
         * @return builder
         * 
         */
        public Builder babelfishPort(String babelfishPort) {
            return babelfishPort(Output.of(babelfishPort));
        }

        /**
         * @param caType The type of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the SSLEnabled parameter to 1, the default value of this parameter is aliyun. **NOTE:** From version 1.231.0, `ca_type` start  support `MySQL` engine. Value range:
         * - aliyun: a cloud certificate
         * - custom: a custom certificate
         * 
         * @return builder
         * 
         */
        public Builder caType(@Nullable Output caType) {
            $.caType = caType;
            return this;
        }

        /**
         * @param caType The type of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the SSLEnabled parameter to 1, the default value of this parameter is aliyun. **NOTE:** From version 1.231.0, `ca_type` start  support `MySQL` engine. Value range:
         * - aliyun: a cloud certificate
         * - custom: a custom certificate
         * 
         * @return builder
         * 
         */
        public Builder caType(String caType) {
            return caType(Output.of(caType));
        }

        /**
         * @param category The RDS edition of the instance. If you want to create a serverless instance, you must use this value. Valid values:
         * * **Basic**: Basic Edition.
         * * **HighAvailability**: High-availability Edition.
         * * **AlwaysOn**: Cluster Edition.
         * * **Finance**: Enterprise Edition.
         * * **cluster**: MySQL Cluster Edition. (Available since 1.202.0)
         * * **serverless_basic**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.200.0)
         * * **serverless_standard**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.204.0)
         * * **serverless_ha**: RDS Serverless High-availability Edition for SQL Server. (Available since 1.204.0)
         * 
         * > **NOTE:** `zone_id_slave_a` and `zone_id_slave_b` can specify slave zone ids when creating the high-availability or enterprise edition instances. Meanwhile, `vswitch_id` needs to pass in the corresponding vswitch id to the slave zone by order (If the `vswitch_id` is not specified, the classic network version will be created). For example, `zone_id` = "zone-a" and `zone_id_slave_a` = "zone-c", `zone_id_slave_b` = "zone-b", then the `vswitch_id` must be "vsw-zone-a,vsw-zone-c,vsw-zone-b". Of course, you can also choose automatic allocation , for example, `zone_id` = "zone-a" and `zone_id_slave_a` = "Auto",`zone_id_slave_b` = "Auto", then the `vswitch_id` must be "vsw-zone-a,Auto,Auto". The list contains up to 2 slave zone ids , separated by commas.
         * 
         * @return builder
         * 
         */
        public Builder category(@Nullable Output category) {
            $.category = category;
            return this;
        }

        /**
         * @param category The RDS edition of the instance. If you want to create a serverless instance, you must use this value. Valid values:
         * * **Basic**: Basic Edition.
         * * **HighAvailability**: High-availability Edition.
         * * **AlwaysOn**: Cluster Edition.
         * * **Finance**: Enterprise Edition.
         * * **cluster**: MySQL Cluster Edition. (Available since 1.202.0)
         * * **serverless_basic**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.200.0)
         * * **serverless_standard**: RDS Serverless Basic Edition. This edition is available only for instances that run MySQL and PostgreSQL. (Available since 1.204.0)
         * * **serverless_ha**: RDS Serverless High-availability Edition for SQL Server. (Available since 1.204.0)
         * 
         * > **NOTE:** `zone_id_slave_a` and `zone_id_slave_b` can specify slave zone ids when creating the high-availability or enterprise edition instances. Meanwhile, `vswitch_id` needs to pass in the corresponding vswitch id to the slave zone by order (If the `vswitch_id` is not specified, the classic network version will be created). For example, `zone_id` = "zone-a" and `zone_id_slave_a` = "zone-c", `zone_id_slave_b` = "zone-b", then the `vswitch_id` must be "vsw-zone-a,vsw-zone-c,vsw-zone-b". Of course, you can also choose automatic allocation , for example, `zone_id` = "zone-a" and `zone_id_slave_a` = "Auto",`zone_id_slave_b` = "Auto", then the `vswitch_id` must be "vsw-zone-a,Auto,Auto". The list contains up to 2 slave zone ids , separated by commas.
         * 
         * @return builder
         * 
         */
        public Builder category(String category) {
            return category(Output.of(category));
        }

        /**
         * @param clientCaCert The public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCAEbabled parameter to 1, you must also specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder clientCaCert(@Nullable Output clientCaCert) {
            $.clientCaCert = clientCaCert;
            return this;
        }

        /**
         * @param clientCaCert The public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCAEbabled parameter to 1, you must also specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder clientCaCert(String clientCaCert) {
            return clientCaCert(Output.of(clientCaCert));
        }

        /**
         * @param clientCaEnabled Specifies whether to enable the public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. Valid values:
         * - 1: enables the public key
         * - 0: disables the public key
         * 
         * @return builder
         * 
         */
        public Builder clientCaEnabled(@Nullable Output clientCaEnabled) {
            $.clientCaEnabled = clientCaEnabled;
            return this;
        }

        /**
         * @param clientCaEnabled Specifies whether to enable the public key of the CA that issues client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. Valid values:
         * - 1: enables the public key
         * - 0: disables the public key
         * 
         * @return builder
         * 
         */
        public Builder clientCaEnabled(Integer clientCaEnabled) {
            return clientCaEnabled(Output.of(clientCaEnabled));
        }

        /**
         * @param clientCertRevocationList The CRL that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCrlEnabled parameter to 1, you must also specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder clientCertRevocationList(@Nullable Output clientCertRevocationList) {
            $.clientCertRevocationList = clientCertRevocationList;
            return this;
        }

        /**
         * @param clientCertRevocationList The CRL that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. If you set the ClientCrlEnabled parameter to 1, you must also specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder clientCertRevocationList(String clientCertRevocationList) {
            return clientCertRevocationList(Output.of(clientCertRevocationList));
        }

        /**
         * @param clientCrlEnabled Specifies whether to enable a certificate revocation list (CRL) that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - 1: enables the CRL
         * - 0: disables the CRL
         * 
         * @return builder
         * 
         */
        public Builder clientCrlEnabled(@Nullable Output clientCrlEnabled) {
            $.clientCrlEnabled = clientCrlEnabled;
            return this;
        }

        /**
         * @param clientCrlEnabled Specifies whether to enable a certificate revocation list (CRL) that contains revoked client certificates. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - 1: enables the CRL
         * - 0: disables the CRL
         * 
         * @return builder
         * 
         */
        public Builder clientCrlEnabled(Integer clientCrlEnabled) {
            return clientCrlEnabled(Output.of(clientCrlEnabled));
        }

        /**
         * @param connectionString RDS database connection string.
         * 
         * @return builder
         * 
         */
        public Builder connectionString(@Nullable Output connectionString) {
            $.connectionString = connectionString;
            return this;
        }

        /**
         * @param connectionString RDS database connection string.
         * 
         * @return builder
         * 
         */
        public Builder connectionString(String connectionString) {
            return connectionString(Output.of(connectionString));
        }

        /**
         * @param connectionStringPrefix The private connection string prefix. If you want to update public connection string prefix, please use resource alicloud.rds.Connection connection_prefix.
         * > **NOTE:** The prefix must be 8 to 64 characters in length and can contain letters, digits, and hyphens (-). It cannot contain Chinese characters and special characters ~!#%^&*=+\|{};:'",<>/?
         * 
         * @return builder
         * 
         */
        public Builder connectionStringPrefix(@Nullable Output connectionStringPrefix) {
            $.connectionStringPrefix = connectionStringPrefix;
            return this;
        }

        /**
         * @param connectionStringPrefix The private connection string prefix. If you want to update public connection string prefix, please use resource alicloud.rds.Connection connection_prefix.
         * > **NOTE:** The prefix must be 8 to 64 characters in length and can contain letters, digits, and hyphens (-). It cannot contain Chinese characters and special characters ~!#%^&*=+\|{};:'",<>/?
         * 
         * @return builder
         * 
         */
        public Builder connectionStringPrefix(String connectionStringPrefix) {
            return connectionStringPrefix(Output.of(connectionStringPrefix));
        }

        /**
         * @param createTime (Available since 1.204.1) The creation time of db instance.
         * 
         * @return builder
         * 
         */
        public Builder createTime(@Nullable Output createTime) {
            $.createTime = createTime;
            return this;
        }

        /**
         * @param createTime (Available since 1.204.1) The creation time of db instance.
         * 
         * @return builder
         * 
         */
        public Builder createTime(String createTime) {
            return createTime(Output.of(createTime));
        }

        /**
         * @param dbInstanceIpArrayAttribute The attribute of the IP address whitelist. By default, this parameter is empty.
         * 
         * > **NOTE:** The IP address whitelists that have the hidden attribute are not displayed in the ApsaraDB RDS console. These IP address whitelists are used to access Alibaba Cloud services, such as Data Transmission Service (DTS).
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceIpArrayAttribute(@Nullable Output dbInstanceIpArrayAttribute) {
            $.dbInstanceIpArrayAttribute = dbInstanceIpArrayAttribute;
            return this;
        }

        /**
         * @param dbInstanceIpArrayAttribute The attribute of the IP address whitelist. By default, this parameter is empty.
         * 
         * > **NOTE:** The IP address whitelists that have the hidden attribute are not displayed in the ApsaraDB RDS console. These IP address whitelists are used to access Alibaba Cloud services, such as Data Transmission Service (DTS).
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceIpArrayAttribute(String dbInstanceIpArrayAttribute) {
            return dbInstanceIpArrayAttribute(Output.of(dbInstanceIpArrayAttribute));
        }

        /**
         * @param dbInstanceIpArrayName The name of the IP address whitelist. Default value: Default.
         * 
         * > **NOTE:** A maximum of 200 IP address whitelists can be configured for each instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceIpArrayName(@Nullable Output dbInstanceIpArrayName) {
            $.dbInstanceIpArrayName = dbInstanceIpArrayName;
            return this;
        }

        /**
         * @param dbInstanceIpArrayName The name of the IP address whitelist. Default value: Default.
         * 
         * > **NOTE:** A maximum of 200 IP address whitelists can be configured for each instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceIpArrayName(String dbInstanceIpArrayName) {
            return dbInstanceIpArrayName(Output.of(dbInstanceIpArrayName));
        }

        /**
         * @param dbInstanceStorageType The storage type of the instance. Serverless instance, only `cloud_essd` can be selected. Valid values:
         * - local_ssd: specifies to use local SSDs. This value is recommended.
         * - cloud_ssd: specifies to use standard SSDs.
         * - cloud_essd: specifies to use enhanced SSDs (ESSDs).
         * - cloud_essd2: specifies to use enhanced SSDs (ESSDs).
         * - cloud_essd3: specifies to use enhanced SSDs (ESSDs).
         * - general_essd: general essd.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorageType(@Nullable Output dbInstanceStorageType) {
            $.dbInstanceStorageType = dbInstanceStorageType;
            return this;
        }

        /**
         * @param dbInstanceStorageType The storage type of the instance. Serverless instance, only `cloud_essd` can be selected. Valid values:
         * - local_ssd: specifies to use local SSDs. This value is recommended.
         * - cloud_ssd: specifies to use standard SSDs.
         * - cloud_essd: specifies to use enhanced SSDs (ESSDs).
         * - cloud_essd2: specifies to use enhanced SSDs (ESSDs).
         * - cloud_essd3: specifies to use enhanced SSDs (ESSDs).
         * - general_essd: general essd.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorageType(String dbInstanceStorageType) {
            return dbInstanceStorageType(Output.of(dbInstanceStorageType));
        }

        /**
         * @param dbInstanceType (Available since 1.197.0) The type of db instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceType(@Nullable Output dbInstanceType) {
            $.dbInstanceType = dbInstanceType;
            return this;
        }

        /**
         * @param dbInstanceType (Available since 1.197.0) The type of db instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceType(String dbInstanceType) {
            return dbInstanceType(Output.of(dbInstanceType));
        }

        /**
         * @param dbIsIgnoreCase Specifies whether table names on the instance are case-sensitive. Valid values: `true`, `false`.
         * 
         * @return builder
         * 
         */
        public Builder dbIsIgnoreCase(@Nullable Output dbIsIgnoreCase) {
            $.dbIsIgnoreCase = dbIsIgnoreCase;
            return this;
        }

        /**
         * @param dbIsIgnoreCase Specifies whether table names on the instance are case-sensitive. Valid values: `true`, `false`.
         * 
         * @return builder
         * 
         */
        public Builder dbIsIgnoreCase(Boolean dbIsIgnoreCase) {
            return dbIsIgnoreCase(Output.of(dbIsIgnoreCase));
        }

        /**
         * @param dbParamGroupId Parameter template ID. Only MySQL and PostgreSQL support this parameter. If this parameter is not specified, the default parameter template is used. You can also customize a parameter template and use it here.
         * 
         * @return builder
         * 
         */
        public Builder dbParamGroupId(@Nullable Output dbParamGroupId) {
            $.dbParamGroupId = dbParamGroupId;
            return this;
        }

        /**
         * @param dbParamGroupId Parameter template ID. Only MySQL and PostgreSQL support this parameter. If this parameter is not specified, the default parameter template is used. You can also customize a parameter template and use it here.
         * 
         * @return builder
         * 
         */
        public Builder dbParamGroupId(String dbParamGroupId) {
            return dbParamGroupId(Output.of(dbParamGroupId));
        }

        /**
         * @param dbTimeZone The time zone of the instance. This parameter takes effect only when you set the `Engine` parameter to MySQL or PostgreSQL.
         * - If you set the `Engine` parameter to MySQL.
         * - This time zone of the instance is in UTC. Valid values: -12:59 to +13:00.
         * - You can specify this parameter when the instance is equipped with local SSDs. For example, you can specify the time zone to Asia/Hong_Kong. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
         * - If you set the `Engine` parameter to PostgreSQL.
         * - This time zone of the instance is not in UTC. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
         * - You can specify this parameter only when the instance is equipped with standard SSDs or ESSDs.
         * 
         * > **NOTE:** You can specify the time zone when you create a primary instance. You cannot specify the time zone when you create a read-only instance. Read-only instances inherit the time zone of their primary instance. If you do not specify this parameter, the system assigns the default time zone of the region where the instance resides.
         * 
         * @return builder
         * 
         */
        public Builder dbTimeZone(@Nullable Output dbTimeZone) {
            $.dbTimeZone = dbTimeZone;
            return this;
        }

        /**
         * @param dbTimeZone The time zone of the instance. This parameter takes effect only when you set the `Engine` parameter to MySQL or PostgreSQL.
         * - If you set the `Engine` parameter to MySQL.
         * - This time zone of the instance is in UTC. Valid values: -12:59 to +13:00.
         * - You can specify this parameter when the instance is equipped with local SSDs. For example, you can specify the time zone to Asia/Hong_Kong. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
         * - If you set the `Engine` parameter to PostgreSQL.
         * - This time zone of the instance is not in UTC. For more information about time zones, see [Time zones](https://www.alibabacloud.com/help/doc-detail/297356.htm).
         * - You can specify this parameter only when the instance is equipped with standard SSDs or ESSDs.
         * 
         * > **NOTE:** You can specify the time zone when you create a primary instance. You cannot specify the time zone when you create a read-only instance. Read-only instances inherit the time zone of their primary instance. If you do not specify this parameter, the system assigns the default time zone of the region where the instance resides.
         * 
         * @return builder
         * 
         */
        public Builder dbTimeZone(String dbTimeZone) {
            return dbTimeZone(Output.of(dbTimeZone));
        }

        /**
         * @param deletionProtection The switch of delete protection. Valid values:
         * - true: delete protect.
         * - false: no delete protect.
         * 
         * > **NOTE:** `deletion_protection` is valid only when attribute `instance_charge_type` is set to `Postpaid` or `Serverless`, supported engine type: `MySQL`, `PostgreSQL`, `MariaDB`, `MSSQL`.
         * 
         * @return builder
         * 
         */
        public Builder deletionProtection(@Nullable Output deletionProtection) {
            $.deletionProtection = deletionProtection;
            return this;
        }

        /**
         * @param deletionProtection The switch of delete protection. Valid values:
         * - true: delete protect.
         * - false: no delete protect.
         * 
         * > **NOTE:** `deletion_protection` is valid only when attribute `instance_charge_type` is set to `Postpaid` or `Serverless`, supported engine type: `MySQL`, `PostgreSQL`, `MariaDB`, `MSSQL`.
         * 
         * @return builder
         * 
         */
        public Builder deletionProtection(Boolean deletionProtection) {
            return deletionProtection(Output.of(deletionProtection));
        }

        /**
         * @param direction The instance configuration type. Valid values: ["Up", "Down", "TempUpgrade", "Serverless"]
         * 
         * @return builder
         * 
         */
        public Builder direction(@Nullable Output direction) {
            $.direction = direction;
            return this;
        }

        /**
         * @param direction The instance configuration type. Valid values: ["Up", "Down", "TempUpgrade", "Serverless"]
         * 
         * @return builder
         * 
         */
        public Builder direction(String direction) {
            return direction(Output.of(direction));
        }

        /**
         * @param effectiveTime The method to update the engine version and change.  Default value: Immediate. Valid values:
         * - Immediate: The change immediately takes effect.
         * - MaintainTime: The change takes effect during the specified maintenance window. For more information, see ModifyDBInstanceMaintainTime.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(@Nullable Output effectiveTime) {
            $.effectiveTime = effectiveTime;
            return this;
        }

        /**
         * @param effectiveTime The method to update the engine version and change.  Default value: Immediate. Valid values:
         * - Immediate: The change immediately takes effect.
         * - MaintainTime: The change takes effect during the specified maintenance window. For more information, see ModifyDBInstanceMaintainTime.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(String effectiveTime) {
            return effectiveTime(Output.of(effectiveTime));
        }

        /**
         * @param encryptionKey The key id of the KMS. Used for encrypting a disk if not null. Only for PostgreSQL, MySQL and SQLServer.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(@Nullable Output encryptionKey) {
            $.encryptionKey = encryptionKey;
            return this;
        }

        /**
         * @param encryptionKey The key id of the KMS. Used for encrypting a disk if not null. Only for PostgreSQL, MySQL and SQLServer.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(String encryptionKey) {
            return encryptionKey(Output.of(encryptionKey));
        }

        /**
         * @param engine Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
         * 
         * > **NOTE:** When the 'engine_version' changes, it can be used as the target database version for the large version upgrade of RDS for MySQL instance.
         * 
         * @return builder
         * 
         */
        public Builder engine(@Nullable Output engine) {
            $.engine = engine;
            return this;
        }

        /**
         * @param engine Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
         * 
         * > **NOTE:** When the 'engine_version' changes, it can be used as the target database version for the large version upgrade of RDS for MySQL instance.
         * 
         * @return builder
         * 
         */
        public Builder engine(String engine) {
            return engine(Output.of(engine));
        }

        /**
         * @param engineVersion Database version. Value options can refer to the latest docs [CreateDBInstance](https://www.alibabacloud.com/help/doc-detail/26228.htm) `EngineVersion`.
         * - MySQL: [ 5.5、5.6、5.7、8.0 ]
         * - SQLServer: [ 2008r2、08r2_ent_ha、2012、2012_ent_ha、2012_std_ha、2012_web、2014_std_ha、2016_ent_ha、2016_std_ha、2016_web、2017_std_ha、2017_ent、2019_std_ha、2019_ent ]
         * - PostgreSQL: [ 10.0、11.0、12.0、13.0、14.0、15.0 ]
         * - MariaDB: [ 10.3 ]
         * - Serverless
         * > - MySQL: [ 5.7、8.0 ]
         * > - SQLServer: [ 2016_std_sl、2017_std_sl、2019_std_sl ]
         * > - PostgreSQL: [ 14.0 ]
         * > - MariaDB does not support creating serverless instances.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(@Nullable Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion Database version. Value options can refer to the latest docs [CreateDBInstance](https://www.alibabacloud.com/help/doc-detail/26228.htm) `EngineVersion`.
         * - MySQL: [ 5.5、5.6、5.7、8.0 ]
         * - SQLServer: [ 2008r2、08r2_ent_ha、2012、2012_ent_ha、2012_std_ha、2012_web、2014_std_ha、2016_ent_ha、2016_std_ha、2016_web、2017_std_ha、2017_ent、2019_std_ha、2019_ent ]
         * - PostgreSQL: [ 10.0、11.0、12.0、13.0、14.0、15.0 ]
         * - MariaDB: [ 10.3 ]
         * - Serverless
         * > - MySQL: [ 5.7、8.0 ]
         * > - SQLServer: [ 2016_std_sl、2017_std_sl、2019_std_sl ]
         * > - PostgreSQL: [ 14.0 ]
         * > - MariaDB does not support creating serverless instances.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @param force Specifies whether to enable forcible switching. Valid values:
         * - Yes
         * - No
         * 
         * @return builder
         * 
         */
        public Builder force(@Nullable Output force) {
            $.force = force;
            return this;
        }

        /**
         * @param force Specifies whether to enable forcible switching. Valid values:
         * - Yes
         * - No
         * 
         * @return builder
         * 
         */
        public Builder force(String force) {
            return force(Output.of(force));
        }

        /**
         * @param forceRestart Set it to true to make some parameter efficient when modifying them. Default to false.
         * 
         * @return builder
         * 
         */
        public Builder forceRestart(@Nullable Output forceRestart) {
            $.forceRestart = forceRestart;
            return this;
        }

        /**
         * @param forceRestart Set it to true to make some parameter efficient when modifying them. Default to false.
         * 
         * @return builder
         * 
         */
        public Builder forceRestart(Boolean forceRestart) {
            return forceRestart(Output.of(forceRestart));
        }

        /**
         * @param freshWhiteListReadins The read-only instances to which you want to synchronize the IP address whitelist.
         * * If the instance is attached with a read-only instance, you can use this parameter to synchronize the IP address whitelist to the read-only instance. If the instance is attached with multiple read-only instances, the read-only instances must be separated by commas (,).
         * * If the instance is not attached with a read-only instance, this parameter is empty.
         * 
         * @return builder
         * 
         */
        public Builder freshWhiteListReadins(@Nullable Output freshWhiteListReadins) {
            $.freshWhiteListReadins = freshWhiteListReadins;
            return this;
        }

        /**
         * @param freshWhiteListReadins The read-only instances to which you want to synchronize the IP address whitelist.
         * * If the instance is attached with a read-only instance, you can use this parameter to synchronize the IP address whitelist to the read-only instance. If the instance is attached with multiple read-only instances, the read-only instances must be separated by commas (,).
         * * If the instance is not attached with a read-only instance, this parameter is empty.
         * 
         * @return builder
         * 
         */
        public Builder freshWhiteListReadins(String freshWhiteListReadins) {
            return freshWhiteListReadins(Output.of(freshWhiteListReadins));
        }

        /**
         * @param haConfig The primary/secondary switchover mode of the instance. Default value: Auto. Valid values:
         * - Auto: The system automatically switches over services from the primary to secondary instances in the event of a fault.
         * - Manual: You must manually switch over services from the primary to secondary instances in the event of a fault.
         * 
         * > **NOTE:** If you set this parameter to Manual, you must specify the ManualHATime parameter.
         * 
         * @return builder
         * 
         */
        public Builder haConfig(@Nullable Output haConfig) {
            $.haConfig = haConfig;
            return this;
        }

        /**
         * @param haConfig The primary/secondary switchover mode of the instance. Default value: Auto. Valid values:
         * - Auto: The system automatically switches over services from the primary to secondary instances in the event of a fault.
         * - Manual: You must manually switch over services from the primary to secondary instances in the event of a fault.
         * 
         * > **NOTE:** If you set this parameter to Manual, you must specify the ManualHATime parameter.
         * 
         * @return builder
         * 
         */
        public Builder haConfig(String haConfig) {
            return haConfig(Output.of(haConfig));
        }

        /**
         * @param instanceChargeType Valid values are `Prepaid`, `Postpaid`, `Serverless`, Default to `Postpaid`. Currently, the resource only supports PostPaid to PrePaid. For more information, see [Overview](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/what-is-serverless?spm=a2c63.p38356.0.0.772a28cfTAGqIv).
         * 
         * @return builder
         * 
         */
        public Builder instanceChargeType(@Nullable Output instanceChargeType) {
            $.instanceChargeType = instanceChargeType;
            return this;
        }

        /**
         * @param instanceChargeType Valid values are `Prepaid`, `Postpaid`, `Serverless`, Default to `Postpaid`. Currently, the resource only supports PostPaid to PrePaid. For more information, see [Overview](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/what-is-serverless?spm=a2c63.p38356.0.0.772a28cfTAGqIv).
         * 
         * @return builder
         * 
         */
        public Builder instanceChargeType(String instanceChargeType) {
            return instanceChargeType(Output.of(instanceChargeType));
        }

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

        /**
         * @param instanceName The name of DB instance. It a string of 2 to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder instanceName(String instanceName) {
            return instanceName(Output.of(instanceName));
        }

        /**
         * @param instanceStorage User-defined DB instance storage space. Value range:
         * - [5, 2000] for MySQL/PostgreSQL HA dual node edition;
         * - [20,1000] for MySQL 5.7 basic single node edition;
         * - [10, 2000] for SQL Server 2008R2;
         * - [20,2000] for SQL Server 2012 basic single node edition
         *   Increase progressively at a rate of 5 GB. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
         *   Note: There is extra 5 GB storage for SQL Server Instance, and it is not in specified `instance_storage`.
         * 
         * @return builder
         * 
         */
        public Builder instanceStorage(@Nullable Output instanceStorage) {
            $.instanceStorage = instanceStorage;
            return this;
        }

        /**
         * @param instanceStorage User-defined DB instance storage space. Value range:
         * - [5, 2000] for MySQL/PostgreSQL HA dual node edition;
         * - [20,1000] for MySQL 5.7 basic single node edition;
         * - [10, 2000] for SQL Server 2008R2;
         * - [20,2000] for SQL Server 2012 basic single node edition
         *   Increase progressively at a rate of 5 GB. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
         *   Note: There is extra 5 GB storage for SQL Server Instance, and it is not in specified `instance_storage`.
         * 
         * @return builder
         * 
         */
        public Builder instanceStorage(Integer instanceStorage) {
            return instanceStorage(Output.of(instanceStorage));
        }

        /**
         * @param instanceType DB Instance type. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
         * - To create a serverless instance, please pass the following values:
         * - MySQL basic: mysql.n2.serverless.1c
         * - MySQL high availability: mysql.n2.serverless.2c
         * - SQLServer high availability: mssql.mem2.serverless.s2
         * - PostgreSQL basic: pg.n2.serverless.1c
         * 
         * > **NOTE:** When `storage_auto_scale="Enable"`, do not perform `instance_storage` check. when `storage_auto_scale="Disable"`, if the instance itself `instance_storage`has changed. You need to manually revise the `instance_storage` in the template value. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
         * 
         * @return builder
         * 
         */
        public Builder instanceType(@Nullable Output instanceType) {
            $.instanceType = instanceType;
            return this;
        }

        /**
         * @param instanceType DB Instance type. For details, see [Instance type table](https://www.alibabacloud.com/help/doc-detail/26312.htm).
         * - To create a serverless instance, please pass the following values:
         * - MySQL basic: mysql.n2.serverless.1c
         * - MySQL high availability: mysql.n2.serverless.2c
         * - SQLServer high availability: mssql.mem2.serverless.s2
         * - PostgreSQL basic: pg.n2.serverless.1c
         * 
         * > **NOTE:** When `storage_auto_scale="Enable"`, do not perform `instance_storage` check. when `storage_auto_scale="Disable"`, if the instance itself `instance_storage`has changed. You need to manually revise the `instance_storage` in the template value. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
         * 
         * @return builder
         * 
         */
        public Builder instanceType(String instanceType) {
            return instanceType(Output.of(instanceType));
        }

        /**
         * @param maintainTime Maintainable time period format of the instance: HH:MMZ-HH:MMZ (UTC time)
         * 
         * @return builder
         * 
         */
        public Builder maintainTime(@Nullable Output maintainTime) {
            $.maintainTime = maintainTime;
            return this;
        }

        /**
         * @param maintainTime Maintainable time period format of the instance: HH:MMZ-HH:MMZ (UTC time)
         * 
         * @return builder
         * 
         */
        public Builder maintainTime(String maintainTime) {
            return maintainTime(Output.of(maintainTime));
        }

        /**
         * @param manualHaTime The time after when you want to enable automatic primary/secondary switchover. At most, you can set this parameter to 23:59:59 seven days later. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * > **NOTE:** This parameter only takes effect when the HAConfig parameter is set to Manual.
         * 
         * @return builder
         * 
         */
        public Builder manualHaTime(@Nullable Output manualHaTime) {
            $.manualHaTime = manualHaTime;
            return this;
        }

        /**
         * @param manualHaTime The time after when you want to enable automatic primary/secondary switchover. At most, you can set this parameter to 23:59:59 seven days later. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * > **NOTE:** This parameter only takes effect when the HAConfig parameter is set to Manual.
         * 
         * @return builder
         * 
         */
        public Builder manualHaTime(String manualHaTime) {
            return manualHaTime(Output.of(manualHaTime));
        }

        /**
         * @param modifyMode The method that is used to modify the IP address whitelist. Default value: Cover. Valid values:
         * - Cover: Use the value of the SecurityIps parameter to overwrite the existing entries in the IP address whitelist.
         * - Append: Add the IP addresses and CIDR blocks that are specified in the SecurityIps parameter to the IP address whitelist.
         * - Delete: Delete IP addresses and CIDR blocks that are specified in the SecurityIps parameter from the IP address whitelist. You must retain at least one IP address or CIDR block.
         * 
         * @return builder
         * 
         */
        public Builder modifyMode(@Nullable Output modifyMode) {
            $.modifyMode = modifyMode;
            return this;
        }

        /**
         * @param modifyMode The method that is used to modify the IP address whitelist. Default value: Cover. Valid values:
         * - Cover: Use the value of the SecurityIps parameter to overwrite the existing entries in the IP address whitelist.
         * - Append: Add the IP addresses and CIDR blocks that are specified in the SecurityIps parameter to the IP address whitelist.
         * - Delete: Delete IP addresses and CIDR blocks that are specified in the SecurityIps parameter from the IP address whitelist. You must retain at least one IP address or CIDR block.
         * 
         * @return builder
         * 
         */
        public Builder modifyMode(String modifyMode) {
            return modifyMode(Output.of(modifyMode));
        }

        /**
         * @param monitoringPeriod The monitoring frequency in seconds. Valid values are 5, 10, 60, 300. Defaults to 300.
         * 
         * @return builder
         * 
         */
        public Builder monitoringPeriod(@Nullable Output monitoringPeriod) {
            $.monitoringPeriod = monitoringPeriod;
            return this;
        }

        /**
         * @param monitoringPeriod The monitoring frequency in seconds. Valid values are 5, 10, 60, 300. Defaults to 300.
         * 
         * @return builder
         * 
         */
        public Builder monitoringPeriod(Integer monitoringPeriod) {
            return monitoringPeriod(Output.of(monitoringPeriod));
        }

        /**
         * @param nodeId The globally unique identifier (GUID) of the secondary instance. You can call the DescribeDBInstanceHAConfig operation to query the GUID of the secondary instance.
         * 
         * @return builder
         * 
         */
        public Builder nodeId(@Nullable Output nodeId) {
            $.nodeId = nodeId;
            return this;
        }

        /**
         * @param nodeId The globally unique identifier (GUID) of the secondary instance. You can call the DescribeDBInstanceHAConfig operation to query the GUID of the secondary instance.
         * 
         * @return builder
         * 
         */
        public Builder nodeId(String nodeId) {
            return nodeId(Output.of(nodeId));
        }

        /**
         * @param parameters Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm) . See `parameters` below.
         * 
         * @return builder
         * 
         */
        public Builder parameters(@Nullable Output> parameters) {
            $.parameters = parameters;
            return this;
        }

        /**
         * @param parameters Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm) . See `parameters` below.
         * 
         * @return builder
         * 
         */
        public Builder parameters(List parameters) {
            return parameters(Output.of(parameters));
        }

        /**
         * @param parameters Set of parameters needs to be set after DB instance was launched. Available parameters can refer to the latest docs [View database parameter templates](https://www.alibabacloud.com/help/doc-detail/26284.htm) . See `parameters` below.
         * 
         * @return builder
         * 
         */
        public Builder parameters(InstanceParameterArgs... parameters) {
            return parameters(List.of(parameters));
        }

        /**
         * @param period The duration that you will buy DB instance (in month). It is valid when instance_charge_type is `PrePaid`. Valid values: [1~9], 12, 24, 36.
         * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
         * 
         * @return builder
         * 
         */
        public Builder period(@Nullable Output period) {
            $.period = period;
            return this;
        }

        /**
         * @param period The duration that you will buy DB instance (in month). It is valid when instance_charge_type is `PrePaid`. Valid values: [1~9], 12, 24, 36.
         * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
         * 
         * @return builder
         * 
         */
        public Builder period(Integer period) {
            return period(Output.of(period));
        }

        /**
         * @param pgHbaConfs The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) . See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(@Nullable Output> pgHbaConfs) {
            $.pgHbaConfs = pgHbaConfs;
            return this;
        }

        /**
         * @param pgHbaConfs The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) . See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(List pgHbaConfs) {
            return pgHbaConfs(Output.of(pgHbaConfs));
        }

        /**
         * @param pgHbaConfs The configuration of [AD domain](https://www.alibabacloud.com/help/en/doc-detail/349288.htm) . See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(InstancePgHbaConfArgs... pgHbaConfs) {
            return pgHbaConfs(List.of(pgHbaConfs));
        }

        /**
         * @param port The private port of the database service. If you want to update public port, please use resource alicloud.rds.Connection port.
         * 
         * @return builder
         * 
         */
        public Builder port(@Nullable Output port) {
            $.port = port;
            return this;
        }

        /**
         * @param port The private port of the database service. If you want to update public port, please use resource alicloud.rds.Connection port.
         * 
         * @return builder
         * 
         */
        public Builder port(String port) {
            return port(Output.of(port));
        }

        /**
         * @param privateIpAddress The private IP address of the instance. The private IP address must be within the Classless Inter-Domain Routing (CIDR) block of the vSwitch that is specified by the VSwitchId parameter.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddress(@Nullable Output privateIpAddress) {
            $.privateIpAddress = privateIpAddress;
            return this;
        }

        /**
         * @param privateIpAddress The private IP address of the instance. The private IP address must be within the Classless Inter-Domain Routing (CIDR) block of the vSwitch that is specified by the VSwitchId parameter.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddress(String privateIpAddress) {
            return privateIpAddress(Output.of(privateIpAddress));
        }

        /**
         * @param releasedKeepPolicy The policy based on which ApsaraDB RDS retains archived backup files after the instance is released. Valid values:
         * - None: No archived backup files are retained.
         * - Lastest: Only the last archived backup file is retained.
         * - All: All the archived backup files are retained.
         * 
         * > **NOTE:** This parameter is supported only when the instance runs the MySQL database engine.
         * 
         * @return builder
         * 
         */
        public Builder releasedKeepPolicy(@Nullable Output releasedKeepPolicy) {
            $.releasedKeepPolicy = releasedKeepPolicy;
            return this;
        }

        /**
         * @param releasedKeepPolicy The policy based on which ApsaraDB RDS retains archived backup files after the instance is released. Valid values:
         * - None: No archived backup files are retained.
         * - Lastest: Only the last archived backup file is retained.
         * - All: All the archived backup files are retained.
         * 
         * > **NOTE:** This parameter is supported only when the instance runs the MySQL database engine.
         * 
         * @return builder
         * 
         */
        public Builder releasedKeepPolicy(String releasedKeepPolicy) {
            return releasedKeepPolicy(Output.of(releasedKeepPolicy));
        }

        /**
         * @param replicationAcl The method that is used to verify the replication permission. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - cert
         * - perfer
         * - verify-ca
         * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
         * 
         * @return builder
         * 
         */
        public Builder replicationAcl(@Nullable Output replicationAcl) {
            $.replicationAcl = replicationAcl;
            return this;
        }

        /**
         * @param replicationAcl The method that is used to verify the replication permission. This parameter is supported only when the instance runs PostgreSQL with standard or enhanced SSDs. In addition, this parameter is available only when the public key of the CA that issues client certificates is enabled. Valid values:
         * - cert
         * - perfer
         * - verify-ca
         * - verify-full (supported only when the instance runs PostgreSQL 12 or later)
         * 
         * @return builder
         * 
         */
        public Builder replicationAcl(String replicationAcl) {
            return replicationAcl(Output.of(replicationAcl));
        }

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

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

        /**
         * @param roleArn The Alibaba Cloud Resource Name (ARN) of the RAM role.
         * 
         * > **NOTE:**  This parameter is not required when you create an instance that runs MySQL, PostgreSQL, or SQL Server. You need to only specify the RoleARN parameter to create an instance that has cloud disk encryption enabled by using the obtained key ID.
         * You can configure RAM authorization to require a RAM user to enable cloud disk encryption when the RAM user is used to create an instance. If cloud disk encryption is disabled during the instance creation, the creation operation fails. To complete the configuration, you can attach the following policy to the RAM user: {"Version":"1","Statement":[{"Effect":"Deny","Action":"rds:CreateDBInstance","Resource":"*","Condition":{"StringEquals":{"rds:DiskEncryptionRequired":"false"}}}]}
         * 
         * @return builder
         * 
         */
        public Builder roleArn(@Nullable Output roleArn) {
            $.roleArn = roleArn;
            return this;
        }

        /**
         * @param roleArn The Alibaba Cloud Resource Name (ARN) of the RAM role.
         * 
         * > **NOTE:**  This parameter is not required when you create an instance that runs MySQL, PostgreSQL, or SQL Server. You need to only specify the RoleARN parameter to create an instance that has cloud disk encryption enabled by using the obtained key ID.
         * You can configure RAM authorization to require a RAM user to enable cloud disk encryption when the RAM user is used to create an instance. If cloud disk encryption is disabled during the instance creation, the creation operation fails. To complete the configuration, you can attach the following policy to the RAM user: {"Version":"1","Statement":[{"Effect":"Deny","Action":"rds:CreateDBInstance","Resource":"*","Condition":{"StringEquals":{"rds:DiskEncryptionRequired":"false"}}}]}
         * 
         * @return builder
         * 
         */
        public Builder roleArn(String roleArn) {
            return roleArn(Output.of(roleArn));
        }

        /**
         * @param securityGroupId It has been deprecated from 1.69.0 and use `security_group_ids` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead.
         * 
         */
        @Deprecated /* Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead. */
        public Builder securityGroupId(@Nullable Output securityGroupId) {
            $.securityGroupId = securityGroupId;
            return this;
        }

        /**
         * @param securityGroupId It has been deprecated from 1.69.0 and use `security_group_ids` instead.
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead.
         * 
         */
        @Deprecated /* Attribute `security_group_id` has been deprecated from 1.69.0 and use `security_group_ids` instead. */
        public Builder securityGroupId(String securityGroupId) {
            return securityGroupId(Output.of(securityGroupId));
        }

        /**
         * @param securityGroupIds , Available since 1.69.0) The list IDs to join ECS Security Group. At most supports three security groups.
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(@Nullable Output> securityGroupIds) {
            $.securityGroupIds = securityGroupIds;
            return this;
        }

        /**
         * @param securityGroupIds , Available since 1.69.0) The list IDs to join ECS Security Group. At most supports three security groups.
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(List securityGroupIds) {
            return securityGroupIds(Output.of(securityGroupIds));
        }

        /**
         * @param securityGroupIds , Available since 1.69.0) The list IDs to join ECS Security Group. At most supports three security groups.
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(String... securityGroupIds) {
            return securityGroupIds(List.of(securityGroupIds));
        }

        /**
         * @param securityIpMode Valid values are `normal`, `safety`, Default to `normal`. support `safety` switch to high security access mode.
         * 
         * @return builder
         * 
         */
        public Builder securityIpMode(@Nullable Output securityIpMode) {
            $.securityIpMode = securityIpMode;
            return this;
        }

        /**
         * @param securityIpMode Valid values are `normal`, `safety`, Default to `normal`. support `safety` switch to high security access mode.
         * 
         * @return builder
         * 
         */
        public Builder securityIpMode(String securityIpMode) {
            return securityIpMode(Output.of(securityIpMode));
        }

        /**
         * @param securityIpType The type of IP address in the IP address whitelist.
         * 
         * @return builder
         * 
         */
        public Builder securityIpType(@Nullable Output securityIpType) {
            $.securityIpType = securityIpType;
            return this;
        }

        /**
         * @param securityIpType The type of IP address in the IP address whitelist.
         * 
         * @return builder
         * 
         */
        public Builder securityIpType(String securityIpType) {
            return securityIpType(Output.of(securityIpType));
        }

        /**
         * @param securityIps List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is [1,32]).
         * 
         * @return builder
         * 
         */
        public Builder securityIps(@Nullable Output> securityIps) {
            $.securityIps = securityIps;
            return this;
        }

        /**
         * @param securityIps List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is [1,32]).
         * 
         * @return builder
         * 
         */
        public Builder securityIps(List securityIps) {
            return securityIps(Output.of(securityIps));
        }

        /**
         * @param securityIps List of IP addresses allowed to access all databases of an instance. The list contains up to 1,000 IP addresses, separated by commas. Supported formats include 0.0.0.0/0, 10.23.12.24 (IP), and 10.23.12.24/24 (Classless Inter-Domain Routing (CIDR) mode. /24 represents the length of the prefix in an IP address. The range of the prefix length is [1,32]).
         * 
         * @return builder
         * 
         */
        public Builder securityIps(String... securityIps) {
            return securityIps(List.of(securityIps));
        }

        /**
         * @param serverCert The content of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_cert` start  support `MySQL` engine.
         * 
         * @return builder
         * 
         */
        public Builder serverCert(@Nullable Output serverCert) {
            $.serverCert = serverCert;
            return this;
        }

        /**
         * @param serverCert The content of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_cert` start  support `MySQL` engine.
         * 
         * @return builder
         * 
         */
        public Builder serverCert(String serverCert) {
            return serverCert(Output.of(serverCert));
        }

        /**
         * @param serverKey The private key of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_key` start support `MySQL` engine.
         * 
         * @return builder
         * 
         */
        public Builder serverKey(@Nullable Output serverKey) {
            $.serverKey = serverKey;
            return this;
        }

        /**
         * @param serverKey The private key of the server certificate. This parameter is supported only when the instance runs PostgreSQL or MySQL with standard or enhanced SSDs. If you set the CAType parameter to custom, you must also specify this parameter. **NOTE:** From version 1.231.0, `server_key` start support `MySQL` engine.
         * 
         * @return builder
         * 
         */
        public Builder serverKey(String serverKey) {
            return serverKey(Output.of(serverKey));
        }

        /**
         * @param serverlessConfigs The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for Serverless instance. See `serverless_config` below.
         * 
         * @return builder
         * 
         */
        public Builder serverlessConfigs(@Nullable Output> serverlessConfigs) {
            $.serverlessConfigs = serverlessConfigs;
            return this;
        }

        /**
         * @param serverlessConfigs The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for Serverless instance. See `serverless_config` below.
         * 
         * @return builder
         * 
         */
        public Builder serverlessConfigs(List serverlessConfigs) {
            return serverlessConfigs(Output.of(serverlessConfigs));
        }

        /**
         * @param serverlessConfigs The settings of the serverless instance. This parameter is required when you create a serverless instance. This parameter takes effect only when you create an ApsaraDB RDS for Serverless instance. See `serverless_config` below.
         * 
         * @return builder
         * 
         */
        public Builder serverlessConfigs(InstanceServerlessConfigArgs... serverlessConfigs) {
            return serverlessConfigs(List.of(serverlessConfigs));
        }

        /**
         * @param sqlCollectorConfigValue The sql collector keep time of the instance. Valid values are `30`, `180`, `365`, `1095`, `1825`, Default to `30`.
         * 
         * @return builder
         * 
         */
        public Builder sqlCollectorConfigValue(@Nullable Output sqlCollectorConfigValue) {
            $.sqlCollectorConfigValue = sqlCollectorConfigValue;
            return this;
        }

        /**
         * @param sqlCollectorConfigValue The sql collector keep time of the instance. Valid values are `30`, `180`, `365`, `1095`, `1825`, Default to `30`.
         * 
         * @return builder
         * 
         */
        public Builder sqlCollectorConfigValue(Integer sqlCollectorConfigValue) {
            return sqlCollectorConfigValue(Output.of(sqlCollectorConfigValue));
        }

        /**
         * @param sqlCollectorStatus The sql collector status of the instance. Valid values are `Enabled`, `Disabled`, Default to `Disabled`.
         * 
         * @return builder
         * 
         */
        public Builder sqlCollectorStatus(@Nullable Output sqlCollectorStatus) {
            $.sqlCollectorStatus = sqlCollectorStatus;
            return this;
        }

        /**
         * @param sqlCollectorStatus The sql collector status of the instance. Valid values are `Enabled`, `Disabled`, Default to `Disabled`.
         * 
         * @return builder
         * 
         */
        public Builder sqlCollectorStatus(String sqlCollectorStatus) {
            return sqlCollectorStatus(Output.of(sqlCollectorStatus));
        }

        /**
         * @param sslAction Actions performed on SSL functions. Valid values:
         * `Open`: turn on SSL encryption;
         * `Close`: turn off SSL encryption;
         * `Update`: update SSL certificate.
         * See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26254.htm).
         * 
         * > **NOTE:** The attribute `ssl_action` will be ignored when setting `instance_charge_type = "Serverless"` for SQLServer, PostgreSQL or MariaDB.
         * 
         * @return builder
         * 
         */
        public Builder sslAction(@Nullable Output sslAction) {
            $.sslAction = sslAction;
            return this;
        }

        /**
         * @param sslAction Actions performed on SSL functions. Valid values:
         * `Open`: turn on SSL encryption;
         * `Close`: turn off SSL encryption;
         * `Update`: update SSL certificate.
         * See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26254.htm).
         * 
         * > **NOTE:** The attribute `ssl_action` will be ignored when setting `instance_charge_type = "Serverless"` for SQLServer, PostgreSQL or MariaDB.
         * 
         * @return builder
         * 
         */
        public Builder sslAction(String sslAction) {
            return sslAction(Output.of(sslAction));
        }

        /**
         * @param sslConnectionString The internal or public endpoint for which the server certificate needs to be created or updated.
         * 
         * @return builder
         * 
         */
        public Builder sslConnectionString(@Nullable Output sslConnectionString) {
            $.sslConnectionString = sslConnectionString;
            return this;
        }

        /**
         * @param sslConnectionString The internal or public endpoint for which the server certificate needs to be created or updated.
         * 
         * @return builder
         * 
         */
        public Builder sslConnectionString(String sslConnectionString) {
            return sslConnectionString(Output.of(sslConnectionString));
        }

        /**
         * @param sslStatus Status of the SSL feature. `Yes`: SSL is turned on; `No`: SSL is turned off.
         * 
         * @return builder
         * 
         */
        public Builder sslStatus(@Nullable Output sslStatus) {
            $.sslStatus = sslStatus;
            return this;
        }

        /**
         * @param sslStatus Status of the SSL feature. `Yes`: SSL is turned on; `No`: SSL is turned off.
         * 
         * @return builder
         * 
         */
        public Builder sslStatus(String sslStatus) {
            return sslStatus(Output.of(sslStatus));
        }

        /**
         * @param status (Available since 1.204.1) The status of db instance.
         * 
         * @return builder
         * 
         */
        public Builder status(@Nullable Output status) {
            $.status = status;
            return this;
        }

        /**
         * @param status (Available since 1.204.1) The status of db instance.
         * 
         * @return builder
         * 
         */
        public Builder status(String status) {
            return status(Output.of(status));
        }

        /**
         * @param storageAutoScale Automatic storage space expansion switch. Valid values:
         * - Enable
         * - Disable
         * 
         * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable.
         * 
         * @return builder
         * 
         */
        public Builder storageAutoScale(@Nullable Output storageAutoScale) {
            $.storageAutoScale = storageAutoScale;
            return this;
        }

        /**
         * @param storageAutoScale Automatic storage space expansion switch. Valid values:
         * - Enable
         * - Disable
         * 
         * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable.
         * 
         * @return builder
         * 
         */
        public Builder storageAutoScale(String storageAutoScale) {
            return storageAutoScale(Output.of(storageAutoScale));
        }

        /**
         * @param storageThreshold The threshold in percentage based on which an automatic storage expansion is triggered. If the available storage reaches the threshold, ApsaraDB RDS increases the storage capacity of the instance.
         * Valid values: [10, 20, 30, 40, 50].
         * 
         * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable. The value must be greater than or equal to the total size of the current storage space of the instance.
         * 
         * @return builder
         * 
         */
        public Builder storageThreshold(@Nullable Output storageThreshold) {
            $.storageThreshold = storageThreshold;
            return this;
        }

        /**
         * @param storageThreshold The threshold in percentage based on which an automatic storage expansion is triggered. If the available storage reaches the threshold, ApsaraDB RDS increases the storage capacity of the instance.
         * Valid values: [10, 20, 30, 40, 50].
         * 
         * > **NOTE:** This parameter only takes effect when the StorageAutoScale parameter is set to Enable. The value must be greater than or equal to the total size of the current storage space of the instance.
         * 
         * @return builder
         * 
         */
        public Builder storageThreshold(Integer storageThreshold) {
            return storageThreshold(Output.of(storageThreshold));
        }

        /**
         * @param storageUpperBound The upper limit of the total storage space for automatic expansion of the storage space, that is, automatic expansion will not cause the total storage space of the instance to exceed this value. Unit: GB. The value must be ≥0.
         * 
         * > **NOTE:** Because of data backup and migration, change DB instance type and storage would cost 15~20 minutes. Please make full preparation before changing them.
         * 
         * @return builder
         * 
         */
        public Builder storageUpperBound(@Nullable Output storageUpperBound) {
            $.storageUpperBound = storageUpperBound;
            return this;
        }

        /**
         * @param storageUpperBound The upper limit of the total storage space for automatic expansion of the storage space, that is, automatic expansion will not cause the total storage space of the instance to exceed this value. Unit: GB. The value must be ≥0.
         * 
         * > **NOTE:** Because of data backup and migration, change DB instance type and storage would cost 15~20 minutes. Please make full preparation before changing them.
         * 
         * @return builder
         * 
         */
        public Builder storageUpperBound(Integer storageUpperBound) {
            return storageUpperBound(Output.of(storageUpperBound));
        }

        /**
         * @param switchTime The specific point in time when you want to perform the update. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. It is valid only when `target_minor_version` is changed. The time must be in UTC.
         * 
         * > **NOTE:** This parameter takes effect only when you set the UpgradeTime parameter to SpecifyTime.
         * 
         * @return builder
         * 
         */
        public Builder switchTime(@Nullable Output switchTime) {
            $.switchTime = switchTime;
            return this;
        }

        /**
         * @param switchTime The specific point in time when you want to perform the update. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. It is valid only when `target_minor_version` is changed. The time must be in UTC.
         * 
         * > **NOTE:** This parameter takes effect only when you set the UpgradeTime parameter to SpecifyTime.
         * 
         * @return builder
         * 
         */
        public Builder switchTime(String switchTime) {
            return switchTime(Output.of(switchTime));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
         * - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
         * 
         * Note: From 1.63.0, the tag key and value are case sensitive. Before that, they are not case sensitive.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * - Key: It can be up to 64 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It cannot be a null string.
         * - Value: It can be up to 128 characters in length. It cannot begin with "aliyun", "acs:", "http://", or "https://". It can be a null string.
         * 
         * Note: From 1.63.0, the tag key and value are case sensitive. Before that, they are not case sensitive.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param targetMinorVersion The minor engine version to which you want to update the instance. If you do not specify this parameter, the instance is updated to the latest minor engine version. You must specify the minor engine version in one of the following formats:
         * - PostgreSQL: rds_postgres_<Major engine version>00_<Minor engine version>. Example: rds_postgres_1200_20200830.
         * - MySQL: <RDS edition>_<Minor engine version>. Examples: rds_20200229, xcluster_20200229, and xcluster80_20200229. The following RDS editions are supported:
         * - rds: The instance runs RDS Basic or High-availability Edition.
         * - xcluster: The instance runs MySQL 5.7 on RDS Enterprise Edition.
         * - xcluster80: The instance runs MySQL 8.0 on RDS Enterprise Edition.
         * - SQLServer: <Minor engine version>. Example: 15.0.4073.23.
         * 
         * > **NOTE:** For more information about minor engine versions, see Release notes of minor AliPG versions, Release notes of minor AliSQL versions, and Release notes of minor engine versions of ApsaraDB RDS for SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder targetMinorVersion(@Nullable Output targetMinorVersion) {
            $.targetMinorVersion = targetMinorVersion;
            return this;
        }

        /**
         * @param targetMinorVersion The minor engine version to which you want to update the instance. If you do not specify this parameter, the instance is updated to the latest minor engine version. You must specify the minor engine version in one of the following formats:
         * - PostgreSQL: rds_postgres_<Major engine version>00_<Minor engine version>. Example: rds_postgres_1200_20200830.
         * - MySQL: <RDS edition>_<Minor engine version>. Examples: rds_20200229, xcluster_20200229, and xcluster80_20200229. The following RDS editions are supported:
         * - rds: The instance runs RDS Basic or High-availability Edition.
         * - xcluster: The instance runs MySQL 5.7 on RDS Enterprise Edition.
         * - xcluster80: The instance runs MySQL 8.0 on RDS Enterprise Edition.
         * - SQLServer: <Minor engine version>. Example: 15.0.4073.23.
         * 
         * > **NOTE:** For more information about minor engine versions, see Release notes of minor AliPG versions, Release notes of minor AliSQL versions, and Release notes of minor engine versions of ApsaraDB RDS for SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder targetMinorVersion(String targetMinorVersion) {
            return targetMinorVersion(Output.of(targetMinorVersion));
        }

        /**
         * @param tcpConnectionType The availability check method of the instance. Valid values:
         * - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
         * - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
         * 
         * @return builder
         * 
         */
        public Builder tcpConnectionType(@Nullable Output tcpConnectionType) {
            $.tcpConnectionType = tcpConnectionType;
            return this;
        }

        /**
         * @param tcpConnectionType The availability check method of the instance. Valid values:
         * - **SHORT**: Alibaba Cloud uses short-lived connections to check the availability of the instance.
         * - **LONG**: Alibaba Cloud uses persistent connections to check the availability of the instance.
         * 
         * @return builder
         * 
         */
        public Builder tcpConnectionType(String tcpConnectionType) {
            return tcpConnectionType(Output.of(tcpConnectionType));
        }

        /**
         * @param tdeStatus The TDE(Transparent Data Encryption) status. After TDE is turned on, it cannot be turned off. See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26256.htm).
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(@Nullable Output tdeStatus) {
            $.tdeStatus = tdeStatus;
            return this;
        }

        /**
         * @param tdeStatus The TDE(Transparent Data Encryption) status. After TDE is turned on, it cannot be turned off. See more [engine and engineVersion limitation](https://www.alibabacloud.com/help/zh/doc-detail/26256.htm).
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(String tdeStatus) {
            return tdeStatus(Output.of(tdeStatus));
        }

        /**
         * @param upgradeDbInstanceKernelVersion Whether to upgrade a minor version of the kernel. Valid values:
         * - true: upgrade
         * - false: not to upgrade
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead.
         * 
         */
        @Deprecated /* Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead. */
        public Builder upgradeDbInstanceKernelVersion(@Nullable Output upgradeDbInstanceKernelVersion) {
            $.upgradeDbInstanceKernelVersion = upgradeDbInstanceKernelVersion;
            return this;
        }

        /**
         * @param upgradeDbInstanceKernelVersion Whether to upgrade a minor version of the kernel. Valid values:
         * - true: upgrade
         * - false: not to upgrade
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead.
         * 
         */
        @Deprecated /* Attribute `upgrade_db_instance_kernel_version` has been deprecated from 1.198.0 and use `target_minor_version` instead. */
        public Builder upgradeDbInstanceKernelVersion(Boolean upgradeDbInstanceKernelVersion) {
            return upgradeDbInstanceKernelVersion(Output.of(upgradeDbInstanceKernelVersion));
        }

        /**
         * @param upgradeTime The method to update the minor engine version. Default value: Immediate. It is valid only when `target_minor_version` is changed. Valid values:
         * - Immediate: The minor engine version is immediately updated.
         * - MaintainTime: The minor engine version is updated during the maintenance window. For more information about how to change the maintenance window, see ModifyDBInstanceMaintainTime.
         * - SpecifyTime: The minor engine version is updated at the point in time you specify.
         * 
         * @return builder
         * 
         */
        public Builder upgradeTime(@Nullable Output upgradeTime) {
            $.upgradeTime = upgradeTime;
            return this;
        }

        /**
         * @param upgradeTime The method to update the minor engine version. Default value: Immediate. It is valid only when `target_minor_version` is changed. Valid values:
         * - Immediate: The minor engine version is immediately updated.
         * - MaintainTime: The minor engine version is updated during the maintenance window. For more information about how to change the maintenance window, see ModifyDBInstanceMaintainTime.
         * - SpecifyTime: The minor engine version is updated at the point in time you specify.
         * 
         * @return builder
         * 
         */
        public Builder upgradeTime(String upgradeTime) {
            return upgradeTime(Output.of(upgradeTime));
        }

        /**
         * @param vpcId The VPC ID of the instance.
         * 
         * > **NOTE:** This parameter applies only to ApsaraDB RDS for MySQL instances. For more information about Upgrade the major engine version of an ApsaraDB RDS for MySQL instance, see [Upgrade the major engine version of an RDS instance in the ApsaraDB RDS console](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/upgrade-the-major-engine-version-of-an-apsaradb-rds-for-mysql-instance-1).
         * 
         * @return builder
         * 
         */
        public Builder vpcId(@Nullable Output vpcId) {
            $.vpcId = vpcId;
            return this;
        }

        /**
         * @param vpcId The VPC ID of the instance.
         * 
         * > **NOTE:** This parameter applies only to ApsaraDB RDS for MySQL instances. For more information about Upgrade the major engine version of an ApsaraDB RDS for MySQL instance, see [Upgrade the major engine version of an RDS instance in the ApsaraDB RDS console](https://www.alibabacloud.com/help/en/apsaradb-for-rds/latest/upgrade-the-major-engine-version-of-an-apsaradb-rds-for-mysql-instance-1).
         * 
         * @return builder
         * 
         */
        public Builder vpcId(String vpcId) {
            return vpcId(Output.of(vpcId));
        }

        /**
         * @param vswitchId The virtual switch ID to launch DB instances in one VPC. If there are multiple vswitches, separate them with commas.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(@Nullable Output vswitchId) {
            $.vswitchId = vswitchId;
            return this;
        }

        /**
         * @param vswitchId The virtual switch ID to launch DB instances in one VPC. If there are multiple vswitches, separate them with commas.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(String vswitchId) {
            return vswitchId(Output.of(vswitchId));
        }

        /**
         * @param whitelistNetworkType The network type of the IP address whitelist. Default value: MIX. Valid values:
         * - Classic: classic network in enhanced whitelist mode
         * - VPC: virtual private cloud (VPC) in enhanced whitelist mode
         * - MIX: standard whitelist mode
         * 
         * > **NOTE:** In standard whitelist mode, IP addresses and CIDR blocks can be added only to the default IP address whitelist. In enhanced whitelist mode, IP addresses and CIDR blocks can be added to both IP address whitelists of the classic network type and those of the VPC network type.
         * 
         * @return builder
         * 
         */
        public Builder whitelistNetworkType(@Nullable Output whitelistNetworkType) {
            $.whitelistNetworkType = whitelistNetworkType;
            return this;
        }

        /**
         * @param whitelistNetworkType The network type of the IP address whitelist. Default value: MIX. Valid values:
         * - Classic: classic network in enhanced whitelist mode
         * - VPC: virtual private cloud (VPC) in enhanced whitelist mode
         * - MIX: standard whitelist mode
         * 
         * > **NOTE:** In standard whitelist mode, IP addresses and CIDR blocks can be added only to the default IP address whitelist. In enhanced whitelist mode, IP addresses and CIDR blocks can be added to both IP address whitelists of the classic network type and those of the VPC network type.
         * 
         * @return builder
         * 
         */
        public Builder whitelistNetworkType(String whitelistNetworkType) {
            return whitelistNetworkType(Output.of(whitelistNetworkType));
        }

        /**
         * @param zoneId The Zone to launch the DB instance. From version 1.8.1, it supports multiple zone.
         * If it is a multi-zone and `vswitch_id` is specified, the vswitch must in the one of them.
         * The multiple zone ID can be retrieved by setting `multi` to "true" in the data source `alicloud.getZones`.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(@Nullable Output zoneId) {
            $.zoneId = zoneId;
            return this;
        }

        /**
         * @param zoneId The Zone to launch the DB instance. From version 1.8.1, it supports multiple zone.
         * If it is a multi-zone and `vswitch_id` is specified, the vswitch must in the one of them.
         * The multiple zone ID can be retrieved by setting `multi` to "true" in the data source `alicloud.getZones`.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(String zoneId) {
            return zoneId(Output.of(zoneId));
        }

        /**
         * @param zoneIdSlaveA The region ID of the secondary instance if you create a secondary instance. If you set this parameter to the same value as the ZoneId parameter, the instance is deployed in a single zone. Otherwise, the instance is deployed in multiple zones.
         * 
         * @return builder
         * 
         */
        public Builder zoneIdSlaveA(@Nullable Output zoneIdSlaveA) {
            $.zoneIdSlaveA = zoneIdSlaveA;
            return this;
        }

        /**
         * @param zoneIdSlaveA The region ID of the secondary instance if you create a secondary instance. If you set this parameter to the same value as the ZoneId parameter, the instance is deployed in a single zone. Otherwise, the instance is deployed in multiple zones.
         * 
         * @return builder
         * 
         */
        public Builder zoneIdSlaveA(String zoneIdSlaveA) {
            return zoneIdSlaveA(Output.of(zoneIdSlaveA));
        }

        public InstanceState build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy