/*
* 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 mq-2017-11-27.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.MQ.Model
{
///
/// Container for the parameters to the CreateBroker operation.
/// Creates a broker. Note: This API is asynchronous.
///
///
///
/// To create a broker, you must either use the AmazonMQFullAccess IAM policy or include
/// the following EC2 permissions in your IAM policy.
///
/// -
///
/// ec2:CreateNetworkInterface
///
///
///
/// This permission is required to allow Amazon MQ to create an elastic network interface
/// (ENI) on behalf of your account.
///
///
-
///
/// ec2:CreateNetworkInterfacePermission
///
///
///
/// This permission is required to attach the ENI to the broker instance.
///
///
-
///
/// ec2:DeleteNetworkInterface
///
///
-
///
/// ec2:DeleteNetworkInterfacePermission
///
///
-
///
/// ec2:DetachNetworkInterface
///
///
-
///
/// ec2:DescribeInternetGateways
///
///
-
///
/// ec2:DescribeNetworkInterfaces
///
///
-
///
/// ec2:DescribeNetworkInterfacePermissions
///
///
-
///
/// ec2:DescribeRouteTables
///
///
-
///
/// ec2:DescribeSecurityGroups
///
///
-
///
/// ec2:DescribeSubnets
///
///
-
///
/// ec2:DescribeVpcs
///
///
///
/// For more information, see Create
/// an IAM User and Get Your Amazon Web Services Credentials and Never
/// Modify or Delete the Amazon MQ Elastic Network Interface in the Amazon MQ Developer
/// Guide.
///
///
public partial class CreateBrokerRequest : AmazonMQRequest
{
private AuthenticationStrategy _authenticationStrategy;
private bool? _autoMinorVersionUpgrade;
private string _brokerName;
private ConfigurationId _configuration;
private string _creatorRequestId;
private DataReplicationMode _dataReplicationMode;
private string _dataReplicationPrimaryBrokerArn;
private DeploymentMode _deploymentMode;
private EncryptionOptions _encryptionOptions;
private EngineType _engineType;
private string _engineVersion;
private string _hostInstanceType;
private LdapServerMetadataInput _ldapServerMetadata;
private Logs _logs;
private WeeklyStartTime _maintenanceWindowStartTime;
private bool? _publiclyAccessible;
private List _securityGroups = new List();
private BrokerStorageType _storageType;
private List _subnetIds = new List();
private Dictionary _tags = new Dictionary();
private List _users = new List();
///
/// Gets and sets the property AuthenticationStrategy.
///
/// Optional. The authentication strategy used to secure the broker. The default is SIMPLE.
///
///
public AuthenticationStrategy AuthenticationStrategy
{
get { return this._authenticationStrategy; }
set { this._authenticationStrategy = value; }
}
// Check to see if AuthenticationStrategy property is set
internal bool IsSetAuthenticationStrategy()
{
return this._authenticationStrategy != null;
}
///
/// Gets and sets the property AutoMinorVersionUpgrade.
///
/// Enables automatic upgrades to new minor versions for brokers, as new versions are
/// released and supported by Amazon MQ. Automatic upgrades occur during the scheduled
/// maintenance window of the broker or after a manual broker reboot. Set to true by default,
/// if no value is specified.
///
///
[AWSProperty(Required=true)]
public bool AutoMinorVersionUpgrade
{
get { return this._autoMinorVersionUpgrade.GetValueOrDefault(); }
set { this._autoMinorVersionUpgrade = value; }
}
// Check to see if AutoMinorVersionUpgrade property is set
internal bool IsSetAutoMinorVersionUpgrade()
{
return this._autoMinorVersionUpgrade.HasValue;
}
///
/// Gets and sets the property BrokerName.
///
/// Required. The broker's name. This value must be unique in your Amazon Web Services
/// account, 1-50 characters long, must contain only letters, numbers, dashes, and underscores,
/// and must not contain white spaces, brackets, wildcard characters, or special characters.
///
///
///
/// Do not add personally identifiable information (PII) or other confidential or sensitive
/// information in broker names. Broker names are accessible to other Amazon Web Services
/// services, including CloudWatch Logs. Broker names are not intended to be used for
/// private or sensitive data.
///
///
///
[AWSProperty(Required=true)]
public string BrokerName
{
get { return this._brokerName; }
set { this._brokerName = value; }
}
// Check to see if BrokerName property is set
internal bool IsSetBrokerName()
{
return this._brokerName != null;
}
///
/// Gets and sets the property Configuration.
///
/// A list of information about the configuration.
///
///
public ConfigurationId Configuration
{
get { return this._configuration; }
set { this._configuration = value; }
}
// Check to see if Configuration property is set
internal bool IsSetConfiguration()
{
return this._configuration != null;
}
///
/// Gets and sets the property CreatorRequestId.
///
/// The unique ID that the requester receives for the created broker. Amazon MQ passes
/// your ID with the API action.
///
///
///
/// We recommend using a Universally Unique Identifier (UUID) for the creatorRequestId.
/// You may omit the creatorRequestId if your application doesn't require idempotency.
///
///
///
public string CreatorRequestId
{
get { return this._creatorRequestId; }
set { this._creatorRequestId = value; }
}
// Check to see if CreatorRequestId property is set
internal bool IsSetCreatorRequestId()
{
return this._creatorRequestId != null;
}
///
/// Gets and sets the property DataReplicationMode.
///
/// Defines whether this broker is a part of a data replication pair.
///
///
public DataReplicationMode DataReplicationMode
{
get { return this._dataReplicationMode; }
set { this._dataReplicationMode = value; }
}
// Check to see if DataReplicationMode property is set
internal bool IsSetDataReplicationMode()
{
return this._dataReplicationMode != null;
}
///
/// Gets and sets the property 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 dataReplicationMode is set to CRDR.
///
///
public string DataReplicationPrimaryBrokerArn
{
get { return this._dataReplicationPrimaryBrokerArn; }
set { this._dataReplicationPrimaryBrokerArn = value; }
}
// Check to see if DataReplicationPrimaryBrokerArn property is set
internal bool IsSetDataReplicationPrimaryBrokerArn()
{
return this._dataReplicationPrimaryBrokerArn != null;
}
///
/// Gets and sets the property DeploymentMode.
///
/// Required. The broker's deployment mode.
///
///
[AWSProperty(Required=true)]
public DeploymentMode DeploymentMode
{
get { return this._deploymentMode; }
set { this._deploymentMode = value; }
}
// Check to see if DeploymentMode property is set
internal bool IsSetDeploymentMode()
{
return this._deploymentMode != null;
}
///
/// Gets and sets the property EncryptionOptions.
///
/// Encryption options for the broker.
///
///
public EncryptionOptions EncryptionOptions
{
get { return this._encryptionOptions; }
set { this._encryptionOptions = value; }
}
// Check to see if EncryptionOptions property is set
internal bool IsSetEncryptionOptions()
{
return this._encryptionOptions != null;
}
///
/// Gets and sets the property EngineType.
///
/// Required. The type of broker engine. Currently, Amazon MQ supports ACTIVEMQ and RABBITMQ.
///
///
[AWSProperty(Required=true)]
public EngineType EngineType
{
get { return this._engineType; }
set { this._engineType = value; }
}
// Check to see if EngineType property is set
internal bool IsSetEngineType()
{
return this._engineType != null;
}
///
/// Gets and sets the property EngineVersion.
///
/// Required. The broker engine's version. For a list of supported engine versions, see
/// Supported
/// engines.
///
///
[AWSProperty(Required=true)]
public string EngineVersion
{
get { return this._engineVersion; }
set { this._engineVersion = value; }
}
// Check to see if EngineVersion property is set
internal bool IsSetEngineVersion()
{
return this._engineVersion != null;
}
///
/// Gets and sets the property HostInstanceType.
///
/// Required. The broker's instance type.
///
///
[AWSProperty(Required=true)]
public string HostInstanceType
{
get { return this._hostInstanceType; }
set { this._hostInstanceType = value; }
}
// Check to see if HostInstanceType property is set
internal bool IsSetHostInstanceType()
{
return this._hostInstanceType != null;
}
///
/// Gets and sets the property LdapServerMetadata.
///
/// Optional. The metadata of the LDAP server used to authenticate and authorize connections
/// to the broker. Does not apply to RabbitMQ brokers.
///
///
public LdapServerMetadataInput LdapServerMetadata
{
get { return this._ldapServerMetadata; }
set { this._ldapServerMetadata = value; }
}
// Check to see if LdapServerMetadata property is set
internal bool IsSetLdapServerMetadata()
{
return this._ldapServerMetadata != null;
}
///
/// Gets and sets the property Logs.
///
/// Enables Amazon CloudWatch logging for brokers.
///
///
public Logs Logs
{
get { return this._logs; }
set { this._logs = value; }
}
// Check to see if Logs property is set
internal bool IsSetLogs()
{
return this._logs != null;
}
///
/// Gets and sets the property MaintenanceWindowStartTime.
///
/// The parameters that determine the WeeklyStartTime.
///
///
public WeeklyStartTime MaintenanceWindowStartTime
{
get { return this._maintenanceWindowStartTime; }
set { this._maintenanceWindowStartTime = value; }
}
// Check to see if MaintenanceWindowStartTime property is set
internal bool IsSetMaintenanceWindowStartTime()
{
return this._maintenanceWindowStartTime != null;
}
///
/// Gets and sets the property PubliclyAccessible.
///
/// Enables connections from applications outside of the VPC that hosts the broker's subnets.
/// Set to false by default, if no value is provided.
///
///
[AWSProperty(Required=true)]
public bool PubliclyAccessible
{
get { return this._publiclyAccessible.GetValueOrDefault(); }
set { this._publiclyAccessible = value; }
}
// Check to see if PubliclyAccessible property is set
internal bool IsSetPubliclyAccessible()
{
return this._publiclyAccessible.HasValue;
}
///
/// Gets and sets the property SecurityGroups.
///
/// The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.
///
///
public List SecurityGroups
{
get { return this._securityGroups; }
set { this._securityGroups = value; }
}
// Check to see if SecurityGroups property is set
internal bool IsSetSecurityGroups()
{
return this._securityGroups != null && this._securityGroups.Count > 0;
}
///
/// Gets and sets the property StorageType.
///
/// The broker's storage type.
///
///
public BrokerStorageType StorageType
{
get { return this._storageType; }
set { this._storageType = value; }
}
// Check to see if StorageType property is set
internal bool IsSetStorageType()
{
return this._storageType != null;
}
///
/// Gets and sets the property SubnetIds.
///
/// The list of groups that define which subnets and IP ranges the broker can use from
/// different Availability Zones. If you specify more than one subnet, the subnets must
/// be in different Availability Zones. Amazon MQ will not be able to create VPC endpoints
/// for your broker with multiple subnets in the same Availability Zone. A SINGLE_INSTANCE
/// deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ
/// Amazon MQ for ActiveMQ deployment requires two subnets. A CLUSTER_MULTI_AZ Amazon
/// MQ for RabbitMQ deployment has no subnet requirements when deployed with public accessibility.
/// Deployment without public accessibility requires at least one subnet.
///
///
///
/// If you specify subnets in a shared
/// VPC for a RabbitMQ broker, the associated VPC to which the specified subnets belong
/// must be owned by your Amazon Web Services account. Amazon MQ will not be able to create
/// VPC endpoints in VPCs that are not owned by your Amazon Web Services account.
///
///
///
public List SubnetIds
{
get { return this._subnetIds; }
set { this._subnetIds = value; }
}
// Check to see if SubnetIds property is set
internal bool IsSetSubnetIds()
{
return this._subnetIds != null && this._subnetIds.Count > 0;
}
///
/// Gets and sets the property Tags.
///
/// Create tags when creating the broker.
///
///
public Dictionary 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;
}
///
/// Gets and sets the property Users.
///
/// The list of broker users (persons or applications) who can access queues and topics.
/// For Amazon MQ for RabbitMQ brokers, one and only one administrative user is accepted
/// and created when a broker is first provisioned. All subsequent broker users are created
/// by making RabbitMQ API calls directly to brokers or via the RabbitMQ web console.
///
///
[AWSProperty(Required=true)]
public List Users
{
get { return this._users; }
set { this._users = value; }
}
// Check to see if Users property is set
internal bool IsSetUsers()
{
return this._users != null && this._users.Count > 0;
}
}
}