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

com.pulumi.aws.mq.BrokerArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

There is a newer version: 6.72.0
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.aws.mq;

import com.pulumi.aws.mq.inputs.BrokerConfigurationArgs;
import com.pulumi.aws.mq.inputs.BrokerEncryptionOptionsArgs;
import com.pulumi.aws.mq.inputs.BrokerLdapServerMetadataArgs;
import com.pulumi.aws.mq.inputs.BrokerLogsArgs;
import com.pulumi.aws.mq.inputs.BrokerMaintenanceWindowStartTimeArgs;
import com.pulumi.aws.mq.inputs.BrokerUserArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final BrokerArgs Empty = new BrokerArgs();

    /**
     * Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
     * 
     */
    @Import(name="applyImmediately")
    private @Nullable Output applyImmediately;

    /**
     * @return Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
     * 
     */
    public Optional> applyImmediately() {
        return Optional.ofNullable(this.applyImmediately);
    }

    /**
     * Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engine_type` `RabbitMQ`.
     * 
     */
    @Import(name="authenticationStrategy")
    private @Nullable Output authenticationStrategy;

    /**
     * @return Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engine_type` `RabbitMQ`.
     * 
     */
    public Optional> authenticationStrategy() {
        return Optional.ofNullable(this.authenticationStrategy);
    }

    /**
     * Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
     * 
     */
    @Import(name="autoMinorVersionUpgrade")
    private @Nullable Output autoMinorVersionUpgrade;

    /**
     * @return Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
     * 
     */
    public Optional> autoMinorVersionUpgrade() {
        return Optional.ofNullable(this.autoMinorVersionUpgrade);
    }

    /**
     * Name of the broker.
     * 
     */
    @Import(name="brokerName")
    private @Nullable Output brokerName;

    /**
     * @return Name of the broker.
     * 
     */
    public Optional> brokerName() {
        return Optional.ofNullable(this.brokerName);
    }

    /**
     * Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
     * 
     */
    @Import(name="configuration")
    private @Nullable Output configuration;

    /**
     * @return Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
     * 
     */
    public Optional> configuration() {
        return Optional.ofNullable(this.configuration);
    }

    /**
     * Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
     * 
     */
    @Import(name="dataReplicationMode")
    private @Nullable Output dataReplicationMode;

    /**
     * @return Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
     * 
     */
    public Optional> dataReplicationMode() {
        return Optional.ofNullable(this.dataReplicationMode);
    }

    /**
     * The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `data_replication_mode` is `CRDR`.
     * 
     */
    @Import(name="dataReplicationPrimaryBrokerArn")
    private @Nullable Output dataReplicationPrimaryBrokerArn;

    /**
     * @return The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `data_replication_mode` is `CRDR`.
     * 
     */
    public Optional> dataReplicationPrimaryBrokerArn() {
        return Optional.ofNullable(this.dataReplicationPrimaryBrokerArn);
    }

    /**
     * Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
     * 
     */
    @Import(name="deploymentMode")
    private @Nullable Output deploymentMode;

    /**
     * @return Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
     * 
     */
    public Optional> deploymentMode() {
        return Optional.ofNullable(this.deploymentMode);
    }

    /**
     * Configuration block containing encryption options. Detailed below.
     * 
     */
    @Import(name="encryptionOptions")
    private @Nullable Output encryptionOptions;

    /**
     * @return Configuration block containing encryption options. Detailed below.
     * 
     */
    public Optional> encryptionOptions() {
        return Optional.ofNullable(this.encryptionOptions);
    }

    /**
     * Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
     * 
     */
    @Import(name="engineType", required=true)
    private Output engineType;

    /**
     * @return Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
     * 
     */
    public Output engineType() {
        return this.engineType;
    }

    /**
     * Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
     * 
     */
    @Import(name="engineVersion", required=true)
    private Output engineVersion;

    /**
     * @return Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
     * 
     */
    public Output engineVersion() {
        return this.engineVersion;
    }

    /**
     * Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
     * 
     */
    @Import(name="hostInstanceType", required=true)
    private Output hostInstanceType;

    /**
     * @return Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
     * 
     */
    public Output hostInstanceType() {
        return this.hostInstanceType;
    }

    /**
     * Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
     * 
     */
    @Import(name="ldapServerMetadata")
    private @Nullable Output ldapServerMetadata;

    /**
     * @return Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
     * 
     */
    public Optional> ldapServerMetadata() {
        return Optional.ofNullable(this.ldapServerMetadata);
    }

    /**
     * Configuration block for the logging configuration of the broker. Detailed below.
     * 
     */
    @Import(name="logs")
    private @Nullable Output logs;

    /**
     * @return Configuration block for the logging configuration of the broker. Detailed below.
     * 
     */
    public Optional> logs() {
        return Optional.ofNullable(this.logs);
    }

    /**
     * Configuration block for the maintenance window start time. Detailed below.
     * 
     */
    @Import(name="maintenanceWindowStartTime")
    private @Nullable Output maintenanceWindowStartTime;

    /**
     * @return Configuration block for the maintenance window start time. Detailed below.
     * 
     */
    public Optional> maintenanceWindowStartTime() {
        return Optional.ofNullable(this.maintenanceWindowStartTime);
    }

    /**
     * Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
     * 
     */
    @Import(name="publiclyAccessible")
    private @Nullable Output publiclyAccessible;

    /**
     * @return Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
     * 
     */
    public Optional> publiclyAccessible() {
        return Optional.ofNullable(this.publiclyAccessible);
    }

    /**
     * List of security group IDs assigned to the broker.
     * 
     */
    @Import(name="securityGroups")
    private @Nullable Output> securityGroups;

    /**
     * @return List of security group IDs assigned to the broker.
     * 
     */
    public Optional>> securityGroups() {
        return Optional.ofNullable(this.securityGroups);
    }

    /**
     * Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
     * 
     */
    @Import(name="storageType")
    private @Nullable Output storageType;

    /**
     * @return Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
     * 
     */
    public Optional> storageType() {
        return Optional.ofNullable(this.storageType);
    }

    /**
     * List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
     * 
     */
    @Import(name="subnetIds")
    private @Nullable Output> subnetIds;

    /**
     * @return List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
     * 
     */
    public Optional>> subnetIds() {
        return Optional.ofNullable(this.subnetIds);
    }

    /**
     * Map of tags to assign to the broker. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Map of tags to assign to the broker. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
     * 
     * The following arguments are optional:
     * 
     */
    @Import(name="users", required=true)
    private Output> users;

    /**
     * @return Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
     * 
     * The following arguments are optional:
     * 
     */
    public Output> users() {
        return this.users;
    }

    private BrokerArgs() {}

    private BrokerArgs(BrokerArgs $) {
        this.applyImmediately = $.applyImmediately;
        this.authenticationStrategy = $.authenticationStrategy;
        this.autoMinorVersionUpgrade = $.autoMinorVersionUpgrade;
        this.brokerName = $.brokerName;
        this.configuration = $.configuration;
        this.dataReplicationMode = $.dataReplicationMode;
        this.dataReplicationPrimaryBrokerArn = $.dataReplicationPrimaryBrokerArn;
        this.deploymentMode = $.deploymentMode;
        this.encryptionOptions = $.encryptionOptions;
        this.engineType = $.engineType;
        this.engineVersion = $.engineVersion;
        this.hostInstanceType = $.hostInstanceType;
        this.ldapServerMetadata = $.ldapServerMetadata;
        this.logs = $.logs;
        this.maintenanceWindowStartTime = $.maintenanceWindowStartTime;
        this.publiclyAccessible = $.publiclyAccessible;
        this.securityGroups = $.securityGroups;
        this.storageType = $.storageType;
        this.subnetIds = $.subnetIds;
        this.tags = $.tags;
        this.users = $.users;
    }

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

    public static final class Builder {
        private BrokerArgs $;

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

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

        /**
         * @param applyImmediately Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder applyImmediately(@Nullable Output applyImmediately) {
            $.applyImmediately = applyImmediately;
            return this;
        }

        /**
         * @param applyImmediately Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder applyImmediately(Boolean applyImmediately) {
            return applyImmediately(Output.of(applyImmediately));
        }

        /**
         * @param authenticationStrategy Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engine_type` `RabbitMQ`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationStrategy(@Nullable Output authenticationStrategy) {
            $.authenticationStrategy = authenticationStrategy;
            return this;
        }

        /**
         * @param authenticationStrategy Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engine_type` `RabbitMQ`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationStrategy(String authenticationStrategy) {
            return authenticationStrategy(Output.of(authenticationStrategy));
        }

        /**
         * @param autoMinorVersionUpgrade Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
         * 
         * @return builder
         * 
         */
        public Builder autoMinorVersionUpgrade(@Nullable Output autoMinorVersionUpgrade) {
            $.autoMinorVersionUpgrade = autoMinorVersionUpgrade;
            return this;
        }

        /**
         * @param autoMinorVersionUpgrade Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
         * 
         * @return builder
         * 
         */
        public Builder autoMinorVersionUpgrade(Boolean autoMinorVersionUpgrade) {
            return autoMinorVersionUpgrade(Output.of(autoMinorVersionUpgrade));
        }

        /**
         * @param brokerName Name of the broker.
         * 
         * @return builder
         * 
         */
        public Builder brokerName(@Nullable Output brokerName) {
            $.brokerName = brokerName;
            return this;
        }

        /**
         * @param brokerName Name of the broker.
         * 
         * @return builder
         * 
         */
        public Builder brokerName(String brokerName) {
            return brokerName(Output.of(brokerName));
        }

        /**
         * @param configuration Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder configuration(@Nullable Output configuration) {
            $.configuration = configuration;
            return this;
        }

        /**
         * @param configuration Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder configuration(BrokerConfigurationArgs configuration) {
            return configuration(Output.of(configuration));
        }

        /**
         * @param dataReplicationMode Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
         * 
         * @return builder
         * 
         */
        public Builder dataReplicationMode(@Nullable Output dataReplicationMode) {
            $.dataReplicationMode = dataReplicationMode;
            return this;
        }

        /**
         * @param dataReplicationMode Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
         * 
         * @return builder
         * 
         */
        public Builder dataReplicationMode(String dataReplicationMode) {
            return dataReplicationMode(Output.of(dataReplicationMode));
        }

        /**
         * @param dataReplicationPrimaryBrokerArn The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `data_replication_mode` is `CRDR`.
         * 
         * @return builder
         * 
         */
        public Builder dataReplicationPrimaryBrokerArn(@Nullable Output dataReplicationPrimaryBrokerArn) {
            $.dataReplicationPrimaryBrokerArn = dataReplicationPrimaryBrokerArn;
            return this;
        }

        /**
         * @param dataReplicationPrimaryBrokerArn The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `data_replication_mode` is `CRDR`.
         * 
         * @return builder
         * 
         */
        public Builder dataReplicationPrimaryBrokerArn(String dataReplicationPrimaryBrokerArn) {
            return dataReplicationPrimaryBrokerArn(Output.of(dataReplicationPrimaryBrokerArn));
        }

        /**
         * @param deploymentMode Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
         * 
         * @return builder
         * 
         */
        public Builder deploymentMode(@Nullable Output deploymentMode) {
            $.deploymentMode = deploymentMode;
            return this;
        }

        /**
         * @param deploymentMode Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
         * 
         * @return builder
         * 
         */
        public Builder deploymentMode(String deploymentMode) {
            return deploymentMode(Output.of(deploymentMode));
        }

        /**
         * @param encryptionOptions Configuration block containing encryption options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder encryptionOptions(@Nullable Output encryptionOptions) {
            $.encryptionOptions = encryptionOptions;
            return this;
        }

        /**
         * @param encryptionOptions Configuration block containing encryption options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder encryptionOptions(BrokerEncryptionOptionsArgs encryptionOptions) {
            return encryptionOptions(Output.of(encryptionOptions));
        }

        /**
         * @param engineType Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
         * 
         * @return builder
         * 
         */
        public Builder engineType(Output engineType) {
            $.engineType = engineType;
            return this;
        }

        /**
         * @param engineType Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
         * 
         * @return builder
         * 
         */
        public Builder engineType(String engineType) {
            return engineType(Output.of(engineType));
        }

        /**
         * @param engineVersion Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @param hostInstanceType Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
         * 
         * @return builder
         * 
         */
        public Builder hostInstanceType(Output hostInstanceType) {
            $.hostInstanceType = hostInstanceType;
            return this;
        }

        /**
         * @param hostInstanceType Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
         * 
         * @return builder
         * 
         */
        public Builder hostInstanceType(String hostInstanceType) {
            return hostInstanceType(Output.of(hostInstanceType));
        }

        /**
         * @param ldapServerMetadata Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
         * 
         * @return builder
         * 
         */
        public Builder ldapServerMetadata(@Nullable Output ldapServerMetadata) {
            $.ldapServerMetadata = ldapServerMetadata;
            return this;
        }

        /**
         * @param ldapServerMetadata Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
         * 
         * @return builder
         * 
         */
        public Builder ldapServerMetadata(BrokerLdapServerMetadataArgs ldapServerMetadata) {
            return ldapServerMetadata(Output.of(ldapServerMetadata));
        }

        /**
         * @param logs Configuration block for the logging configuration of the broker. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder logs(@Nullable Output logs) {
            $.logs = logs;
            return this;
        }

        /**
         * @param logs Configuration block for the logging configuration of the broker. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder logs(BrokerLogsArgs logs) {
            return logs(Output.of(logs));
        }

        /**
         * @param maintenanceWindowStartTime Configuration block for the maintenance window start time. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder maintenanceWindowStartTime(@Nullable Output maintenanceWindowStartTime) {
            $.maintenanceWindowStartTime = maintenanceWindowStartTime;
            return this;
        }

        /**
         * @param maintenanceWindowStartTime Configuration block for the maintenance window start time. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder maintenanceWindowStartTime(BrokerMaintenanceWindowStartTimeArgs maintenanceWindowStartTime) {
            return maintenanceWindowStartTime(Output.of(maintenanceWindowStartTime));
        }

        /**
         * @param publiclyAccessible Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
         * 
         * @return builder
         * 
         */
        public Builder publiclyAccessible(@Nullable Output publiclyAccessible) {
            $.publiclyAccessible = publiclyAccessible;
            return this;
        }

        /**
         * @param publiclyAccessible Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
         * 
         * @return builder
         * 
         */
        public Builder publiclyAccessible(Boolean publiclyAccessible) {
            return publiclyAccessible(Output.of(publiclyAccessible));
        }

        /**
         * @param securityGroups List of security group IDs assigned to the broker.
         * 
         * @return builder
         * 
         */
        public Builder securityGroups(@Nullable Output> securityGroups) {
            $.securityGroups = securityGroups;
            return this;
        }

        /**
         * @param securityGroups List of security group IDs assigned to the broker.
         * 
         * @return builder
         * 
         */
        public Builder securityGroups(List securityGroups) {
            return securityGroups(Output.of(securityGroups));
        }

        /**
         * @param securityGroups List of security group IDs assigned to the broker.
         * 
         * @return builder
         * 
         */
        public Builder securityGroups(String... securityGroups) {
            return securityGroups(List.of(securityGroups));
        }

        /**
         * @param storageType Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
         * 
         * @return builder
         * 
         */
        public Builder storageType(@Nullable Output storageType) {
            $.storageType = storageType;
            return this;
        }

        /**
         * @param storageType Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
         * 
         * @return builder
         * 
         */
        public Builder storageType(String storageType) {
            return storageType(Output.of(storageType));
        }

        /**
         * @param subnetIds List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
         * 
         * @return builder
         * 
         */
        public Builder subnetIds(@Nullable Output> subnetIds) {
            $.subnetIds = subnetIds;
            return this;
        }

        /**
         * @param subnetIds List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
         * 
         * @return builder
         * 
         */
        public Builder subnetIds(List subnetIds) {
            return subnetIds(Output.of(subnetIds));
        }

        /**
         * @param subnetIds List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
         * 
         * @return builder
         * 
         */
        public Builder subnetIds(String... subnetIds) {
            return subnetIds(List.of(subnetIds));
        }

        /**
         * @param tags Map of tags to assign to the broker. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Map of tags to assign to the broker. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param users Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder users(Output> users) {
            $.users = users;
            return this;
        }

        /**
         * @param users Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder users(List users) {
            return users(Output.of(users));
        }

        /**
         * @param users Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder users(BrokerUserArgs... users) {
            return users(List.of(users));
        }

        public BrokerArgs build() {
            if ($.engineType == null) {
                throw new MissingRequiredPropertyException("BrokerArgs", "engineType");
            }
            if ($.engineVersion == null) {
                throw new MissingRequiredPropertyException("BrokerArgs", "engineVersion");
            }
            if ($.hostInstanceType == null) {
                throw new MissingRequiredPropertyException("BrokerArgs", "hostInstanceType");
            }
            if ($.users == null) {
                throw new MissingRequiredPropertyException("BrokerArgs", "users");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy