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

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

import com.pulumi.alicloud.rds.inputs.RdsCloneDbInstanceParameterArgs;
import com.pulumi.alicloud.rds.inputs.RdsCloneDbInstancePgHbaConfArgs;
import com.pulumi.alicloud.rds.inputs.RdsCloneDbInstanceServerlessConfigArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final RdsCloneDbInstanceArgs Empty = new RdsCloneDbInstanceArgs();

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
     * 
     */
    @Import(name="acl")
    private @Nullable Output acl;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
     * 
     */
    public Optional> acl() {
        return Optional.ofNullable(this.acl);
    }

    /**
     * How to upgrade the minor version of the instance. Valid values:
     * * **Auto**: automatically upgrade the minor version.
     * * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
     * 
     */
    @Import(name="autoUpgradeMinorVersion")
    private @Nullable Output autoUpgradeMinorVersion;

    /**
     * @return How to upgrade the minor version of the instance. Valid values:
     * * **Auto**: automatically upgrade the minor version.
     * * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
     * 
     */
    public Optional> autoUpgradeMinorVersion() {
        return Optional.ofNullable(this.autoUpgradeMinorVersion);
    }

    /**
     * The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
     * 
     * > **NOTE:** You must specify at least one of the BackupId and RestoreTime parameters. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
     * 
     */
    @Import(name="backupId")
    private @Nullable Output backupId;

    /**
     * @return The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
     * 
     * > **NOTE:** You must specify at least one of the BackupId and RestoreTime parameters. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
     * 
     */
    public Optional> backupId() {
        return Optional.ofNullable(this.backupId);
    }

    /**
     * The type of backup that is used to restore the data of the original instance. Valid values:
     * * **FullBackup**: full backup
     * * **IncrementalBackup**: incremental backup
     * 
     */
    @Import(name="backupType")
    private @Nullable Output backupType;

    /**
     * @return The type of backup that is used to restore the data of the original instance. Valid values:
     * * **FullBackup**: full backup
     * * **IncrementalBackup**: incremental backup
     * 
     */
    public Optional> backupType() {
        return Optional.ofNullable(this.backupType);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
     * * **aliyun**: using cloud certificates
     * * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
     * 
     */
    @Import(name="caType")
    private @Nullable Output caType;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
     * * **aliyun**: using cloud certificates
     * * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
     * 
     */
    public Optional> caType() {
        return Optional.ofNullable(this.caType);
    }

    /**
     * Instance series. Valid values:
     * * **Basic**: Basic Edition
     * * **HighAvailability**: High availability
     * * **AlwaysOn**: Cluster Edition
     * * **Finance**: Three-node Enterprise Edition.
     * * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
     * * **serverless_standard**: MySQL Serverless High Availability Edition. (Available in 1.207.0+)
     * * **serverless_ha**: SQLServer Serverless High Availability Edition. (Available in 1.207.0+)
     * * **cluster**: MySQL Cluster Edition. (Available in 1.207.0+)
     * 
     */
    @Import(name="category")
    private @Nullable Output category;

    /**
     * @return Instance series. Valid values:
     * * **Basic**: Basic Edition
     * * **HighAvailability**: High availability
     * * **AlwaysOn**: Cluster Edition
     * * **Finance**: Three-node Enterprise Edition.
     * * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
     * * **serverless_standard**: MySQL Serverless High Availability Edition. (Available in 1.207.0+)
     * * **serverless_ha**: SQLServer Serverless High Availability Edition. (Available in 1.207.0+)
     * * **cluster**: MySQL Cluster Edition. (Available in 1.207.0+)
     * 
     */
    public Optional> category() {
        return Optional.ofNullable(this.category);
    }

    /**
     * The file that contains the certificate used for TDE.
     * 
     */
    @Import(name="certificate")
    private @Nullable Output certificate;

    /**
     * @return The file that contains the certificate used for TDE.
     * 
     */
    public Optional> certificate() {
        return Optional.ofNullable(this.certificate);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
     * 
     */
    @Import(name="clientCaCert")
    private @Nullable Output clientCaCert;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
     * 
     */
    public Optional> clientCaCert() {
        return Optional.ofNullable(this.clientCaCert);
    }

    /**
     * The client ca enabled.
     * 
     */
    @Import(name="clientCaEnabled")
    private @Nullable Output clientCaEnabled;

    /**
     * @return The client ca enabled.
     * 
     */
    public Optional> clientCaEnabled() {
        return Optional.ofNullable(this.clientCaEnabled);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
     * 
     */
    @Import(name="clientCertRevocationList")
    private @Nullable Output clientCertRevocationList;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
     * 
     */
    public Optional> clientCertRevocationList() {
        return Optional.ofNullable(this.clientCertRevocationList);
    }

    /**
     * The client crl enabled.
     * 
     */
    @Import(name="clientCrlEnabled")
    private @Nullable Output clientCrlEnabled;

    /**
     * @return The client crl enabled.
     * 
     */
    public Optional> clientCrlEnabled() {
        return Optional.ofNullable(this.clientCrlEnabled);
    }

    /**
     * The connection string prefix.
     * 
     */
    @Import(name="connectionStringPrefix")
    private @Nullable Output connectionStringPrefix;

    /**
     * @return The connection string prefix.
     * 
     */
    public Optional> connectionStringPrefix() {
        return Optional.ofNullable(this.connectionStringPrefix);
    }

    /**
     * The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
     * 
     */
    @Import(name="dbInstanceClass")
    private @Nullable Output dbInstanceClass;

    /**
     * @return The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
     * 
     */
    public Optional> dbInstanceClass() {
        return Optional.ofNullable(this.dbInstanceClass);
    }

    /**
     * The db instance description.
     * 
     */
    @Import(name="dbInstanceDescription")
    private @Nullable Output dbInstanceDescription;

    /**
     * @return The db instance description.
     * 
     */
    public Optional> dbInstanceDescription() {
        return Optional.ofNullable(this.dbInstanceDescription);
    }

    /**
     * The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
     * 
     * > **NOTE:** The default value of this parameter is the storage capacity of the original instance.
     * 
     */
    @Import(name="dbInstanceStorage")
    private @Nullable Output dbInstanceStorage;

    /**
     * @return The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
     * 
     * > **NOTE:** The default value of this parameter is the storage capacity of the original instance.
     * 
     */
    public Optional> dbInstanceStorage() {
        return Optional.ofNullable(this.dbInstanceStorage);
    }

    /**
     * The type of storage media that is used for the new instance. Valid values:
     * * **local_ssd**: local SSDs
     * * **cloud_ssd**: standard SSDs
     * * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
     * * **cloud_essd2**: ESSDs of PL2
     * * **cloud_essd3**: ESSDs of PL3
     * 
     */
    @Import(name="dbInstanceStorageType", required=true)
    private Output dbInstanceStorageType;

    /**
     * @return The type of storage media that is used for the new instance. Valid values:
     * * **local_ssd**: local SSDs
     * * **cloud_ssd**: standard SSDs
     * * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
     * * **cloud_essd2**: ESSDs of PL2
     * * **cloud_essd3**: ESSDs of PL3
     * 
     */
    public Output dbInstanceStorageType() {
        return this.dbInstanceStorageType;
    }

    /**
     * The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
     * 
     * > **NOTE:** This parameter is available and must be specified only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
     * 
     */
    @Import(name="dbName")
    private @Nullable Output dbName;

    /**
     * @return The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
     * 
     * > **NOTE:** This parameter is available and must be specified only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
     * 
     */
    public Optional> dbName() {
        return Optional.ofNullable(this.dbName);
    }

    /**
     * The names of the databases that you want to create on the new instance.
     * 
     */
    @Import(name="dbNames")
    private @Nullable Output dbNames;

    /**
     * @return The names of the databases that you want to create on the new instance.
     * 
     */
    public Optional> dbNames() {
        return Optional.ofNullable(this.dbNames);
    }

    /**
     * The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
     * 
     */
    @Import(name="dedicatedHostGroupId")
    private @Nullable Output dedicatedHostGroupId;

    /**
     * @return The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
     * 
     */
    public Optional> dedicatedHostGroupId() {
        return Optional.ofNullable(this.dedicatedHostGroupId);
    }

    /**
     * The switch of delete protection. Valid values:
     * - true: delete protect.
     * - false: no delete protect.
     * 
     * > **NOTE:** `deletion_protection` is valid only when attribute `payment_type` is set to `PayAsYouGo`, 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 `payment_type` is set to `PayAsYouGo`, supported engine type: **MySQL**, **PostgreSQL**, **MariaDB**, **MSSQL**.
     * 
     */
    public Optional> deletionProtection() {
        return Optional.ofNullable(this.deletionProtection);
    }

    /**
     * The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
     * 
     */
    @Import(name="direction")
    private @Nullable Output direction;

    /**
     * @return The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
     * 
     */
    public Optional> direction() {
        return Optional.ofNullable(this.direction);
    }

    /**
     * The effective time.
     * 
     */
    @Import(name="effectiveTime")
    private @Nullable Output effectiveTime;

    /**
     * @return The effective time.
     * 
     */
    public Optional> effectiveTime() {
        return Optional.ofNullable(this.effectiveTime);
    }

    /**
     * The ID of the private key.
     * 
     * > **NOTE:** This parameter is available only when the instance runs MySQL.
     * 
     */
    @Import(name="encryptionKey")
    private @Nullable Output encryptionKey;

    /**
     * @return The ID of the private key.
     * 
     * > **NOTE:** This parameter is available only when the instance runs MySQL.
     * 
     */
    public Optional> encryptionKey() {
        return Optional.ofNullable(this.encryptionKey);
    }

    /**
     * Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
     * 
     */
    @Import(name="engine")
    private @Nullable Output engine;

    /**
     * @return Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
     * 
     */
    public Optional> engine() {
        return Optional.ofNullable(this.engine);
    }

    /**
     * Database version. Value:
     * * MySQL:**5.5/5.6/5.7/8.0**
     * * SQL Server:**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:**9.4/10.0/11.0/12.0/13.0**
     * * MariaDB:**10.3**.
     * 
     */
    @Import(name="engineVersion")
    private @Nullable Output engineVersion;

    /**
     * @return Database version. Value:
     * * MySQL:**5.5/5.6/5.7/8.0**
     * * SQL Server:**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:**9.4/10.0/11.0/12.0/13.0**
     * * MariaDB:**10.3**.
     * 
     */
    public Optional> engineVersion() {
        return Optional.ofNullable(this.engineVersion);
    }

    /**
     * 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 high availability mode. Valid values:
     * * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
     * * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
     * 
     */
    @Import(name="haMode")
    private @Nullable Output haMode;

    /**
     * @return The high availability mode. Valid values:
     * * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
     * * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
     * 
     */
    public Optional> haMode() {
        return Optional.ofNullable(this.haMode);
    }

    /**
     * The network type of the instance. Valid values:
     * * **Classic**: Classic Network
     * * **VPC**: VPC.
     * 
     */
    @Import(name="instanceNetworkType")
    private @Nullable Output instanceNetworkType;

    /**
     * @return The network type of the instance. Valid values:
     * * **Classic**: Classic Network
     * * **VPC**: VPC.
     * 
     */
    public Optional> instanceNetworkType() {
        return Optional.ofNullable(this.instanceNetworkType);
    }

    /**
     * The maintainable time period of the instance. Format: <I> HH:mm</I> Z-<I> HH:mm</I> Z(UTC time).
     * 
     */
    @Import(name="maintainTime")
    private @Nullable Output maintainTime;

    /**
     * @return The maintainable time period of the instance. Format: <I> HH:mm</I> Z-<I> HH:mm</I> Z(UTC time).
     * 
     */
    public Optional> maintainTime() {
        return Optional.ofNullable(this.maintainTime);
    }

    /**
     * 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 password of the certificate.
     * 
     * > **NOTE:** This parameter is available only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
     * 
     */
    @Import(name="password")
    private @Nullable Output password;

    /**
     * @return The password of the certificate.
     * 
     * > **NOTE:** This parameter is available only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
     * 
     */
    public Optional> password() {
        return Optional.ofNullable(this.password);
    }

    /**
     * The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
     * 
     */
    @Import(name="paymentType", required=true)
    private Output paymentType;

    /**
     * @return The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
     * 
     */
    public Output paymentType() {
        return this.paymentType;
    }

    /**
     * The period. Valid values: `Month`, `Year`.
     * 
     * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the period parameter.
     * 
     */
    @Import(name="period")
    private @Nullable Output period;

    /**
     * @return The period. Valid values: `Month`, `Year`.
     * 
     * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the period parameter.
     * 
     */
    public Optional> period() {
        return Optional.ofNullable(this.period);
    }

    /**
     * The details of the AD domain.See `pg_hba_conf` below.
     * 
     */
    @Import(name="pgHbaConfs")
    private @Nullable Output> pgHbaConfs;

    /**
     * @return The details of the AD domain.See `pg_hba_conf` below.
     * 
     */
    public Optional>> pgHbaConfs() {
        return Optional.ofNullable(this.pgHbaConfs);
    }

    /**
     * The port.
     * 
     */
    @Import(name="port")
    private @Nullable Output port;

    /**
     * @return The port.
     * 
     */
    public Optional> port() {
        return Optional.ofNullable(this.port);
    }

    /**
     * The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
     * 
     */
    @Import(name="privateIpAddress")
    private @Nullable Output privateIpAddress;

    /**
     * @return The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
     * 
     */
    public Optional> privateIpAddress() {
        return Optional.ofNullable(this.privateIpAddress);
    }

    /**
     * The file that contains the private key used for TDE.
     * 
     */
    @Import(name="privateKey")
    private @Nullable Output privateKey;

    /**
     * @return The file that contains the private key used for TDE.
     * 
     */
    public Optional> privateKey() {
        return Optional.ofNullable(this.privateKey);
    }

    /**
     * The released keep policy.
     * 
     */
    @Import(name="releasedKeepPolicy")
    private @Nullable Output releasedKeepPolicy;

    /**
     * @return The released keep policy.
     * 
     */
    public Optional> releasedKeepPolicy() {
        return Optional.ofNullable(this.releasedKeepPolicy);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
     * 
     */
    @Import(name="replicationAcl")
    private @Nullable Output replicationAcl;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
     * 
     */
    public Optional> replicationAcl() {
        return Optional.ofNullable(this.replicationAcl);
    }

    /**
     * The resource group id.
     * 
     */
    @Import(name="resourceGroupId")
    private @Nullable Output resourceGroupId;

    /**
     * @return The resource group id.
     * 
     */
    public Optional> resourceGroupId() {
        return Optional.ofNullable(this.resourceGroupId);
    }

    /**
     * Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
     * 
     */
    @Import(name="restoreTable")
    private @Nullable Output restoreTable;

    /**
     * @return Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
     * 
     */
    public Optional> restoreTable() {
        return Optional.ofNullable(this.restoreTable);
    }

    /**
     * The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     */
    @Import(name="restoreTime")
    private @Nullable Output restoreTime;

    /**
     * @return The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     */
    public Optional> restoreTime() {
        return Optional.ofNullable(this.restoreTime);
    }

    /**
     * The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account.
     * 
     * > **NOTE:** This parameter is available only when the instance runs MySQL.
     * 
     */
    @Import(name="roleArn")
    private @Nullable Output roleArn;

    /**
     * @return The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account.
     * 
     * > **NOTE:** This parameter is available only when the instance runs MySQL.
     * 
     */
    public Optional> roleArn() {
        return Optional.ofNullable(this.roleArn);
    }

    /**
     * The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
     * * IP address form, for example: 10.23.12.24.
     * * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
     * 
     * > **NOTE:** each instance can add up to 1000 IP addresses or IP segments, that is, the total number of IP addresses or IP segments in all IP whitelist groups cannot exceed 1000. When there are more IP addresses, it is recommended to merge them into IP segments, for example, 10.23.12.0/24.
     * 
     */
    @Import(name="securityIps")
    private @Nullable Output> securityIps;

    /**
     * @return The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
     * * IP address form, for example: 10.23.12.24.
     * * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
     * 
     * > **NOTE:** each instance can add up to 1000 IP addresses or IP segments, that is, the total number of IP addresses or IP segments in all IP whitelist groups cannot exceed 1000. When there are more IP addresses, it is recommended to merge them into IP segments, for example, 10.23.12.0/24.
     * 
     */
    public Optional>> securityIps() {
        return Optional.ofNullable(this.securityIps);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
     * 
     */
    @Import(name="serverCert")
    private @Nullable Output serverCert;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
     * 
     */
    public Optional> serverCert() {
        return Optional.ofNullable(this.serverCert);
    }

    /**
     * This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
     * 
     */
    @Import(name="serverKey")
    private @Nullable Output serverKey;

    /**
     * @return This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
     * 
     */
    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 MySQL 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 MySQL instance.See `serverless_config` below.
     * 
     */
    public Optional>> serverlessConfigs() {
        return Optional.ofNullable(this.serverlessConfigs);
    }

    /**
     * The source biz.
     * 
     */
    @Import(name="sourceBiz")
    private @Nullable Output sourceBiz;

    /**
     * @return The source biz.
     * 
     */
    public Optional> sourceBiz() {
        return Optional.ofNullable(this.sourceBiz);
    }

    /**
     * The source db instance id.
     * 
     */
    @Import(name="sourceDbInstanceId", required=true)
    private Output sourceDbInstanceId;

    /**
     * @return The source db instance id.
     * 
     */
    public Output sourceDbInstanceId() {
        return this.sourceDbInstanceId;
    }

    /**
     * Enable or disable SSL. Valid values: `0` and `1`.
     * 
     */
    @Import(name="sslEnabled")
    private @Nullable Output sslEnabled;

    /**
     * @return Enable or disable SSL. Valid values: `0` and `1`.
     * 
     */
    public Optional> sslEnabled() {
        return Optional.ofNullable(this.sslEnabled);
    }

    /**
     * The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     */
    @Import(name="switchTime")
    private @Nullable Output switchTime;

    /**
     * @return The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
     * 
     */
    public Optional> switchTime() {
        return Optional.ofNullable(this.switchTime);
    }

    /**
     * [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
     * * **Sync**: strong synchronization
     * * **Semi-sync**: Semi-synchronous
     * * **Async**: asynchronous
     * 
     * > **NOTE:** SQL Server 2017 cluster version is currently not supported.
     * 
     */
    @Import(name="syncMode")
    private @Nullable Output syncMode;

    /**
     * @return [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
     * * **Sync**: strong synchronization
     * * **Semi-sync**: Semi-synchronous
     * * **Async**: asynchronous
     * 
     * > **NOTE:** SQL Server 2017 cluster version is currently not supported.
     * 
     */
    public Optional> syncMode() {
        return Optional.ofNullable(this.syncMode);
    }

    /**
     * The information about the databases and tables that you want to restore. Format:
     * [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
     * 
     */
    @Import(name="tableMeta")
    private @Nullable Output tableMeta;

    /**
     * @return The information about the databases and tables that you want to restore. Format:
     * [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
     * 
     */
    public Optional> tableMeta() {
        return Optional.ofNullable(this.tableMeta);
    }

    /**
     * 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);
    }

    /**
     * Specifies whether to enable TDE. Valid values:
     * * Enabled
     * * Disabled
     * 
     */
    @Import(name="tdeStatus")
    private @Nullable Output tdeStatus;

    /**
     * @return Specifies whether to enable TDE. Valid values:
     * * Enabled
     * * Disabled
     * 
     */
    public Optional> tdeStatus() {
        return Optional.ofNullable(this.tdeStatus);
    }

    /**
     * The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
     * * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
     * * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
     * 
     * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the used_time parameter.
     * 
     */
    @Import(name="usedTime")
    private @Nullable Output usedTime;

    /**
     * @return The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
     * * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
     * * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
     * 
     * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the used_time parameter.
     * 
     */
    public Optional> usedTime() {
        return Optional.ofNullable(this.usedTime);
    }

    /**
     * The ID of the VPC to which the new instance belongs.
     * 
     * > **NOTE:** Make sure that the VPC resides in the specified region.
     * 
     */
    @Import(name="vpcId")
    private @Nullable Output vpcId;

    /**
     * @return The ID of the VPC to which the new instance belongs.
     * 
     * > **NOTE:** Make sure that the VPC resides in the specified region.
     * 
     */
    public Optional> vpcId() {
        return Optional.ofNullable(this.vpcId);
    }

    /**
     * The ID of the vSwitch associated with the specified VPC. If there are multiple vswitches, separate them with commas. The first vswitch is a primary zone switch and the query only returns that vswitch. If there are multiple vswitches, do not perform `vswitch_id` check.
     * 
     * > **NOTE:** Make sure that the vSwitch belongs to the specified VPC and region.
     * 
     */
    @Import(name="vswitchId")
    private @Nullable Output vswitchId;

    /**
     * @return The ID of the vSwitch associated with the specified VPC. If there are multiple vswitches, separate them with commas. The first vswitch is a primary zone switch and the query only returns that vswitch. If there are multiple vswitches, do not perform `vswitch_id` check.
     * 
     * > **NOTE:** Make sure that the vSwitch belongs to the specified VPC and region.
     * 
     */
    public Optional> vswitchId() {
        return Optional.ofNullable(this.vswitchId);
    }

    /**
     * The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/help/en/rds/developer-reference/api-rds-2014-08-15-describeregions) operation to query the most recent region list.
     * 
     */
    @Import(name="zoneId")
    private @Nullable Output zoneId;

    /**
     * @return The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/help/en/rds/developer-reference/api-rds-2014-08-15-describeregions) operation to query the most recent region list.
     * 
     */
    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);
    }

    /**
     * The region ID of the log instance if you create a log 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.
     * 
     * > **NOTE:** The default value of this parameter is the ID of the zone to which the original instance belongs.
     * 
     */
    @Import(name="zoneIdSlaveB")
    private @Nullable Output zoneIdSlaveB;

    /**
     * @return The region ID of the log instance if you create a log 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.
     * 
     * > **NOTE:** The default value of this parameter is the ID of the zone to which the original instance belongs.
     * 
     */
    public Optional> zoneIdSlaveB() {
        return Optional.ofNullable(this.zoneIdSlaveB);
    }

    private RdsCloneDbInstanceArgs() {}

    private RdsCloneDbInstanceArgs(RdsCloneDbInstanceArgs $) {
        this.acl = $.acl;
        this.autoUpgradeMinorVersion = $.autoUpgradeMinorVersion;
        this.backupId = $.backupId;
        this.backupType = $.backupType;
        this.caType = $.caType;
        this.category = $.category;
        this.certificate = $.certificate;
        this.clientCaCert = $.clientCaCert;
        this.clientCaEnabled = $.clientCaEnabled;
        this.clientCertRevocationList = $.clientCertRevocationList;
        this.clientCrlEnabled = $.clientCrlEnabled;
        this.connectionStringPrefix = $.connectionStringPrefix;
        this.dbInstanceClass = $.dbInstanceClass;
        this.dbInstanceDescription = $.dbInstanceDescription;
        this.dbInstanceStorage = $.dbInstanceStorage;
        this.dbInstanceStorageType = $.dbInstanceStorageType;
        this.dbName = $.dbName;
        this.dbNames = $.dbNames;
        this.dedicatedHostGroupId = $.dedicatedHostGroupId;
        this.deletionProtection = $.deletionProtection;
        this.direction = $.direction;
        this.effectiveTime = $.effectiveTime;
        this.encryptionKey = $.encryptionKey;
        this.engine = $.engine;
        this.engineVersion = $.engineVersion;
        this.forceRestart = $.forceRestart;
        this.haMode = $.haMode;
        this.instanceNetworkType = $.instanceNetworkType;
        this.maintainTime = $.maintainTime;
        this.parameters = $.parameters;
        this.password = $.password;
        this.paymentType = $.paymentType;
        this.period = $.period;
        this.pgHbaConfs = $.pgHbaConfs;
        this.port = $.port;
        this.privateIpAddress = $.privateIpAddress;
        this.privateKey = $.privateKey;
        this.releasedKeepPolicy = $.releasedKeepPolicy;
        this.replicationAcl = $.replicationAcl;
        this.resourceGroupId = $.resourceGroupId;
        this.restoreTable = $.restoreTable;
        this.restoreTime = $.restoreTime;
        this.roleArn = $.roleArn;
        this.securityIps = $.securityIps;
        this.serverCert = $.serverCert;
        this.serverKey = $.serverKey;
        this.serverlessConfigs = $.serverlessConfigs;
        this.sourceBiz = $.sourceBiz;
        this.sourceDbInstanceId = $.sourceDbInstanceId;
        this.sslEnabled = $.sslEnabled;
        this.switchTime = $.switchTime;
        this.syncMode = $.syncMode;
        this.tableMeta = $.tableMeta;
        this.tcpConnectionType = $.tcpConnectionType;
        this.tdeStatus = $.tdeStatus;
        this.usedTime = $.usedTime;
        this.vpcId = $.vpcId;
        this.vswitchId = $.vswitchId;
        this.zoneId = $.zoneId;
        this.zoneIdSlaveA = $.zoneIdSlaveA;
        this.zoneIdSlaveB = $.zoneIdSlaveB;
    }

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

    public static final class Builder {
        private RdsCloneDbInstanceArgs $;

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

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

        /**
         * @param acl This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
         * 
         * @return builder
         * 
         */
        public Builder acl(@Nullable Output acl) {
            $.acl = acl;
            return this;
        }

        /**
         * @param acl This parameter is only supported by the RDS PostgreSQL cloud disk version. This parameter indicates the authentication method. It is allowed only when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
         * 
         * @return builder
         * 
         */
        public Builder acl(String acl) {
            return acl(Output.of(acl));
        }

        /**
         * @param autoUpgradeMinorVersion How to upgrade the minor version of the instance. Valid values:
         * * **Auto**: automatically upgrade the minor version.
         * * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
         * 
         * @return builder
         * 
         */
        public Builder autoUpgradeMinorVersion(@Nullable Output autoUpgradeMinorVersion) {
            $.autoUpgradeMinorVersion = autoUpgradeMinorVersion;
            return this;
        }

        /**
         * @param autoUpgradeMinorVersion How to upgrade the minor version of the instance. Valid values:
         * * **Auto**: automatically upgrade the minor version.
         * * **Manual**: It is not automatically upgraded. It is only mandatory when the current version is offline.
         * 
         * @return builder
         * 
         */
        public Builder autoUpgradeMinorVersion(String autoUpgradeMinorVersion) {
            return autoUpgradeMinorVersion(Output.of(autoUpgradeMinorVersion));
        }

        /**
         * @param backupId The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
         * 
         * > **NOTE:** You must specify at least one of the BackupId and RestoreTime parameters. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
         * 
         * @return builder
         * 
         */
        public Builder backupId(@Nullable Output backupId) {
            $.backupId = backupId;
            return this;
        }

        /**
         * @param backupId The ID of the data backup file you want to use. You can call the DescribeBackups operation to query the most recent data backup file list.
         * 
         * > **NOTE:** You must specify at least one of the BackupId and RestoreTime parameters. When `payment_type="Serverless"` and when modifying, do not perform `instance_storage` check. Otherwise, check.
         * 
         * @return builder
         * 
         */
        public Builder backupId(String backupId) {
            return backupId(Output.of(backupId));
        }

        /**
         * @param backupType The type of backup that is used to restore the data of the original instance. Valid values:
         * * **FullBackup**: full backup
         * * **IncrementalBackup**: incremental backup
         * 
         * @return builder
         * 
         */
        public Builder backupType(@Nullable Output backupType) {
            $.backupType = backupType;
            return this;
        }

        /**
         * @param backupType The type of backup that is used to restore the data of the original instance. Valid values:
         * * **FullBackup**: full backup
         * * **IncrementalBackup**: incremental backup
         * 
         * @return builder
         * 
         */
        public Builder backupType(String backupType) {
            return backupType(Output.of(backupType));
        }

        /**
         * @param caType This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
         * * **aliyun**: using cloud certificates
         * * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
         * 
         * @return builder
         * 
         */
        public Builder caType(@Nullable Output caType) {
            $.caType = caType;
            return this;
        }

        /**
         * @param caType This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the certificate type. When the value of ssl_action is Open, the default value of this parameter is aliyun. Value range:
         * * **aliyun**: using cloud certificates
         * * **custom**: use a custom certificate. Valid values: `aliyun`, `custom`.
         * 
         * @return builder
         * 
         */
        public Builder caType(String caType) {
            return caType(Output.of(caType));
        }

        /**
         * @param category Instance series. Valid values:
         * * **Basic**: Basic Edition
         * * **HighAvailability**: High availability
         * * **AlwaysOn**: Cluster Edition
         * * **Finance**: Three-node Enterprise Edition.
         * * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
         * * **serverless_standard**: MySQL Serverless High Availability Edition. (Available in 1.207.0+)
         * * **serverless_ha**: SQLServer Serverless High Availability Edition. (Available in 1.207.0+)
         * * **cluster**: MySQL Cluster Edition. (Available in 1.207.0+)
         * 
         * @return builder
         * 
         */
        public Builder category(@Nullable Output category) {
            $.category = category;
            return this;
        }

        /**
         * @param category Instance series. Valid values:
         * * **Basic**: Basic Edition
         * * **HighAvailability**: High availability
         * * **AlwaysOn**: Cluster Edition
         * * **Finance**: Three-node Enterprise Edition.
         * * **serverless_basic**: Serverless Basic Edition. (Available in 1.200.0+)
         * * **serverless_standard**: MySQL Serverless High Availability Edition. (Available in 1.207.0+)
         * * **serverless_ha**: SQLServer Serverless High Availability Edition. (Available in 1.207.0+)
         * * **cluster**: MySQL Cluster Edition. (Available in 1.207.0+)
         * 
         * @return builder
         * 
         */
        public Builder category(String category) {
            return category(Output.of(category));
        }

        /**
         * @param certificate The file that contains the certificate used for TDE.
         * 
         * @return builder
         * 
         */
        public Builder certificate(@Nullable Output certificate) {
            $.certificate = certificate;
            return this;
        }

        /**
         * @param certificate The file that contains the certificate used for TDE.
         * 
         * @return builder
         * 
         */
        public Builder certificate(String certificate) {
            return certificate(Output.of(certificate));
        }

        /**
         * @param clientCaCert This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder clientCaCert(@Nullable Output clientCaCert) {
            $.clientCaCert = clientCaCert;
            return this;
        }

        /**
         * @param clientCaCert This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the public key of the client certification authority. If the value of client_ca_enabled is 1, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder clientCaCert(String clientCaCert) {
            return clientCaCert(Output.of(clientCaCert));
        }

        /**
         * @param clientCaEnabled The client ca enabled.
         * 
         * @return builder
         * 
         */
        public Builder clientCaEnabled(@Nullable Output clientCaEnabled) {
            $.clientCaEnabled = clientCaEnabled;
            return this;
        }

        /**
         * @param clientCaEnabled The client ca enabled.
         * 
         * @return builder
         * 
         */
        public Builder clientCaEnabled(Integer clientCaEnabled) {
            return clientCaEnabled(Output.of(clientCaEnabled));
        }

        /**
         * @param clientCertRevocationList This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder clientCertRevocationList(@Nullable Output clientCertRevocationList) {
            $.clientCertRevocationList = clientCertRevocationList;
            return this;
        }

        /**
         * @param clientCertRevocationList This parameter is only supported by the RDS PostgreSQL cloud disk version, which indicates that the client revokes the certificate file. If the value of client_crl_enabled is 1, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder clientCertRevocationList(String clientCertRevocationList) {
            return clientCertRevocationList(Output.of(clientCertRevocationList));
        }

        /**
         * @param clientCrlEnabled The client crl enabled.
         * 
         * @return builder
         * 
         */
        public Builder clientCrlEnabled(@Nullable Output clientCrlEnabled) {
            $.clientCrlEnabled = clientCrlEnabled;
            return this;
        }

        /**
         * @param clientCrlEnabled The client crl enabled.
         * 
         * @return builder
         * 
         */
        public Builder clientCrlEnabled(Integer clientCrlEnabled) {
            return clientCrlEnabled(Output.of(clientCrlEnabled));
        }

        /**
         * @param connectionStringPrefix The connection string prefix.
         * 
         * @return builder
         * 
         */
        public Builder connectionStringPrefix(@Nullable Output connectionStringPrefix) {
            $.connectionStringPrefix = connectionStringPrefix;
            return this;
        }

        /**
         * @param connectionStringPrefix The connection string prefix.
         * 
         * @return builder
         * 
         */
        public Builder connectionStringPrefix(String connectionStringPrefix) {
            return connectionStringPrefix(Output.of(connectionStringPrefix));
        }

        /**
         * @param dbInstanceClass The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceClass(@Nullable Output dbInstanceClass) {
            $.dbInstanceClass = dbInstanceClass;
            return this;
        }

        /**
         * @param dbInstanceClass The instance type of the new instance. For information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceClass(String dbInstanceClass) {
            return dbInstanceClass(Output.of(dbInstanceClass));
        }

        /**
         * @param dbInstanceDescription The db instance description.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceDescription(@Nullable Output dbInstanceDescription) {
            $.dbInstanceDescription = dbInstanceDescription;
            return this;
        }

        /**
         * @param dbInstanceDescription The db instance description.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceDescription(String dbInstanceDescription) {
            return dbInstanceDescription(Output.of(dbInstanceDescription));
        }

        /**
         * @param dbInstanceStorage The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
         * 
         * > **NOTE:** The default value of this parameter is the storage capacity of the original instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorage(@Nullable Output dbInstanceStorage) {
            $.dbInstanceStorage = dbInstanceStorage;
            return this;
        }

        /**
         * @param dbInstanceStorage The storage capacity of the new instance. Unit: GB. The storage capacity increases in increments of 5 GB. For more information, see [Primary ApsaraDB RDS instance types](https://www.alibabacloud.com/help/en/rds/product-overview/primary-apsaradb-rds-instance-types).
         * 
         * > **NOTE:** The default value of this parameter is the storage capacity of the original instance.
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorage(Integer dbInstanceStorage) {
            return dbInstanceStorage(Output.of(dbInstanceStorage));
        }

        /**
         * @param dbInstanceStorageType The type of storage media that is used for the new instance. Valid values:
         * * **local_ssd**: local SSDs
         * * **cloud_ssd**: standard SSDs
         * * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
         * * **cloud_essd2**: ESSDs of PL2
         * * **cloud_essd3**: ESSDs of PL3
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorageType(Output dbInstanceStorageType) {
            $.dbInstanceStorageType = dbInstanceStorageType;
            return this;
        }

        /**
         * @param dbInstanceStorageType The type of storage media that is used for the new instance. Valid values:
         * * **local_ssd**: local SSDs
         * * **cloud_ssd**: standard SSDs
         * * **cloud_essd**: enhanced SSDs (ESSDs) of performance level 1 (PL1)
         * * **cloud_essd2**: ESSDs of PL2
         * * **cloud_essd3**: ESSDs of PL3
         * 
         * @return builder
         * 
         */
        public Builder dbInstanceStorageType(String dbInstanceStorageType) {
            return dbInstanceStorageType(Output.of(dbInstanceStorageType));
        }

        /**
         * @param dbName The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
         * 
         * > **NOTE:** This parameter is available and must be specified only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder dbName(@Nullable Output dbName) {
            $.dbName = dbName;
            return this;
        }

        /**
         * @param dbName The name of the database for which you want to enable TDE. Up to 50 names can be entered in a single request. If you specify multiple names, separate these names with commas (,).
         * 
         * > **NOTE:** This parameter is available and must be specified only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder dbName(String dbName) {
            return dbName(Output.of(dbName));
        }

        /**
         * @param dbNames The names of the databases that you want to create on the new instance.
         * 
         * @return builder
         * 
         */
        public Builder dbNames(@Nullable Output dbNames) {
            $.dbNames = dbNames;
            return this;
        }

        /**
         * @param dbNames The names of the databases that you want to create on the new instance.
         * 
         * @return builder
         * 
         */
        public Builder dbNames(String dbNames) {
            return dbNames(Output.of(dbNames));
        }

        /**
         * @param dedicatedHostGroupId The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
         * 
         * @return builder
         * 
         */
        public Builder dedicatedHostGroupId(@Nullable Output dedicatedHostGroupId) {
            $.dedicatedHostGroupId = dedicatedHostGroupId;
            return this;
        }

        /**
         * @param dedicatedHostGroupId The ID of the dedicated cluster to which the new instance belongs. This parameter takes effect only when you create the new instance in a dedicated cluster.
         * 
         * @return builder
         * 
         */
        public Builder dedicatedHostGroupId(String dedicatedHostGroupId) {
            return dedicatedHostGroupId(Output.of(dedicatedHostGroupId));
        }

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

        /**
         * @param direction The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
         * 
         * @return builder
         * 
         */
        public Builder direction(@Nullable Output direction) {
            $.direction = direction;
            return this;
        }

        /**
         * @param direction The direction. Valid values: `Auto`, `Down`, `TempUpgrade`, `Up`.
         * 
         * @return builder
         * 
         */
        public Builder direction(String direction) {
            return direction(Output.of(direction));
        }

        /**
         * @param effectiveTime The effective time.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(@Nullable Output effectiveTime) {
            $.effectiveTime = effectiveTime;
            return this;
        }

        /**
         * @param effectiveTime The effective time.
         * 
         * @return builder
         * 
         */
        public Builder effectiveTime(String effectiveTime) {
            return effectiveTime(Output.of(effectiveTime));
        }

        /**
         * @param encryptionKey The ID of the private key.
         * 
         * > **NOTE:** This parameter is available only when the instance runs MySQL.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(@Nullable Output encryptionKey) {
            $.encryptionKey = encryptionKey;
            return this;
        }

        /**
         * @param encryptionKey The ID of the private key.
         * 
         * > **NOTE:** This parameter is available only when the instance runs MySQL.
         * 
         * @return builder
         * 
         */
        public Builder encryptionKey(String encryptionKey) {
            return encryptionKey(Output.of(encryptionKey));
        }

        /**
         * @param engine Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
         * 
         * @return builder
         * 
         */
        public Builder engine(@Nullable Output engine) {
            $.engine = engine;
            return this;
        }

        /**
         * @param engine Database type. Value options: MySQL, SQLServer, PostgreSQL, MariaDB.
         * 
         * @return builder
         * 
         */
        public Builder engine(String engine) {
            return engine(Output.of(engine));
        }

        /**
         * @param engineVersion Database version. Value:
         * * MySQL:**5.5/5.6/5.7/8.0**
         * * SQL Server:**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:**9.4/10.0/11.0/12.0/13.0**
         * * MariaDB:**10.3**.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(@Nullable Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion Database version. Value:
         * * MySQL:**5.5/5.6/5.7/8.0**
         * * SQL Server:**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:**9.4/10.0/11.0/12.0/13.0**
         * * MariaDB:**10.3**.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @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 haMode The high availability mode. Valid values:
         * * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
         * * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
         * 
         * @return builder
         * 
         */
        public Builder haMode(@Nullable Output haMode) {
            $.haMode = haMode;
            return this;
        }

        /**
         * @param haMode The high availability mode. Valid values:
         * * **RPO**: Data persistence is preferred. The instance preferentially ensures data reliability to minimize data loss. Use this mode if you have higher requirements on data consistency.
         * * **RTO**: Instance availability is preferred. The instance restores services as soon as possible to ensure availability. Use this mode if you have higher requirements on service availability.
         * 
         * @return builder
         * 
         */
        public Builder haMode(String haMode) {
            return haMode(Output.of(haMode));
        }

        /**
         * @param instanceNetworkType The network type of the instance. Valid values:
         * * **Classic**: Classic Network
         * * **VPC**: VPC.
         * 
         * @return builder
         * 
         */
        public Builder instanceNetworkType(@Nullable Output instanceNetworkType) {
            $.instanceNetworkType = instanceNetworkType;
            return this;
        }

        /**
         * @param instanceNetworkType The network type of the instance. Valid values:
         * * **Classic**: Classic Network
         * * **VPC**: VPC.
         * 
         * @return builder
         * 
         */
        public Builder instanceNetworkType(String instanceNetworkType) {
            return instanceNetworkType(Output.of(instanceNetworkType));
        }

        /**
         * @param maintainTime The maintainable time period of the instance. Format: <I> HH:mm</I> Z-<I> HH:mm</I> Z(UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainTime(@Nullable Output maintainTime) {
            $.maintainTime = maintainTime;
            return this;
        }

        /**
         * @param maintainTime The maintainable time period of the instance. Format: <I> HH:mm</I> Z-<I> HH:mm</I> Z(UTC time).
         * 
         * @return builder
         * 
         */
        public Builder maintainTime(String maintainTime) {
            return maintainTime(Output.of(maintainTime));
        }

        /**
         * @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(RdsCloneDbInstanceParameterArgs... parameters) {
            return parameters(List.of(parameters));
        }

        /**
         * @param password The password of the certificate.
         * 
         * > **NOTE:** This parameter is available only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder password(@Nullable Output password) {
            $.password = password;
            return this;
        }

        /**
         * @param password The password of the certificate.
         * 
         * > **NOTE:** This parameter is available only when the instance runs SQL Server 2019 SE or an Enterprise Edition of SQL Server.
         * 
         * @return builder
         * 
         */
        public Builder password(String password) {
            return password(Output.of(password));
        }

        /**
         * @param paymentType The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(Output paymentType) {
            $.paymentType = paymentType;
            return this;
        }

        /**
         * @param paymentType The billing method of the new instance. Valid values: `PayAsYouGo` and `Subscription` and `Serverless`.
         * 
         * @return builder
         * 
         */
        public Builder paymentType(String paymentType) {
            return paymentType(Output.of(paymentType));
        }

        /**
         * @param period The period. Valid values: `Month`, `Year`.
         * 
         * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the period parameter.
         * 
         * @return builder
         * 
         */
        public Builder period(@Nullable Output period) {
            $.period = period;
            return this;
        }

        /**
         * @param period The period. Valid values: `Month`, `Year`.
         * 
         * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the period parameter.
         * 
         * @return builder
         * 
         */
        public Builder period(String period) {
            return period(Output.of(period));
        }

        /**
         * @param pgHbaConfs The details of the AD domain.See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(@Nullable Output> pgHbaConfs) {
            $.pgHbaConfs = pgHbaConfs;
            return this;
        }

        /**
         * @param pgHbaConfs The details of the AD domain.See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(List pgHbaConfs) {
            return pgHbaConfs(Output.of(pgHbaConfs));
        }

        /**
         * @param pgHbaConfs The details of the AD domain.See `pg_hba_conf` below.
         * 
         * @return builder
         * 
         */
        public Builder pgHbaConfs(RdsCloneDbInstancePgHbaConfArgs... pgHbaConfs) {
            return pgHbaConfs(List.of(pgHbaConfs));
        }

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

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

        /**
         * @param privateIpAddress The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddress(@Nullable Output privateIpAddress) {
            $.privateIpAddress = privateIpAddress;
            return this;
        }

        /**
         * @param privateIpAddress The intranet IP address of the new instance must be within the specified vSwitch IP address range. By default, the system automatically allocates by using **VPCId** and **VSwitchId**.
         * 
         * @return builder
         * 
         */
        public Builder privateIpAddress(String privateIpAddress) {
            return privateIpAddress(Output.of(privateIpAddress));
        }

        /**
         * @param privateKey The file that contains the private key used for TDE.
         * 
         * @return builder
         * 
         */
        public Builder privateKey(@Nullable Output privateKey) {
            $.privateKey = privateKey;
            return this;
        }

        /**
         * @param privateKey The file that contains the private key used for TDE.
         * 
         * @return builder
         * 
         */
        public Builder privateKey(String privateKey) {
            return privateKey(Output.of(privateKey));
        }

        /**
         * @param releasedKeepPolicy The released keep policy.
         * 
         * @return builder
         * 
         */
        public Builder releasedKeepPolicy(@Nullable Output releasedKeepPolicy) {
            $.releasedKeepPolicy = releasedKeepPolicy;
            return this;
        }

        /**
         * @param releasedKeepPolicy The released keep policy.
         * 
         * @return builder
         * 
         */
        public Builder releasedKeepPolicy(String releasedKeepPolicy) {
            return releasedKeepPolicy(Output.of(releasedKeepPolicy));
        }

        /**
         * @param replicationAcl This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
         * 
         * @return builder
         * 
         */
        public Builder replicationAcl(@Nullable Output replicationAcl) {
            $.replicationAcl = replicationAcl;
            return this;
        }

        /**
         * @param replicationAcl This parameter is only supported by the RDS PostgreSQL cloud disk version, indicating the authentication method of the replication permission. It is only allowed when the public key of the client certificate authority is enabled. Valid values: `cert` and `perfer` and `verify-ca` and `verify-full (supported by RDS PostgreSQL above 12)`.
         * 
         * @return builder
         * 
         */
        public Builder replicationAcl(String replicationAcl) {
            return replicationAcl(Output.of(replicationAcl));
        }

        /**
         * @param resourceGroupId The resource group id.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupId(@Nullable Output resourceGroupId) {
            $.resourceGroupId = resourceGroupId;
            return this;
        }

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

        /**
         * @param restoreTable Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder restoreTable(@Nullable Output restoreTable) {
            $.restoreTable = restoreTable;
            return this;
        }

        /**
         * @param restoreTable Specifies whether to restore only the databases and tables that you specify. The value 1 specifies to restore only the specified databases and tables. If you do not want to restore only the specified databases or tables, you can choose not to specify this parameter.
         * 
         * @return builder
         * 
         */
        public Builder restoreTable(String restoreTable) {
            return restoreTable(Output.of(restoreTable));
        }

        /**
         * @param restoreTime The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * @return builder
         * 
         */
        public Builder restoreTime(@Nullable Output restoreTime) {
            $.restoreTime = restoreTime;
            return this;
        }

        /**
         * @param restoreTime The point in time to which you want to restore the data of the original instance. The point in time must fall within the specified log backup retention period. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * @return builder
         * 
         */
        public Builder restoreTime(String restoreTime) {
            return restoreTime(Output.of(restoreTime));
        }

        /**
         * @param roleArn The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account.
         * 
         * > **NOTE:** This parameter is available only when the instance runs MySQL.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(@Nullable Output roleArn) {
            $.roleArn = roleArn;
            return this;
        }

        /**
         * @param roleArn The Alibaba Cloud Resource Name (ARN) of a RAM role. A RAM role is a virtual RAM identity that you can create within your Alibaba Cloud account.
         * 
         * > **NOTE:** This parameter is available only when the instance runs MySQL.
         * 
         * @return builder
         * 
         */
        public Builder roleArn(String roleArn) {
            return roleArn(Output.of(roleArn));
        }

        /**
         * @param securityIps The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
         * * IP address form, for example: 10.23.12.24.
         * * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
         * 
         * > **NOTE:** each instance can add up to 1000 IP addresses or IP segments, that is, the total number of IP addresses or IP segments in all IP whitelist groups cannot exceed 1000. When there are more IP addresses, it is recommended to merge them into IP segments, for example, 10.23.12.0/24.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(@Nullable Output> securityIps) {
            $.securityIps = securityIps;
            return this;
        }

        /**
         * @param securityIps The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
         * * IP address form, for example: 10.23.12.24.
         * * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
         * 
         * > **NOTE:** each instance can add up to 1000 IP addresses or IP segments, that is, the total number of IP addresses or IP segments in all IP whitelist groups cannot exceed 1000. When there are more IP addresses, it is recommended to merge them into IP segments, for example, 10.23.12.0/24.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(List securityIps) {
            return securityIps(Output.of(securityIps));
        }

        /**
         * @param securityIps The IP address whitelist of the instance. Separate multiple IP addresses with commas (,) and cannot be repeated. The following two formats are supported:
         * * IP address form, for example: 10.23.12.24.
         * * CIDR format, for example, 10.23.12.0/24 (no Inter-Domain Routing, 24 indicates the length of the prefix in the address, ranging from 1 to 32).
         * 
         * > **NOTE:** each instance can add up to 1000 IP addresses or IP segments, that is, the total number of IP addresses or IP segments in all IP whitelist groups cannot exceed 1000. When there are more IP addresses, it is recommended to merge them into IP segments, for example, 10.23.12.0/24.
         * 
         * @return builder
         * 
         */
        public Builder securityIps(String... securityIps) {
            return securityIps(List.of(securityIps));
        }

        /**
         * @param serverCert This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder serverCert(@Nullable Output serverCert) {
            $.serverCert = serverCert;
            return this;
        }

        /**
         * @param serverCert This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the content of the server certificate. If the CAType value is custom, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder serverCert(String serverCert) {
            return serverCert(Output.of(serverCert));
        }

        /**
         * @param serverKey This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
         * 
         * @return builder
         * 
         */
        public Builder serverKey(@Nullable Output serverKey) {
            $.serverKey = serverKey;
            return this;
        }

        /**
         * @param serverKey This parameter is only supported by the RDS PostgreSQL cloud disk version. It indicates the private key of the server certificate. If the value of CAType is custom, this parameter must be configured.
         * 
         * @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 MySQL 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 MySQL 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 MySQL instance.See `serverless_config` below.
         * 
         * @return builder
         * 
         */
        public Builder serverlessConfigs(RdsCloneDbInstanceServerlessConfigArgs... serverlessConfigs) {
            return serverlessConfigs(List.of(serverlessConfigs));
        }

        /**
         * @param sourceBiz The source biz.
         * 
         * @return builder
         * 
         */
        public Builder sourceBiz(@Nullable Output sourceBiz) {
            $.sourceBiz = sourceBiz;
            return this;
        }

        /**
         * @param sourceBiz The source biz.
         * 
         * @return builder
         * 
         */
        public Builder sourceBiz(String sourceBiz) {
            return sourceBiz(Output.of(sourceBiz));
        }

        /**
         * @param sourceDbInstanceId The source db instance id.
         * 
         * @return builder
         * 
         */
        public Builder sourceDbInstanceId(Output sourceDbInstanceId) {
            $.sourceDbInstanceId = sourceDbInstanceId;
            return this;
        }

        /**
         * @param sourceDbInstanceId The source db instance id.
         * 
         * @return builder
         * 
         */
        public Builder sourceDbInstanceId(String sourceDbInstanceId) {
            return sourceDbInstanceId(Output.of(sourceDbInstanceId));
        }

        /**
         * @param sslEnabled Enable or disable SSL. Valid values: `0` and `1`.
         * 
         * @return builder
         * 
         */
        public Builder sslEnabled(@Nullable Output sslEnabled) {
            $.sslEnabled = sslEnabled;
            return this;
        }

        /**
         * @param sslEnabled Enable or disable SSL. Valid values: `0` and `1`.
         * 
         * @return builder
         * 
         */
        public Builder sslEnabled(Integer sslEnabled) {
            return sslEnabled(Output.of(sslEnabled));
        }

        /**
         * @param switchTime The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * @return builder
         * 
         */
        public Builder switchTime(@Nullable Output switchTime) {
            $.switchTime = switchTime;
            return this;
        }

        /**
         * @param switchTime The time at which you want to apply the specification changes. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.
         * 
         * @return builder
         * 
         */
        public Builder switchTime(String switchTime) {
            return switchTime(Output.of(switchTime));
        }

        /**
         * @param syncMode [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
         * * **Sync**: strong synchronization
         * * **Semi-sync**: Semi-synchronous
         * * **Async**: asynchronous
         * 
         * > **NOTE:** SQL Server 2017 cluster version is currently not supported.
         * 
         * @return builder
         * 
         */
        public Builder syncMode(@Nullable Output syncMode) {
            $.syncMode = syncMode;
            return this;
        }

        /**
         * @param syncMode [The data replication mode](https://www.alibabacloud.com/help/doc-detail/96055.htm). Valid values:
         * * **Sync**: strong synchronization
         * * **Semi-sync**: Semi-synchronous
         * * **Async**: asynchronous
         * 
         * > **NOTE:** SQL Server 2017 cluster version is currently not supported.
         * 
         * @return builder
         * 
         */
        public Builder syncMode(String syncMode) {
            return syncMode(Output.of(syncMode));
        }

        /**
         * @param tableMeta The information about the databases and tables that you want to restore. Format:
         * [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
         * 
         * @return builder
         * 
         */
        public Builder tableMeta(@Nullable Output tableMeta) {
            $.tableMeta = tableMeta;
            return this;
        }

        /**
         * @param tableMeta The information about the databases and tables that you want to restore. Format:
         * [{"type":"db","name":"The original name of Database 1","newname":"The new name of Database 1","tables":[{"type":"table","name":"The original name of Table 1 in Database 1","newname":"The new name of Table 1 in Database 1"},{"type":"table","name":"The original name of Table 2 in Database 1","newname":"The new name of Table 2 in Database 1"}]},{"type":"db","name":"The original name of Database 2","newname":"The new name of Database 2","tables":[{"type":"table","name":"The original name of Table 1 in Database 2","newname":"The new name of Table 1 in Database 2"},{"type":"table","name":"The original name of Table 2 in Database 2","newname":"The new name of Table 2 in Database 2"}]}]
         * 
         * @return builder
         * 
         */
        public Builder tableMeta(String tableMeta) {
            return tableMeta(Output.of(tableMeta));
        }

        /**
         * @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 Specifies whether to enable TDE. Valid values:
         * * Enabled
         * * Disabled
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(@Nullable Output tdeStatus) {
            $.tdeStatus = tdeStatus;
            return this;
        }

        /**
         * @param tdeStatus Specifies whether to enable TDE. Valid values:
         * * Enabled
         * * Disabled
         * 
         * @return builder
         * 
         */
        public Builder tdeStatus(String tdeStatus) {
            return tdeStatus(Output.of(tdeStatus));
        }

        /**
         * @param usedTime The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
         * * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
         * * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
         * 
         * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the used_time parameter.
         * 
         * @return builder
         * 
         */
        public Builder usedTime(@Nullable Output usedTime) {
            $.usedTime = usedTime;
            return this;
        }

        /**
         * @param usedTime The subscription period of the new instance. This parameter takes effect only when you select the subscription billing method for the new instance. Valid values:
         * * If you set the `Period` parameter to Year, the value of the UsedTime parameter ranges from 1 to 3.
         * * If you set the `Period` parameter to Month, the value of the UsedTime parameter ranges from 1 to 9.
         * 
         * > **NOTE:** If you set the payment_type parameter to Subscription, you must specify the used_time parameter.
         * 
         * @return builder
         * 
         */
        public Builder usedTime(Integer usedTime) {
            return usedTime(Output.of(usedTime));
        }

        /**
         * @param vpcId The ID of the VPC to which the new instance belongs.
         * 
         * > **NOTE:** Make sure that the VPC resides in the specified region.
         * 
         * @return builder
         * 
         */
        public Builder vpcId(@Nullable Output vpcId) {
            $.vpcId = vpcId;
            return this;
        }

        /**
         * @param vpcId The ID of the VPC to which the new instance belongs.
         * 
         * > **NOTE:** Make sure that the VPC resides in the specified region.
         * 
         * @return builder
         * 
         */
        public Builder vpcId(String vpcId) {
            return vpcId(Output.of(vpcId));
        }

        /**
         * @param vswitchId The ID of the vSwitch associated with the specified VPC. If there are multiple vswitches, separate them with commas. The first vswitch is a primary zone switch and the query only returns that vswitch. If there are multiple vswitches, do not perform `vswitch_id` check.
         * 
         * > **NOTE:** Make sure that the vSwitch belongs to the specified VPC and region.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(@Nullable Output vswitchId) {
            $.vswitchId = vswitchId;
            return this;
        }

        /**
         * @param vswitchId The ID of the vSwitch associated with the specified VPC. If there are multiple vswitches, separate them with commas. The first vswitch is a primary zone switch and the query only returns that vswitch. If there are multiple vswitches, do not perform `vswitch_id` check.
         * 
         * > **NOTE:** Make sure that the vSwitch belongs to the specified VPC and region.
         * 
         * @return builder
         * 
         */
        public Builder vswitchId(String vswitchId) {
            return vswitchId(Output.of(vswitchId));
        }

        /**
         * @param zoneId The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/help/en/rds/developer-reference/api-rds-2014-08-15-describeregions) operation to query the most recent region list.
         * 
         * @return builder
         * 
         */
        public Builder zoneId(@Nullable Output zoneId) {
            $.zoneId = zoneId;
            return this;
        }

        /**
         * @param zoneId The ID of the zone to which the new instance belongs. You can call the [DescribeRegions](https://www.alibabacloud.com/help/en/rds/developer-reference/api-rds-2014-08-15-describeregions) operation to query the most recent region list.
         * 
         * @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));
        }

        /**
         * @param zoneIdSlaveB The region ID of the log instance if you create a log 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.
         * 
         * > **NOTE:** The default value of this parameter is the ID of the zone to which the original instance belongs.
         * 
         * @return builder
         * 
         */
        public Builder zoneIdSlaveB(@Nullable Output zoneIdSlaveB) {
            $.zoneIdSlaveB = zoneIdSlaveB;
            return this;
        }

        /**
         * @param zoneIdSlaveB The region ID of the log instance if you create a log 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.
         * 
         * > **NOTE:** The default value of this parameter is the ID of the zone to which the original instance belongs.
         * 
         * @return builder
         * 
         */
        public Builder zoneIdSlaveB(String zoneIdSlaveB) {
            return zoneIdSlaveB(Output.of(zoneIdSlaveB));
        }

        public RdsCloneDbInstanceArgs build() {
            if ($.dbInstanceStorageType == null) {
                throw new MissingRequiredPropertyException("RdsCloneDbInstanceArgs", "dbInstanceStorageType");
            }
            if ($.paymentType == null) {
                throw new MissingRequiredPropertyException("RdsCloneDbInstanceArgs", "paymentType");
            }
            if ($.sourceDbInstanceId == null) {
                throw new MissingRequiredPropertyException("RdsCloneDbInstanceArgs", "sourceDbInstanceId");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy