/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the dax-2017-04-19.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.DAX.Model
{
///
/// Container for the parameters to the CreateCluster operation.
/// Creates a DAX cluster. All nodes in the cluster run the same DAX caching software.
///
public partial class CreateClusterRequest : AmazonDAXRequest
{
private List _availabilityZones = new List();
private ClusterEndpointEncryptionType _clusterEndpointEncryptionType;
private string _clusterName;
private string _description;
private string _iamRoleArn;
private string _nodeType;
private string _notificationTopicArn;
private string _parameterGroupName;
private string _preferredMaintenanceWindow;
private int? _replicationFactor;
private List _securityGroupIds = new List();
private SSESpecification _sseSpecification;
private string _subnetGroupName;
private List _tags = new List();
///
/// Gets and sets the property AvailabilityZones.
///
/// The Availability Zones (AZs) in which the cluster nodes will reside after the cluster
/// has been created or updated. If provided, the length of this list must equal the ReplicationFactor
/// parameter. If you omit this parameter, DAX will spread the nodes across Availability
/// Zones for the highest availability.
///
///
public List AvailabilityZones
{
get { return this._availabilityZones; }
set { this._availabilityZones = value; }
}
// Check to see if AvailabilityZones property is set
internal bool IsSetAvailabilityZones()
{
return this._availabilityZones != null && this._availabilityZones.Count > 0;
}
///
/// Gets and sets the property ClusterEndpointEncryptionType.
///
/// The type of encryption the cluster's endpoint should support. Values are:
///
/// -
///
///
NONE
for no encryption
///
/// -
///
///
TLS
for Transport Layer Security
///
///
///
public ClusterEndpointEncryptionType ClusterEndpointEncryptionType
{
get { return this._clusterEndpointEncryptionType; }
set { this._clusterEndpointEncryptionType = value; }
}
// Check to see if ClusterEndpointEncryptionType property is set
internal bool IsSetClusterEndpointEncryptionType()
{
return this._clusterEndpointEncryptionType != null;
}
///
/// Gets and sets the property ClusterName.
///
/// The cluster identifier. This parameter is stored as a lowercase string.
///
///
///
/// Constraints:
///
/// -
///
/// A name must contain from 1 to 20 alphanumeric characters or hyphens.
///
///
-
///
/// The first character must be a letter.
///
///
-
///
/// A name cannot end with a hyphen or contain two consecutive hyphens.
///
///
///
[AWSProperty(Required=true)]
public string ClusterName
{
get { return this._clusterName; }
set { this._clusterName = value; }
}
// Check to see if ClusterName property is set
internal bool IsSetClusterName()
{
return this._clusterName != null;
}
///
/// Gets and sets the property Description.
///
/// A description of the cluster.
///
///
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property 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.
///
///
[AWSProperty(Required=true)]
public string IamRoleArn
{
get { return this._iamRoleArn; }
set { this._iamRoleArn = value; }
}
// Check to see if IamRoleArn property is set
internal bool IsSetIamRoleArn()
{
return this._iamRoleArn != null;
}
///
/// Gets and sets the property NodeType.
///
/// The compute and memory capacity of the nodes in the cluster.
///
///
[AWSProperty(Required=true)]
public string NodeType
{
get { return this._nodeType; }
set { this._nodeType = value; }
}
// Check to see if NodeType property is set
internal bool IsSetNodeType()
{
return this._nodeType != null;
}
///
/// Gets and sets the property NotificationTopicArn.
///
/// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications will
/// be sent.
///
///
///
/// The Amazon SNS topic owner must be same as the DAX cluster owner.
///
///
///
public string NotificationTopicArn
{
get { return this._notificationTopicArn; }
set { this._notificationTopicArn = value; }
}
// Check to see if NotificationTopicArn property is set
internal bool IsSetNotificationTopicArn()
{
return this._notificationTopicArn != null;
}
///
/// Gets and sets the property ParameterGroupName.
///
/// The parameter group to be associated with the DAX cluster.
///
///
public string ParameterGroupName
{
get { return this._parameterGroupName; }
set { this._parameterGroupName = value; }
}
// Check to see if ParameterGroupName property is set
internal bool IsSetParameterGroupName()
{
return this._parameterGroupName != null;
}
///
/// Gets and sets the property PreferredMaintenanceWindow.
///
/// Specifies the weekly time range during which maintenance on the DAX cluster is performed.
/// It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).
/// The minimum maintenance window is a 60 minute period. Valid values for ddd
/// are:
///
/// -
///
///
sun
///
/// -
///
///
mon
///
/// -
///
///
tue
///
/// -
///
///
wed
///
/// -
///
///
thu
///
/// -
///
///
fri
///
/// -
///
///
sat
///
///
///
/// Example: sun:05:00-sun:09:00
///
///
///
/// If you don't specify a preferred maintenance window when you create or modify a cache
/// cluster, DAX assigns a 60-minute maintenance window on a randomly selected day of
/// the week.
///
///
///
public string PreferredMaintenanceWindow
{
get { return this._preferredMaintenanceWindow; }
set { this._preferredMaintenanceWindow = value; }
}
// Check to see if PreferredMaintenanceWindow property is set
internal bool IsSetPreferredMaintenanceWindow()
{
return this._preferredMaintenanceWindow != null;
}
///
/// Gets and sets the property ReplicationFactor.
///
/// The number of nodes in the DAX cluster. A replication factor of 1 will create a single-node
/// cluster, without any read replicas. For additional fault tolerance, you can create
/// a multiple node cluster with one or more read replicas. To do this, set ReplicationFactor
/// to a number between 3 (one primary and two read replicas) and 10 (one primary and
/// nine read replicas). If the AvailabilityZones
parameter is provided,
/// its length must equal the ReplicationFactor
.
///
///
///
/// AWS recommends that you have at least two read replicas per cluster.
///
///
///
[AWSProperty(Required=true)]
public int ReplicationFactor
{
get { return this._replicationFactor.GetValueOrDefault(); }
set { this._replicationFactor = value; }
}
// Check to see if ReplicationFactor property is set
internal bool IsSetReplicationFactor()
{
return this._replicationFactor.HasValue;
}
///
/// Gets and sets the property SecurityGroupIds.
///
/// A list of security group IDs to be assigned to each node in the DAX cluster. (Each
/// of the security group ID is system-generated.)
///
///
///
/// If this parameter is not specified, DAX assigns the default VPC security group to
/// each node.
///
///
public List SecurityGroupIds
{
get { return this._securityGroupIds; }
set { this._securityGroupIds = value; }
}
// Check to see if SecurityGroupIds property is set
internal bool IsSetSecurityGroupIds()
{
return this._securityGroupIds != null && this._securityGroupIds.Count > 0;
}
///
/// Gets and sets the property SSESpecification.
///
/// Represents the settings used to enable server-side encryption on the cluster.
///
///
public SSESpecification SSESpecification
{
get { return this._sseSpecification; }
set { this._sseSpecification = value; }
}
// Check to see if SSESpecification property is set
internal bool IsSetSSESpecification()
{
return this._sseSpecification != null;
}
///
/// Gets and sets the property SubnetGroupName.
///
/// The name of the subnet group to be used for the replication group.
///
///
///
/// DAX clusters can only run in an Amazon VPC environment. All of the subnets that you
/// specify in a subnet group must exist in the same VPC.
///
///
///
public string SubnetGroupName
{
get { return this._subnetGroupName; }
set { this._subnetGroupName = value; }
}
// Check to see if SubnetGroupName property is set
internal bool IsSetSubnetGroupName()
{
return this._subnetGroupName != null;
}
///
/// Gets and sets the property Tags.
///
/// A set of tags to associate with the DAX cluster.
///
///
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
}
}