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

com.pulumi.aws.dax.ClusterArgs Maven / Gradle / Ivy

Go to download

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

The 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.dax;

import com.pulumi.aws.dax.inputs.ClusterServerSideEncryptionArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ClusterArgs Empty = new ClusterArgs();

    /**
     * List of Availability Zones in which the
     * nodes will be created
     * 
     */
    @Import(name="availabilityZones")
    private @Nullable Output> availabilityZones;

    /**
     * @return List of Availability Zones in which the
     * nodes will be created
     * 
     */
    public Optional>> availabilityZones() {
        return Optional.ofNullable(this.availabilityZones);
    }

    /**
     * The type of encryption the
     * cluster's endpoint should support. Valid values are: `NONE` and `TLS`.
     * Default value is `NONE`.
     * 
     */
    @Import(name="clusterEndpointEncryptionType")
    private @Nullable Output clusterEndpointEncryptionType;

    /**
     * @return The type of encryption the
     * cluster's endpoint should support. Valid values are: `NONE` and `TLS`.
     * Default value is `NONE`.
     * 
     */
    public Optional> clusterEndpointEncryptionType() {
        return Optional.ofNullable(this.clusterEndpointEncryptionType);
    }

    /**
     * Group identifier. DAX converts this name to
     * lowercase
     * 
     */
    @Import(name="clusterName", required=true)
    private Output clusterName;

    /**
     * @return Group identifier. DAX converts this name to
     * lowercase
     * 
     */
    public Output clusterName() {
        return this.clusterName;
    }

    /**
     * Description for the cluster
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return Description for the cluster
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * A valid Amazon Resource Name (ARN) that identifies
     * an IAM role. At runtime, DAX will assume this role and use the role's
     * permissions to access DynamoDB on your behalf
     * 
     */
    @Import(name="iamRoleArn", required=true)
    private Output iamRoleArn;

    /**
     * @return A valid Amazon Resource Name (ARN) that identifies
     * an IAM role. At runtime, DAX will assume this role and use the role's
     * permissions to access DynamoDB on your behalf
     * 
     */
    public Output iamRoleArn() {
        return this.iamRoleArn;
    }

    /**
     * Specifies the weekly time range for when
     * maintenance on the cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi`
     * (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example:
     * `sun:05:00-sun:09:00`
     * 
     */
    @Import(name="maintenanceWindow")
    private @Nullable Output maintenanceWindow;

    /**
     * @return Specifies the weekly time range for when
     * maintenance on the cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi`
     * (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example:
     * `sun:05:00-sun:09:00`
     * 
     */
    public Optional> maintenanceWindow() {
        return Optional.ofNullable(this.maintenanceWindow);
    }

    /**
     * The compute and memory capacity of the nodes. See
     * [Nodes](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.concepts.cluster.html#DAX.concepts.nodes) for supported node types
     * 
     */
    @Import(name="nodeType", required=true)
    private Output nodeType;

    /**
     * @return The compute and memory capacity of the nodes. See
     * [Nodes](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.concepts.cluster.html#DAX.concepts.nodes) for supported node types
     * 
     */
    public Output nodeType() {
        return this.nodeType;
    }

    /**
     * An Amazon Resource Name (ARN) of an
     * SNS topic to send DAX notifications to. Example:
     * `arn:aws:sns:us-east-1:012345678999:my_sns_topic`
     * 
     */
    @Import(name="notificationTopicArn")
    private @Nullable Output notificationTopicArn;

    /**
     * @return An Amazon Resource Name (ARN) of an
     * SNS topic to send DAX notifications to. Example:
     * `arn:aws:sns:us-east-1:012345678999:my_sns_topic`
     * 
     */
    public Optional> notificationTopicArn() {
        return Optional.ofNullable(this.notificationTopicArn);
    }

    /**
     * Name of the parameter group to associate
     * with this DAX cluster
     * 
     */
    @Import(name="parameterGroupName")
    private @Nullable Output parameterGroupName;

    /**
     * @return Name of the parameter group to associate
     * with this DAX cluster
     * 
     */
    public Optional> parameterGroupName() {
        return Optional.ofNullable(this.parameterGroupName);
    }

    /**
     * The number of nodes in the DAX cluster. A
     * replication factor of 1 will create a single-node cluster, without any read
     * replicas
     * 
     */
    @Import(name="replicationFactor", required=true)
    private Output replicationFactor;

    /**
     * @return The number of nodes in the DAX cluster. A
     * replication factor of 1 will create a single-node cluster, without any read
     * replicas
     * 
     */
    public Output replicationFactor() {
        return this.replicationFactor;
    }

    /**
     * One or more VPC security groups associated
     * with the cluster
     * 
     */
    @Import(name="securityGroupIds")
    private @Nullable Output> securityGroupIds;

    /**
     * @return One or more VPC security groups associated
     * with the cluster
     * 
     */
    public Optional>> securityGroupIds() {
        return Optional.ofNullable(this.securityGroupIds);
    }

    /**
     * Encrypt at rest options
     * 
     */
    @Import(name="serverSideEncryption")
    private @Nullable Output serverSideEncryption;

    /**
     * @return Encrypt at rest options
     * 
     */
    public Optional> serverSideEncryption() {
        return Optional.ofNullable(this.serverSideEncryption);
    }

    /**
     * Name of the subnet group to be used for the
     * cluster
     * 
     */
    @Import(name="subnetGroupName")
    private @Nullable Output subnetGroupName;

    /**
     * @return Name of the subnet group to be used for the
     * cluster
     * 
     */
    public Optional> subnetGroupName() {
        return Optional.ofNullable(this.subnetGroupName);
    }

    /**
     * A map of tags to assign to the resource. .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 A map of tags to assign to the resource. .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);
    }

    private ClusterArgs() {}

    private ClusterArgs(ClusterArgs $) {
        this.availabilityZones = $.availabilityZones;
        this.clusterEndpointEncryptionType = $.clusterEndpointEncryptionType;
        this.clusterName = $.clusterName;
        this.description = $.description;
        this.iamRoleArn = $.iamRoleArn;
        this.maintenanceWindow = $.maintenanceWindow;
        this.nodeType = $.nodeType;
        this.notificationTopicArn = $.notificationTopicArn;
        this.parameterGroupName = $.parameterGroupName;
        this.replicationFactor = $.replicationFactor;
        this.securityGroupIds = $.securityGroupIds;
        this.serverSideEncryption = $.serverSideEncryption;
        this.subnetGroupName = $.subnetGroupName;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private ClusterArgs $;

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

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

        /**
         * @param availabilityZones List of Availability Zones in which the
         * nodes will be created
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(@Nullable Output> availabilityZones) {
            $.availabilityZones = availabilityZones;
            return this;
        }

        /**
         * @param availabilityZones List of Availability Zones in which the
         * nodes will be created
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(List availabilityZones) {
            return availabilityZones(Output.of(availabilityZones));
        }

        /**
         * @param availabilityZones List of Availability Zones in which the
         * nodes will be created
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(String... availabilityZones) {
            return availabilityZones(List.of(availabilityZones));
        }

        /**
         * @param clusterEndpointEncryptionType The type of encryption the
         * cluster's endpoint should support. Valid values are: `NONE` and `TLS`.
         * Default value is `NONE`.
         * 
         * @return builder
         * 
         */
        public Builder clusterEndpointEncryptionType(@Nullable Output clusterEndpointEncryptionType) {
            $.clusterEndpointEncryptionType = clusterEndpointEncryptionType;
            return this;
        }

        /**
         * @param clusterEndpointEncryptionType The type of encryption the
         * cluster's endpoint should support. Valid values are: `NONE` and `TLS`.
         * Default value is `NONE`.
         * 
         * @return builder
         * 
         */
        public Builder clusterEndpointEncryptionType(String clusterEndpointEncryptionType) {
            return clusterEndpointEncryptionType(Output.of(clusterEndpointEncryptionType));
        }

        /**
         * @param clusterName Group identifier. DAX converts this name to
         * lowercase
         * 
         * @return builder
         * 
         */
        public Builder clusterName(Output clusterName) {
            $.clusterName = clusterName;
            return this;
        }

        /**
         * @param clusterName Group identifier. DAX converts this name to
         * lowercase
         * 
         * @return builder
         * 
         */
        public Builder clusterName(String clusterName) {
            return clusterName(Output.of(clusterName));
        }

        /**
         * @param description Description for the cluster
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description Description for the cluster
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param iamRoleArn A valid Amazon Resource Name (ARN) that identifies
         * an IAM role. At runtime, DAX will assume this role and use the role's
         * permissions to access DynamoDB on your behalf
         * 
         * @return builder
         * 
         */
        public Builder iamRoleArn(Output iamRoleArn) {
            $.iamRoleArn = iamRoleArn;
            return this;
        }

        /**
         * @param iamRoleArn A valid Amazon Resource Name (ARN) that identifies
         * an IAM role. At runtime, DAX will assume this role and use the role's
         * permissions to access DynamoDB on your behalf
         * 
         * @return builder
         * 
         */
        public Builder iamRoleArn(String iamRoleArn) {
            return iamRoleArn(Output.of(iamRoleArn));
        }

        /**
         * @param maintenanceWindow Specifies the weekly time range for when
         * maintenance on the cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi`
         * (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example:
         * `sun:05:00-sun:09:00`
         * 
         * @return builder
         * 
         */
        public Builder maintenanceWindow(@Nullable Output maintenanceWindow) {
            $.maintenanceWindow = maintenanceWindow;
            return this;
        }

        /**
         * @param maintenanceWindow Specifies the weekly time range for when
         * maintenance on the cluster is performed. The format is `ddd:hh24:mi-ddd:hh24:mi`
         * (24H Clock UTC). The minimum maintenance window is a 60 minute period. Example:
         * `sun:05:00-sun:09:00`
         * 
         * @return builder
         * 
         */
        public Builder maintenanceWindow(String maintenanceWindow) {
            return maintenanceWindow(Output.of(maintenanceWindow));
        }

        /**
         * @param nodeType The compute and memory capacity of the nodes. See
         * [Nodes](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.concepts.cluster.html#DAX.concepts.nodes) for supported node types
         * 
         * @return builder
         * 
         */
        public Builder nodeType(Output nodeType) {
            $.nodeType = nodeType;
            return this;
        }

        /**
         * @param nodeType The compute and memory capacity of the nodes. See
         * [Nodes](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.concepts.cluster.html#DAX.concepts.nodes) for supported node types
         * 
         * @return builder
         * 
         */
        public Builder nodeType(String nodeType) {
            return nodeType(Output.of(nodeType));
        }

        /**
         * @param notificationTopicArn An Amazon Resource Name (ARN) of an
         * SNS topic to send DAX notifications to. Example:
         * `arn:aws:sns:us-east-1:012345678999:my_sns_topic`
         * 
         * @return builder
         * 
         */
        public Builder notificationTopicArn(@Nullable Output notificationTopicArn) {
            $.notificationTopicArn = notificationTopicArn;
            return this;
        }

        /**
         * @param notificationTopicArn An Amazon Resource Name (ARN) of an
         * SNS topic to send DAX notifications to. Example:
         * `arn:aws:sns:us-east-1:012345678999:my_sns_topic`
         * 
         * @return builder
         * 
         */
        public Builder notificationTopicArn(String notificationTopicArn) {
            return notificationTopicArn(Output.of(notificationTopicArn));
        }

        /**
         * @param parameterGroupName Name of the parameter group to associate
         * with this DAX cluster
         * 
         * @return builder
         * 
         */
        public Builder parameterGroupName(@Nullable Output parameterGroupName) {
            $.parameterGroupName = parameterGroupName;
            return this;
        }

        /**
         * @param parameterGroupName Name of the parameter group to associate
         * with this DAX cluster
         * 
         * @return builder
         * 
         */
        public Builder parameterGroupName(String parameterGroupName) {
            return parameterGroupName(Output.of(parameterGroupName));
        }

        /**
         * @param replicationFactor The number of nodes in the DAX cluster. A
         * replication factor of 1 will create a single-node cluster, without any read
         * replicas
         * 
         * @return builder
         * 
         */
        public Builder replicationFactor(Output replicationFactor) {
            $.replicationFactor = replicationFactor;
            return this;
        }

        /**
         * @param replicationFactor The number of nodes in the DAX cluster. A
         * replication factor of 1 will create a single-node cluster, without any read
         * replicas
         * 
         * @return builder
         * 
         */
        public Builder replicationFactor(Integer replicationFactor) {
            return replicationFactor(Output.of(replicationFactor));
        }

        /**
         * @param securityGroupIds One or more VPC security groups associated
         * with the cluster
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(@Nullable Output> securityGroupIds) {
            $.securityGroupIds = securityGroupIds;
            return this;
        }

        /**
         * @param securityGroupIds One or more VPC security groups associated
         * with the cluster
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(List securityGroupIds) {
            return securityGroupIds(Output.of(securityGroupIds));
        }

        /**
         * @param securityGroupIds One or more VPC security groups associated
         * with the cluster
         * 
         * @return builder
         * 
         */
        public Builder securityGroupIds(String... securityGroupIds) {
            return securityGroupIds(List.of(securityGroupIds));
        }

        /**
         * @param serverSideEncryption Encrypt at rest options
         * 
         * @return builder
         * 
         */
        public Builder serverSideEncryption(@Nullable Output serverSideEncryption) {
            $.serverSideEncryption = serverSideEncryption;
            return this;
        }

        /**
         * @param serverSideEncryption Encrypt at rest options
         * 
         * @return builder
         * 
         */
        public Builder serverSideEncryption(ClusterServerSideEncryptionArgs serverSideEncryption) {
            return serverSideEncryption(Output.of(serverSideEncryption));
        }

        /**
         * @param subnetGroupName Name of the subnet group to be used for the
         * cluster
         * 
         * @return builder
         * 
         */
        public Builder subnetGroupName(@Nullable Output subnetGroupName) {
            $.subnetGroupName = subnetGroupName;
            return this;
        }

        /**
         * @param subnetGroupName Name of the subnet group to be used for the
         * cluster
         * 
         * @return builder
         * 
         */
        public Builder subnetGroupName(String subnetGroupName) {
            return subnetGroupName(Output.of(subnetGroupName));
        }

        /**
         * @param tags A map of tags to assign to the resource. .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 A map of tags to assign to the resource. .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));
        }

        public ClusterArgs build() {
            if ($.clusterName == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "clusterName");
            }
            if ($.iamRoleArn == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "iamRoleArn");
            }
            if ($.nodeType == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "nodeType");
            }
            if ($.replicationFactor == null) {
                throw new MissingRequiredPropertyException("ClusterArgs", "replicationFactor");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy